BDR/HAProxy server pool management

tpaexec pool-disable-server およびpool-enable-server コマンドを使用すると、 BDR-Always-ON cluster内のPGDインスタンスをメンテナンスのためにHAProxyアクティブサーバープールから一時的に削除し、後で追加し直すことができます。

これらのコマンドは、デフォルトでrolling updatesと同じプロセスに従います。そのため、 pool-disable-server はPGDインスタンスに対するアクティブなトランザクションが完了するまで待機し、 pgbouncerは完了する前に新しい接続を別のインスタンスに転送します。アクティブなセッションが終了するのを待ちたくない場合は、 --nowait オプションを使用します。

インスタンスでpool-disable-server を実行した直後にpool-enable-server を実行すると、すべてのアクティブなトラフィックを別のインスタンスに移動する効果があります(本質的に、スイッチオーバー)。これにより、インスタンスの可用性を維持しながら、長時間実行されるVACUUMコマンドなどのオンラインメンテナンスタスクを実行できます。

同じhaproxy_backend_servers セットで構成されたHAProxyサーバーが複数ある場合、このコマンドは、指定されたサーバーを関連するすべてのプロキシのプールから並行して削除または追加します。

例

$ tpaexec pool-disable-server ~/clusters/clockwork orange # --nowait

#  HAProxy will no longer direct any traffic to the PGD instance named
#  orange, so you can perform maintenance on it (e.g., run `tpaexec
#  rehydrate`).

$ tpaexec pool-enable-server ~/clusters/clockwork orange

サーバープールからインスタンスを削除すると、プール内の他のインスタンスに障害が発生した場合でも、HAProxyはトラフィックをそのインスタンスに転送しません。メンテナンスアクティビティが終了したら、サーバーをアクティブプールに戻すことを忘れないでください。