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)

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'グローバルオプションの後にファイル名が続く場合、このファイルは削除され、すべての子のpidが1行に1つずつ入力されます(デーモンモードのみ)。このファイルは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プロキシのバージョンによっては、このページのhaproxy.comで説明されているように、HAプロキシ動的APIを検討することをお勧めします。https://www.haproxy.com/blog/dynamic-scaling-for-microservices-with -runtime-api /

HA-Proxy Dynamic APIはEnterpriseバージョンに付属しています。

通常の方法でオンザフライでサーバーを追加/削除する場合、またはプロジェクトでそのようなユースケースを示唆している場合は、HA-Proxy Dynamic APIを検討する必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.