Упругая балансировка нагрузки
Мне интересно, есть ли способ сделать упругую балансировку нагрузки. Я читал о HAProxy, но, похоже, мне нужно отключить HAProxy, чтобы перенастроить его для работы с большим или меньшим количеством компьютеров.
Чтобы сделать картину более ясной: у меня есть кластер веб-бэкендов (скажем, apache + mod_rails). Я могу отслеживать использование бэкэндов и очень быстро (порядка секунд) вывести другую машину с таким же содержимым, если трафик становится очень высоким. Тем не менее, я не знаю, как заставить HAProxy использовать дополнительные бэкэнды, не перезапуская его (вредит доступности). Есть ли способ использовать HAProxy или какой-либо другой балансировщик нагрузки для этого?
Я думал, что может быть способ иметь два балансировщика нагрузки для резервирования. Затем я могу отключить один, обновить его конфигурацию, вернуть его обратно, а затем снять другой. Но я не знаю, как это сделать.
2 ответа
Если вам нужно добавить новые серверы, вы должны перезапустить его, хотя это практически невозможно обнаружить, когда вы запускаете новый процесс с помощью "-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
Пока вы не изменяете конфигурацию, нет причин для перезапуска, даже если она остается незамеченной.
Если у вас есть бюджет для этого, то посмотрите на www.Zeus.com. В новой версии, выходящей через несколько недель, предлагается это из коробки, но вы также можете использовать существующую версию для мониторинга уровня обслуживания, а затем использовать язык сценариев и API для создания функциональности автоматической инициализации для ваших внутренних серверов.,
Бесплатные уроки доступны как лицензия разработчика, так что вы можете смоделировать то, что вы пытаетесь достичь, бесплатно.
Программное обеспечение Zeus также доступно у ряда провайдеров облачных вычислений, если вы хотите пойти по этому пути в какой-то момент.