Недавно я унаследовал небольшой веб-сервер на базе Linux с балансировкой нагрузки. К сожалению, он так и не был полностью введен в эксплуатацию, поэтому я работаю над этим.
Базовая установка:
Сервер базы данных находится внутри основного брандмауэра компании, а три других - в демилитаризованной зоне. Базовая балансировка нагрузки работает, но у меня были проблемы с сохранением соединений с LVS, а поскольку хранилище сеансов для PHP5 использует локальные файлы, мы теряем сеансы. Возможно, мне удастся заставить LVS сохранять сеансы, но поскольку соединения обычно выполняются с большим количеством NAT-клиентов за одним брандмауэром с иногда длительными задержками между запросами, я думаю, что это может быть проигрышным предложением. Вместо этого я решил переключиться на memcached для хранения сессий, так как это будет быстро настроить.
Мой вопрос в том, где должна находиться служба memcached? Я не могу добавить еще один сервер, поэтому он должен работать либо с балансировщиком нагрузки, либо с сервером базы данных. На данный момент я склоняюсь к тому, чтобы поставить его с сервером базы данных, поскольку он не имеет внешних подключений, но я обеспокоен тем, что они могут в некоторой степени конфликтовать. Есть ли лучший способ для такой ситуации? Или любое другое руководство?
На вашем месте я бы сэкономил память на сервере базы данных для базы данных. Для устойчивости я бы установил memcached на оба ваших веб-сервера. Одна небольшая проблема с использованием memcached для сеансов заключается в том, что перезапуск вашего memcached уничтожит ваши сеансы. Вместо этого вы можете посмотреть что-то вроде memcachedb, которое сохраняет объекты.
Я бы поставил на балансировщик нагрузки. По трем причинам: