クライアント側では、監視対象となるインスタンスセット(レプリケーションを構成する1つ以上のインスタンスからなる集合)に対して、1つの監視プロセスをユーザーがcm_ctlコマンドを使って起動する必要があります。この監視プロセスを「conmgrプロセス」と呼びます。管理者 (例えばLinuxのスーパーユーザー(root)) ではないユーザー、あるいは、Windowsの管理者権限を持っていないユーザーだけが起動できます。1つのconmgrプロセスに対して、1つの設定ファイル(conmgr.conf)を用意して、監視対象のインスタンスセットの情報と監視のためのパラメータを設定します。
サーバ側では、あらかじめwatchdogと呼ばれるPostgreSQLのEXTENSIONをインストールしておくことで、インスタンス起動時に、postmasterがバックグラウンドワーカーとして2つのプロセスを起動します。
1つは、生死監視のためのパケットをconmgrプロセスと送受信するプロセスです。このプロセスを「watchdogプロセス」と呼びます。もう1つは、watchdogプロセスがハートビートの失敗を検出したクライアントのSQL接続を強制終了するプロセスです。このプロセスを「terminatorプロセス」と呼びます。Connection Managerを使用していないSQL接続もまた終了されます。なぜなら、terminatorプロセスはIPアドレスをキーにして終了するからです。
注意
システム構成に関する注意事項
レプリケーションのために、レプリケーションの上流のインスタンスに接続するインスタンスと、その上流のインスタンスを生死監視の対象のインスタンスとみなす(conmgrプロセスの設定パラメータであるbackend_hostパラメータまたはbackend_hostaddrパラメータに指定する)conmgrプロセスとを同じサーバに設置しないことを推奨します。なぜなら、conmgrプロセスが正常または異常に停止すると、上流のインスタンスのterminatorプロセスは、レプリケーション接続も同様に強制終了させるためです。レプリケーション接続は強制的に切断されたとしても自動的に再接続するので、レプリケーションは問題なく継続されます。しかし、レプリケーションの負荷が高いときや、レプリケーションの遅延に敏感なシステムでは問題になるかもしれません。
なお、レプリケーション接続は、Connection Managerとは異なる方法による監視機能を持っているため、Connection Managerの生死監視の対象にする必要はありません。詳細については、PostgreSQL文書を参照してください。
以下にプロセスの関係を示します。
参照
cm_ctlコマンドについては、“リファレンス”の“cm_ctl”を参照してください。