Упругая балансировка нагрузки - PullRequest
4 голосов
/ 16 июля 2010

Мне интересно, есть ли способ сделать упругую балансировку нагрузки.Я читал о HAProxy, но, похоже, мне нужно отключить HAProxy, чтобы перенастроить его для работы с большим или меньшим количеством компьютеров.

Чтобы сделать картину более ясной: у меня есть кластер веб-бэкэндов (скажем, apache +mod_rails).Я могу отслеживать использование бэкэндов и очень быстро (порядка секунд) вывести другую машину с таким же содержимым, если трафик становится очень высоким.Тем не менее, я не знаю, как заставить HAProxy использовать дополнительные бэкэнды, не перезапуская его (вредит доступности).Есть ли способ использовать HAProxy или какой-либо другой балансировщик нагрузки для этого?

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

Ответы [ 2 ]

2 голосов
/ 17 июля 2010

Если вам нужно добавить новые серверы, вы должны перезапустить его, хотя это почти невозможно обнаружить, когда вы запускаете новый процесс с "-sf $ oldpid", так как новый и старый процесс работают в параллельны друг другу.

Если вам нужно временно отключить сервер, у вас есть несколько вариантов:

1) (предпочтительный вариант): включите «option http-disable-on-404» и управляйте ответом проверки вашего сервера для возврата 404. Это отключит новые подключения, но все же позволит существующим пользователям завершить сеанс. Затем вы соглашаетесь вернуть 500 и можете остановить процесс. Преимущество этого метода в том, что вам никогда не нужно прикасаться к LB, все контролируется с сервера, на котором вы работаете. Вот как это делают большинство разумных инфраструктур.

2) самый простой: с помощью socat подключитесь к сокету статистики и отключите сервер, на котором вы собираетесь работать:

printf "disable server 1\n" | socat stdio unix-connect:/var/state/haproxy.stat

затем включите его, как только закончите:

printf "enable server 1\n" | socat stdio unix-connect:/var/state/haproxy.stat

Пока вы не изменяете конфигурацию, нет причин для перезапуска, даже если она остается незамеченным.

0 голосов
/ 16 июля 2010

Если у вас есть бюджет для этого, то посмотрите на www.Zeus.com.В новой версии, выходящей через несколько недель, предлагается это из коробки, но вы также можете использовать существующую версию для обеспечения мониторинга уровня обслуживания, а затем использовать язык сценариев и API для создания функций автоматической инициализации для ваших внутренних серверов..

бесплатные пробные версии доступны как лицензия разработчика, так что вы можете бесплатно моделировать то, что вы пытаетесь получить.

Программное обеспечение Zeus также доступно от ряда облачных провайдеров, если вы хотитеидти по этому маршруту в какой-то момент.

...