Чи є спосіб додати більше сервера в сервер haproxy, не перезавантажуючи haproxy?


17

Ми хочемо мати змогу додати більше задніх серверів на вимогу. На даний момент я не бачу способу додати більше серверів, які складаються з резервного сервера до конфігураційного файлу, не перезавантажуючи haproxy.

Відповіді:


15

Я не перевіряв цей конкретний випадок використання, але haproxy підтримує "гаряче перезавантаження":

2.4.1) Hot reconfiguration
--------------------------
The '-st' and '-sf' command line options are used to inform previously running
processes that a configuration is being reloaded. They will receive the SIGTTOU
signal to ask them to temporarily stop listening to the ports so that the new
process can grab them. If anything wrong happens, the new process will send
them a SIGTTIN to tell them to re-listen to the ports and continue their normal
work. Otherwise, it will either ask them to finish (-sf) their work then softly
exit, or immediately terminate (-st), breaking existing sessions. A typical use
of this allows a configuration reload without service interruption :

 # haproxy -p /var/run/haproxy.pid -sf $(cat /var/run/haproxy.pid)

Якщо у вас є сценарій init для запуску і зупинки haproxy, він, ймовірно, підтримує reloadаргумент з такою функцією, як:

haproxy_reload()
{
    $HAPROXY -f "$CONFIG" -p $PIDFILE -D $EXTRAOPTS -sf $(cat $PIDFILE) \
        || return 2
    return 0
}

1
Я спробував це, але виявив, що він очищає лічильники. Можливо, я роблю щось не так, чи це очікувана поведінка?
Леандро Лопес

6

З посібника:

> 1.6) Допомога в управлінні процесом

Тепер Haproxy підтримує поняття pidfile. Якщо аргумент командного рядка '-p' або глобальна опція 'pidfile' дотримується імені файлу, цей файл буде видалено, а потім заповнений усіма підказками для дітей, по одному на рядок (лише в демонстраційному режимі). Цей файл НЕ в межах chroot, що дозволяє працювати з chroot, який читається тільки зараз. Він буде належати користувачеві, який розпочинає процес, і матиме дозволи 0644.

Приклад:

global
    daemon
    quiet
    nbproc  2
    pidfile /var/run/haproxy-private.pid

# to stop only those processes among others :
# kill $(</var/run/haproxy-private.pid)

# to reload a new configuration with minimal service impact and without
# breaking existing sessions :
# haproxy -f haproxy.cfg -p /var/run/haproxy-private.pid -sf $(</var/run/haproxy-private.pid)

1

Також, залежно від версії HA-proxy, ви можете розглянути HA-Proxy Dynamic API, як описано haproxy.com на цій сторінці: https://www.haproxy.com/blog/dynamic-scaling-for-microservices-with -виконання-api /

HA-Proxy Dynamic API поставляється з версією Enterprise.

Вам слід розглянути HA-Proxy Dynamic API, якщо ви хочете додавати / видаляти сервери на ходу як звичайну практику або якщо ваш проект передбачає такий випадок використання.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.