Ethsim2
(Ethan )
2026 年 1 月 19 日午前 10:09
52
上記のセットアップのHAProxy部分に直接関連する追加の注意点が1つあります。
HAProxyとDiscourseでは、Webコンテナを再構築する際(例:./launcher rebuild app1)、HAProxyがバックエンドにトラフィックを送信し続けている間に再起動するため、一時的に503 Service Unavailableの応答が返されるという一般的な動作があります。これはDiscourse自体のエラーではなく、バックエンドが再構築中に一時的に利用できなくなるために発生します。
推奨される回避策は、HAProxy管理ソケットを使用して次の操作を行うことです。
\t1.\t再構築の前にHAProxyでサーバーを無効にする、および
\t2.\t再構築が完了した後に再度有効にする
これにより、一時的な503エラーを防ぐことができます。
この動作と回避策の説明を文書化した既存のMetaディスカッションがあります。
I had created a test forum with two web_only containers, the mail-receiver container, Postgres and Redis on a Docker network. The two web containers nginx’s were fronted by HAProxy. They worked well, but i found on rebuilding one of the two web containers there was always a small amount of downtime where 503 was returned.
Fortunately, i found a mitigating workaround, but nothing perfect;
before rebuilding app1, run
echo "disable server be_discourse/app1" | socat stdio /run/haproxy/admin.sock …
ローリング再構築にHAProxyを使用している方は、そのスレッドが、実行手順書に管理ソケットコマンドが含まれている理由について役立つ背景情報を提供しています。