5.8. ヘルスチェック

Pgpool-IIはサーバネットワークの障害を検知するために、設定されたバックエンドに定期的に接続を試みます。 この障害チェックの手続きを「ヘルスチェック」と言います。 障害が検知されると、Pgpool-IIは設定に基づいてフェイルオーバや縮退運転を試みます。

注意

ヘルスチェックは各バックエンドノードへの余分の接続を1つ必要としますので、postgresql.confmax_connectionsもそれに応じて調整する必要があります。

health_check_timeout (integer)

TCP接続が時間内に成功せずにバックエンドのPostgreSQLへの接続を諦めるまでのタイムアウト値を秒単位で指定します。

このパラメータは、ネットワークケーブルが抜けた際などにヘルスチェックが長時間待たされるのを防止します。 デフォルトは20秒です。0を指定するとタイムアウト処理をしません (TCP/IP のタイムアウトまで待ちます)。

このパラメータはPgpool-IIの設定を再読み込みすることで変更可能です。

health_check_period (integer)

ヘルスチェックの間隔を秒単位で指定します。 デフォルトは0で、これはヘルスチェックが無効であることを意味します。

このパラメータはPgpool-IIの設定を再読み込みすることで変更可能です。

health_check_user (string)

ヘルスチェックを行うPostgreSQLユーザ名を指定します。 同じユーザ名が全てのPostgreSQLバックエンドに存在していなければなりません。 さもないと、ヘルスチェックがエラーとなります。

このパラメータはPgpool-IIの設定を再読み込みすることで変更可能です。

health_check_password (string)

health_check_userで設定したヘルスチェックを行うPostgreSQLユーザ名のパスワードを指定します。 ユーザとパスワードは全てのPostgreSQLバックエンドで同じである必要があります。 さもないと、ヘルスチェックがエラーとなります。

このパラメータはPgpool-IIの設定を再読み込みすることで変更可能です。

health_check_database (string)

ヘルスチェックを行う対象のPostgreSQLデータベース名を指定します。 デフォルトは''で、この場合は最初にpostgresデータベースが試され、その後でtemplate1データベースが試されます。 これはPgpool-II V3.4以前の挙動と同じです。

このパラメータはPgpool-IIの設定を再読み込みすることで変更可能です。

health_check_max_retries (integer)

ヘルスチェックに失敗したときに、諦めてフェイルオーバを始める前にリトライする最大回数を指定します。

ティップ: この設定は動作にむらのあるネットワーク環境において、マスターノードが正常であるにも関わらず、たまにヘルスチェックが失敗することが予想される場合に有用です。

ティップ: health_check_max_retreisを有効にする場合は、fail_over_on_backend_errorを無効にするのが望ましいです。

デフォルト値は0で、この場合はリトライをしません。

このパラメータはPgpool-IIの設定を再読み込みすることで変更可能です。

health_check_retry_delay (integer)

ヘルスチェックのリトライ間の時間間隔を秒単位で指定します(health_check_max_retries > 0でなければ有効になりません)。 0を指定すると、待ち時間はなくリトライは直ちに行われます。

このパラメータはPgpool-IIの設定を再読み込みすることで変更可能です。

connect_timeout (integer)

connect()システムコールを使ったバックエンドへの接続を諦めるまでの時間をミリ秒単位で指定します。 デフォルトは10000ミリ秒(10秒)です。 不安定なネットワークを使う場合、この値を大きくすると良いでしょう。 0を指定すると、タイムアウトしません。

注意: connect_timeoutの値はヘルスチェックだけではなく通常の接続プールを生成するときにも使われます。

このパラメータはPgpool-IIの設定を再読み込みすることで変更可能です。