Программно добавить узлы в балансировщик нагрузки, как Haproxy? - PullRequest
12 голосов
/ 15 февраля 2012

Я очень уверен, что эта проблема была решена, но я нигде не могу найти информацию об этом ...

Как системные администраторы программно добавляют новый узел в существующий и работающий балансировщик нагрузки? Допустим, у меня есть балансировщик нагрузки, работающий и уже балансирующий, скажем, мой API-сервер между двумя экземплярами EC2, и внезапно наблюдается скачок трафика, и мне нужен третий узел в балансировщике нагрузки, но я сплю ... Было бы замечательно, если бы что-то отслеживало, вероятно, использование ОЗУ и некоторые ключевые показатели производительности, которые сообщают мне, когда мне нужно иметь другой узел, и даже лучше, если бы он мог добавить новый узел только к балансировщику нагрузки ...

Я уверен, что это возможно и даже тривиально сделать с node-http-proxy и , распространяющими , но я хотел бы знать, возможно ли это сделать с HAproxy и / или Nginx ... Я знаю, что эластичная балансировка нагрузки Amazon - это, вероятно, моя лучшая ставка, но я хочу сделать это самостоятельно (я хочу порождать экземпляры из rackspace, EC2, Joyent и, возможно, других, как это удобно).

Еще раз, порождение узла - это легко, я хотел бы знать, как добавить его в haproxy.cfg или что-то подобное с Nginx без необходимости перезагружать весь прокси и делать это программно. Bash-скриптинг - моя лучшая ставка для этого, но он все равно должен перезагрузить весь прокси, что плохо, потому что он теряет соединения ...

Ответы [ 3 ]

8 голосов
/ 05 марта 2012

У вас есть несколько вопросов. Для добавления узлов в haproxy без перезапуска:

Что я делаю для решения аналогичной проблемы, это предварительно заполняю файл конфигурации именами серверов ... например web01, web02 ... web20, даже если у меня только 5 веб-серверов одновременно. Затем в моем файле hosts я сопоставляю их с реальными ips веб-серверов.

Чтобы добавить новый сервер, просто создайте для него запись в файле hosts, и он начнет проходить проверки работоспособности и будет добавлен.

Для автоматизированной оркестровки это действительно зависит от вашей среды, и вам, вероятно, придется написать что-то нестандартное, соответствующее вашим потребностям. Существуют платные решения (на ум приходит Scalr) для управления оркестровкой.

7 голосов
/ 14 марта 2014

Что я делаю: в моем бэкэнд-разделе есть строка в haproxy.cfg, которая гласит:

# new webservers here

И с помощью сценария sed я обновляю haproxy.cfg что-то вроде:

  sed -i -e "/new webservers here/a\    server $ip_address $ip_address:12080 check maxconn 28 weight 100"

А затем перезагрузите haproxy. Работает прозрачно.

0 голосов
/ 03 мая 2018

HAProxy имеет Runtime API, который позволяет вам делать это динамически.

Пожалуйста, ознакомьтесь с официальной документацией: Динамическая конфигурация HAProxy Runtime API

...