BDR/HAProxy server pool management

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

これらのコマンドはデフォルトでrolling updatesと同じプロセスに従います。そのため、 pool-disable-server はBDRインスタンスに対するアクティブなトランザクションが完了するまで待機し、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 BDR instance named
#  orange, so you can perform maintenance on it (e.g., run `tpaexec
#  rehydrate`).

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

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