ТАК Я нахожусь в процессе настройки конфигурации балансировки нагрузки для нашего веб-приложения с nginx
OK
Скорее всего, я бы остановился на липких сессиях, чтобы избежать проблем сессий при настройке балансировки нагрузки
То есть вы не собираетесь с балансировкой нагрузки, вы смотрите на разделение нагрузки?
Не.
Правильно выполнено, балансировка нагрузки означает, что ваши шансы на потерю обслуживания экспоненциально уменьшаются на количество узлов. Скажем, вероятность отдельного узла составляет 0,05 (то есть время безотказной работы 95%), тогда вероятность потери обоих узлов равна 0,05 x 0,05 = 0,0025 (время безотказной работы 99,75%). OTOH, если вы разделите нагрузку, как вы предлагаете, тогда вы потеряете 1 / N вашей доступности, когда узел выйдет из строя, и вероятность потери узла составляет N * 0,05, поэтому вы получаете 96,75% доступности только с 2 узлами.
Что касается развертываний на нескольких узлах, то, как я это делал, было:
1) взять узел, назвать его node1, офлайн
2) применить релиз к node1
3) убедитесь, что развертывание прошло успешно
4) вернуть узел 1 в оперативный режим
5) перевести узел 2 в автономный режим
6) rsync от узла 1 до узла 2
7) снова запустите rsync, чтобы убедиться, что он завершен
8) вернуть узел 2 в оперативный режим
затем повторите 5-8 для каждого дополнительного узла
Как лучше всего синхронизировать эти пользовательские файлы на всем веб-сервере?
Метод, описанный выше, предназначен для развертываний - для данных, отправленных пользователем, вам необходимо распространять контент во время его отправки. Я использую собственные сценарии для этого. В случае, когда узел находится в автономном режиме, когда происходит обновление, его можно повторно синхронизировать (шаги 6 + 7), прежде чем снова сделать его доступным.
Сценарии, которые я использовал, отправили запрос узлу с просьбой скопировать его от отправителя запроса, чтобы он мог работать с короткими тайм-аутами и гарантировать доступность исходного содержимого.
С точки зрения реализации балансировки нагрузки - хотя вы можете потратить много денег на приобретение сложного оборудования, я еще не видел ничего, что работает лучше, чем циклический перебор по многим причинам - не в последнюю очередь, что аварийное переключение реализовано прозрачно в клиент.
НТН
С