Выравнивание нагрузки для рабочего серверного процесса с сессиями

Я разрабатываю серверное приложение, которое принимает входящие соединения и работает с клиентскими приложениями. Клиент хочет иметь две работы машин: в случае, если каждый идет офлайн, второе создаст резервную копию его. Администратор машины (с кем я почти не взаимодействую) предложил решение выравнивания нагрузки: будет две идентичных машины сервера, каждый выполняющий серверный процесс независимо, и также будет машина подсистемы балансировки нагрузки, которая рассеет входящие соединения между двумя рабочими машинами.

Я должен отметить здесь, что я не очень знаком с темой. Я думаю, то выравнивание нагрузки имеет смысл с веб-сайтом (который является также частью установки, что мой сервер является частью), но мой сервер не основан на запросе: это поддерживает сессии и связанные данные в его памяти "кучи" и обменивается сессией - и определенные для состояния данные с клиентами (кто остается на связи все время). Таким образом, если одна машина понижается, и стабилизатор переключает клиент на другую машину, что другая машина не сможет продолжить работать с тем клиентом без недостающих данных во время выполнения.

Но администратор сказал мне, что возможно иметь синхронизацию между машинами, таким образом, что два процесса, работающие на двух различных машинах, будут так или иначе иметь те же данные без меня имеющий необходимость реализовать что-либо. Это, кажется, захватывающая технология, и я хотел бы познакомиться с нею, но я не мог найти, какие пакеты могут сделать это или даже как ту технологию называют. Я встречался со ссылками на Linux HA несколько раз, но я не уверен, что это - то, что я ищу.

ОС основана на Linux, но я больше интересуюсь общими понятиями вместо того, чтобы установить что-то сам, таким образом, пакеты или руководства для любой системы представляли бы интерес.

0
задан 1 September 2014 в 18:07
3 ответа

Здесь нет "волшебной пули". Вы должны спроектировать ваше приложение таким образом, чтобы не было локального состояния приложения, которое не синхронизируется где-либо еще.

Ищите что-нибудь вроде memcached или redis (размещенного на собственном сервере) для поддержания состояния сеанса, вместо того, для чего вы используете локальную кучу памяти.

Что касается того, что "администратор" говорит о синхронизации, единственное, что близко к этому, я видел - это режим VMware's Fault Tolerant (FT). При этом "горячий ведомый" целой виртуальной машины хранится на отдельном физическом ящике. Однако, есть много ограничений в этой настройке, и это не решение по балансировке нагрузки, так как только одна из копий ВМ "активна" в любой момент времени

.
0
ответ дан 5 December 2019 в 13:30

Если вы смотрите на нестандартные решения, вам следует обратить внимание на использование Amazon Web Services (AWS). Их среда Elastic Beanstalk - отличный способ разворачивать ваш код одновременно на нескольких машинах за настраиваемым балансировщиком нагрузки (http://aws.amazon.com/elasticbeanstalk/).

Или посмотрите на NGINX или Apache с несколькими восходящими серверами.

.
0
ответ дан 5 December 2019 в 13:30

Проблема и идея не на 100% понятна ни администратору, ни вам.
Есть два решения: "Высокая доступность" и "Балансировка нагрузки"
. Эти два решения различны по своей природе!
В случае размещения двух серверов приложений за решением LoadBalancing у вас все равно останется одна точка отказа для серверов приложений - балансировщик нагрузки.
. В случае, если вам нужно решение для "Высокой доступности", вам нужно работать с двумя машинами, в то время как одна из них сидит там для решения проблемы с другой.
. Для HA можно использовать базовый кардиостимулятор, который позволяет одному серверу определить, вверх или вниз ли другой сервер, основываясь на всевозможных опциях
. Вы должны знать о STONITH, который дает вам возможность предотвратить сбой одного сервера на другом в паре случаев
. Взгляни: Кардиостимулятор

Также не забудьте, что есть возможность сделать все это вместе, используя несколько балансировщиков нагрузки и несколько серверов приложений в ячеистой структуре.

0
ответ дан 5 December 2019 в 13:30

Теги

Похожие вопросы