ページの先頭行へ戻る
Enterprise Postgres 15 クラスタ運用ガイド(データベース多重化編)

2.4.1 プライマリサーバのデータベース多重化運用のセットアップ

プライマリサーバのデータベース多重化運用のセットアップについて、説明します。

データベース多重化機能では、動作に必要なファイルをMirroring Controller管理ディレクトリで管理します。

1つのインスタンスに対して1つのMirroring Controller管理ディレクトリが対応します。

注意

  • Mirroring Controller管理ディレクトリは、Fujitsu Enterprise Postgresが管理するディレクトリとともに誤って削除されたり、Fujitsu Enterprise Postgresのリカバリとともに古いファイルに戻されたりすることがないようにFujitsu Enterprise Postgresが管理するディレクトリ配下に配置しないでください。

参照

  • Fujitsu Enterprise Postgresが管理するディレクトリの詳細は、“導入ガイド(サーバ編)”の“セットアップ”の“資源配置用のディレクトリの準備”を参照してください。

  • mc_ctlコマンドの詳細は、“リファレンス”を参照してください。

  • セットアップで編集する各パラメータの詳細については、“付録A パラメータ”を参照してください。

以下の手順で行います。

  1. プライマリサーバにログインします。

  2. データベース多重化機能で必要なファイルを格納するMirroring Controller管理ディレクトリを作成します。

    Mirroring Controller管理ディレクトリは、ASCII文字で指定してください。

    また、インスタンス管理者ユーザーに対する書き込み権限を付与してください。

  3. Mirroring Controllerのプロセス間で連携するネットワークの構成をネットワーク定義ファイル(network.confファイル)に定義します。

    サンプルファイルをもとにして、Mirroring Controller管理ディレクトリにnetwork.confファイルを作成します。network.confファイルには、インスタンス管理者ユーザーにのみ読み込み権限と書き込み権限を設定してください。

    インスタンス管理者ユーザー以外にアクセス権限が与えられていた場合には、mc_ctlコマンドは動作しません。これにより、インスタンス管理者ユーザー以外がMirroring Controllerを操作することを防止します。

    サンプルファイルのパス
    /インストールディレクトリ/share/mc_network.conf.sample

    network.confファイルには、プライマリサーバとスタンバイサーバのIPアドレスまたはホスト名、およびポート番号を指定して、Mirroring Controllerのプロセス同士およびMirroring ControllerプロセスとMirroring Controller裁定プロセスが連携するためのネットワークの構成を定義します。

    詳細は、“A.3 ネットワーク定義ファイル”を参照してください。

    以下に定義例を示します。

    ハートビート異常検出時の動作の設定値によって、定義内容が異なります。

    裁定サーバによる自動縮退を選択した場合
    例)
    プライマリサーバ、スタンバイサーバのサーバ識別子に“server1”および“server2”、ポート番号に“27540”“27541”、また、Mirroring Controller裁定プロセスのサーバ識別子に“arbiter”、ポート番号に“27541”を指定している場合の例を以下に示します。
    server1 192.0.2.100,192.0.3.100 27540,27541 server
    server2 192.0.2.110,192.0.3.110 27540,27541 server
    arbiter 192.0.3.120 27541 arbiter

    ポート番号は、プライマリサーバ、スタンバイサーバ、裁定サーバのどのサーバにおいても、他のソフトウェアと重ならないように設定してください。また、裁定サーバを利用して自動縮退を行う運用の場合は、裁定用ネットワークが管理用ネットワークの回線障害の影響を受けないネットワークを利用してください。

    サーバ種別が“server”の場合、IPアドレスまたはホスト名、およびポート番号を以下の順序で指定する必要があります。

    • 管理用ネットワークとして使用するデータベースサーバ側のIPアドレスまたはホスト名

    • 裁定用ネットワークとして使用するデータベースサーバ側のIPアドレスまたはホスト名

    • 管理用ネットワークとして使用するデータベースサーバ側のポート番号

    • 裁定用ネットワークとして使用するデータベースサーバ側のポート番号

    サーバ種別が“arbiter”の場合、裁定サーバのarbitration.confファイルのmy_addressパラメータで指定したIPアドレスまたはホスト名とportパラメータに指定したポート番号を指定する必要があります。

    裁定サーバによる自動縮退以外を選択した場合
    例)
    サーバ識別子に“server1”および“server2”、ポート番号に“27540”を指定している場合の例を以下に示します。
    server1 192.0.2.100 27540
    server2 192.0.2.110 27540

    WebAdminのように/etc/servicesファイルを用いて空きポート番号を検索して使用するプログラムが存在するため、プライマリサーバ側のポート番号を/etc/servicesファイルに登録しておいてください。

    なお、サービス名は、任意の名前で登録してください。

  4. Mirroring Controllerの監視および制御に関する情報をサーバ識別子.confファイルに定義します。

    サンプルファイルをもとにして、Mirroring Controller管理ディレクトリにサーバ識別子.confファイルを作成します。サーバ識別子.confファイルには、インスタンス管理者ユーザーにのみ読み込み権限と書き込み権限を設定してください。インスタンス管理者ユーザー以外にアクセス権限が与えられていた場合には、mc_ctlコマンドは動作しません。

    サーバ識別子.confファイルのファイル名には、手順3でnetwork.confファイルに指定したサーバ識別子名を使用してください。

    サンプルファイルのパス
    /インストールディレクトリ/share/mc_server.conf.sample

    サーバ識別子.confファイルには、以下のパラメータを設定します。

    表2.3 設定するパラメータ

    パラメータ

    指定内容

    備考

    db_instance

    'データ格納先ディレクトリ'

    半角シングルクォートで囲んで、ASCII文字で指定してください。

    db_instance_password

    'インスタンス管理者ユーザーのユーザー名に対応するパスワード'

    Mirroring Controllerからデータベースのインスタンスへの接続設定において、パスワード認証を行う場合に指定してください。

    半角シングルクォートで囲んで、ASCII文字で指定してください。

    本パラメータの指定値に'または\を含む場合は、それぞれ\'および\\と記載してください。

    enable_hash_in_password

    onまたはoff

    db_instance_passwordの指定値に含まれている#をパスワードの文字とみなす場合はonを指定し、コメントとみなす場合はoffを指定します。

    デフォルトはoffです。

    syslog_ident

    'プログラム名'

    システムログ内のMirroring Controllerメッセージを特定するために使用するプログラム名を半角シングルクォートで囲んで、半角空白以外のASCII文字で指定してください。postgresql.confファイルのパラメータと同じプログラム名にすることで、Mirroring Controllerの出力内容を透過的に参照できるため、ログの参照が容易になります。

    remote_call_timeout

    管理通信のタイムアウト

    Mirroring Controllerのエージェントプロセスがサーバ間で行う通信のタイムアウト値(ミリ秒)を指定します。OSのTCP接続のタイムアウト時間よりも短くなるように指定してください。
    また、Mirroring Controller裁定プロセスによる裁定処理、フェンシングコマンド、状態遷移コマンドを利用する場合は、それぞれのタイムアウト値の合計より大きな値を指定してください。

    heartbeat_error_action

    OS/サーバの生死監視においてハートビート異常を検出した場合の動作

    arbitration:裁定サーバを利用して自動縮退を行います。

    command:縮退の判断を行うユーザー出口を呼び出して自動縮退を行います。

    message:メッセージを通知します。

    fallback:無条件に自動縮退を行います。

    プライマリサーバおよびスタンバイサーバで同じ設定にしてください。

    heartbeat_interval

    OS/サーバの生死監視における異常監視の間隔時間(ミリ秒数)

    OS/サーバを監視するため、heartbeat_intervalに指定した間隔(ミリ秒)で異常の監視を行います。

    本パラメータの設定は、データベースプロセスの生死監視、ストリーミングレプリケーションの異常監視およびディスク異常監視のデフォルト値として使用されます。

    監視時間に関する設定には、異常監視による縮退を最適化するために考慮することがあります。詳細は、“2.11.4.1 OS/サーバの異常監視のチューニング”を参照してください。

    heartbeat_timeout

    OS/サーバの生死監視における異常監視のタイムアウト時間(秒数)

    heartbeat_retry

    OS/サーバの生死監視における異常監視のリトライ回数(回数)

    fencing_command

    'フェンシングコマンドのファイルパス名'

    [設定例]

    fencing_command = '/mc/fencing_dir/execute_fencing.sh'

    異常と判断したデータベースサーバをフェンシングするフェンシングコマンドのパス名を指定します。

    ファイルパス名は絶対パスで指定し、半角シングルクォートで囲んでください。

    本パラメータは、heartbeat_error_actionにcommandを設定した場合は、指定必須です。

    1024バイト未満の長さで指定してください。

    fencing_command_timeout

    フェンシングコマンドのタイムアウト時間(秒数)

    指定された秒数以上のあいだ、コマンドの応答がない場合は、フェンシングに失敗したと判断し、フェンシングコマンドの実行プロセスに対して、シグナル(SIGTERM)を送信します。

    1~2147483647の間の数値で指定してください。

    デフォルトは20秒です。

    arbitration_timeout

    Mirroring Controller裁定プロセスでの裁定処理のタイムアウト時間(秒数)

    OS/サーバの生死監視時間 + 裁定定義ファイルのfencing_command_timeout以上の値を指定する必要があります。

    指定された秒数以上のあいだ、応答がない場合には、プライマリサーバの切り替えやスタンバイサーバの切り離しは行われません。そのため、手動での縮退操作を行ってください。

    1~2147483647の間の数値で指定してください。

    本パラメータは、裁定サーバを利用しない運用では設定不要です。

    arbitration_command

    '裁定コマンドのファイルパス'

    [設定例]

    arbitration_command = '/mc/arbitration_dir/execute_arbitration_command.sh'

    OS/サーバの生死監視において異常を検出した場合に実行する裁定コマンドのファイルパス名を指定します。

    ファイルパス名は絶対パスで指定し、半角シングルクォートで囲んでください。

    本パラメータは、heartbeat_error_actionにcommandを設定した場合は、指定必須です。

    1024バイト未満の長さで指定してください。

    arbitration_command_timeout

    裁定コマンドのタイムアウト時間(秒数)

    指定された秒数以上のあいだ、裁定コマンドの応答がない場合は、裁定コマンドの実行に失敗したと判断し、裁定コマンドの実行プロセスに対して、シグナル(SIGTERM)を送信します。

    1~2147483647の間の数値で指定してください。

    本パラメータは、heartbeat_error_actionにcommandを設定した場合のみ、指定可能です。

    参考

    各パラメータの詳細およびその他のパラメータについては、“A.4.1 データベースサーバのサーバ定義ファイル”を参照してください。