У меня большой форум phpbb и 2 сервера. Хотите распределить HTTP-нагрузку с 1 веб-сервера на 2 веб-сервера. Уже делал это раньше, но возникла проблема.
На обоих серверах (1 и 2) был lighttpd. Я использовал различные балансировщики нагрузки, когда пользователь подключается к серверу номер 1, затем балансировщик решает, должен ли он подключаться к lighttpd на сервере 1 или 2.
Все было хорошо, за исключением того, что балансировка нагрузки была циклической (случайной), и когда пользователь входил на форум (какой-то сеанс), а затем на следующей странице был перенаправлен на второй сервер, у него не было своего сеанса! Поэтому он должен войти в систему снова, но тогда кто знает, куда он будет перенаправлен в следующий раз.
Решением этого является создание сеансов, доступных с обоих серверов. Тогда независимо от того, с какого пользователя ligghtpd будет доступ, у него не будет проблем (я думаю). Где именно проблема, я думаю, что его файлы сеанса в tmp от lighttpd, потому что сеансы от phpbb находятся в базе данных, к которой могут получить доступ оба сервера. Еще одна вещь может быть cookie из сеанса phpbb, записывающего туда IP-адрес сервера, который использовался для входа в систему и вызывающий проблемы, если был изменен IP-адрес, ранее записанный в cookie (второй веб-сервер).
Дополнительная проблема заключалась в том, что когда пользователь был перенаправлен на веб-сервер 2, он получал IP-адрес сервера, который перенаправлял его (а не его собственный IP-адрес). Это было похоже на то, что его туннелировали с сервера 1 на сервер 2. Не перенаправляли напрямую на сервер 2, как следовало бы.
Обе эти проблемы нуждаются в помощи, что мне нужно сделать, чтобы пользователь мог без проблем использовать мой веб-сайт с двух разных веб-серверов (в данном примере - lighttpd).
Одно слово: haproxy - он предоставит постоянные соединения на основе хэша ip и устранит все ваши проблемы, включая IP-адрес туннелирования.
Раньше я решал эту проблему одним из двух способов. Способ №1 включал установку на компьютере пользователя файла cookie со всей необходимой информацией о сеансе. Способ №2 - использовать балансировщик нагрузки, который будет выполнять постоянные соединения - это означает, что когда соединение приходит от пользователя, пока он активно использует ваш сайт, он останется на том сервере, на котором LB изначально разместил их.
Или просто настройте NFS-сервер для общего каталога сеанса, а затем смонтируйте его на обоих веб-серверах.