データノードでは、中央管理ノードに接続するためのconmgrプロセスを1つセットアップします。
“Connection Manager 利用ガイド”の“conmgrプロセスのためのディレクトリ作成”を参照し、conmgrプロセスのためのディレクトリを作成してください。
“Connection Manager 利用ガイド”の“conmgr.confの設定”を参照し、conmgr.confを設定してください。backend_host*、backend_hostaddr*、backend_port*、watchdog_port*は、中央管理ノードの値を設定してください。
“リファレンス”の“cm_ctl”を参照し、conmgrプロセスの起動を実施してください。
“クラスタ運用ガイド(データベース多重化編)”の“プライマリサーバのデータベース多重化運用のセットアップ”を参照し、データノードのプライマリサーバのデータベース多重化運用のセットアップを実施してください。
network.confの設定を実施する際には、“裁定サーバによる自動縮退を選択した場合”を選択してください。
サーバ識別子.confには、以下のパラメータの設定を追加してください。
パラメータ | 設定値 | 説明 |
---|---|---|
node_role | data | ノードの識別子。中央管理ノードの場合、coordinator、データノードの場合、dataを指定します。それ以外の値は無効です。デフォルト値はNULLで無効です。 |
node_name | データノードのノード名 | 自ノードのノード名を設定します。CREATE PGXNODEで指定したサーバ名を設定してください。 |
internode_address | ノード間ネットワークのアドレス | ネットワーク監視時に使用するノード間ネットワークアドレスを半角シングルクォートで囲んで指定します。 |
conmgr_port | conmgrプロセスが動作するポート番号 | Mirroring Controllerプロセスが連携するconmgrプロセスのポート番号を指定します。conmgr.confに指定したportと同じ値を設定してください。スケールアウト構成でない場合、無効です。 |
conmgr_check_interval | ノード間ネットワークの生死監視の時間間隔(ms) | conmgrプロセスがノード間の生死監視を依頼する間隔を指定します。スケールアウト構成ではない場合はこの値は無視されます。デフォルト値はheartbeat_intervalの値です。 |
conmgr_check_timeout | ノード間ネットワーク生死監視のタイムアウト時間(s) | conmgrプロセスからの応答を待つ最大待機時間を指定します。指定された秒数の間応答がない場合に、ノード間ネットワークに障害が発生したと判断します。デフォルト値はheartbeat_timeoutの値です。 |
conmgr_check_retry | ノード間ネットワークの生死監視のリトライ回数 | 異常と判断するまでのリトライ回数を指定します。ここで指定した回数+1回連続で異常を検知した場合に、ノード間ネットワークが不通であると判断し、データノードは裁定を依頼します。中央管理ノードの場合、裁定を依頼しません。デフォルト値はheartbeat_retryの値です。 |
また、postgresql.confにおいて、synchronous_standby_namesについては、コメントアウトした状態で設定してください。さもなければ、プライマリサーバの初回起動処理において、処理が進まなくなる可能性があります。また、コメントアウトしたsynchronous_standby_namesの値については、スタンバイサーバでのMirroring Controllerの起動により、コメントアウトが外れた状態となるため、期待した同期モードで動作するようになります。
注意
Scale out Controller構成の注意点
Scaleout Controller構成で運用する場合、Connection Managerがノード間のネットワークを監視します。このため、Connection Managerの接続先インスタンスを指定するbackend_hostaddrパラメータには、接続先ノードのinternode_addressパラメータと同じ値を指定してください。
“クラスタ運用ガイド(データベース多重化編)”の“プライマリサーバのインスタンスの作成・設定・登録”を参照し、データノードのプライマリサーバのインスタンスの作成・設定・登録を実施してください。
データノードのプライマリサーバでは、以下の相違点があります。
initdbコマンドのオプション
データノードでは、--datanodeオプションと--coord_conninfoオプションを指定してください。--datanodeには、“3.6 データノードの登録”でCREATE PGXNODE文に指定したデータノード名を指定してください。中央管理ノードとの接続には、“3.7.1.1 conmgrプロセスのセットアップ”でセットアップしたConnection Managerを利用します。そのため、--coord_conninfoのhostにはlocalhost、portにはconmgrプロセスのポート番号を指定してください。また、プライマリサーバのデータベースに接続できるように、target_session_attrsにはread-writeを指定してください。
例)
initdb -D /database/inst1 --datanode=datanode1 --coord_conninfo='host=localhost port=27546 target_session_attrs=read-write' --waldir=/transaction/inst1 --lc-collate="C" --lc-ctype="C" --encoding=UTF8
また、データベーススーパーユーザーのパスワードを指定した場合、パスワードの値が、データディレクトリ配下のscaleout_passfileファイルに書き込まれます。このファイルはこのデータノードの初回起動時の処理のために利用され、処理の完了後に削除される一時的なファイルです。これが許容できない場合は、データベーススーパーユーザーの認証について、パスワード認証ではなく、SSL認証などを利用してください。
pg_hba.confの設定
中央管理ノードからの接続を認証するために、pg_hba.confファイルにエントリを追加します。中央管理ノードからの接続は、以下の場合に使用されます。
中央管理ノードで実行されたDDLやDMLに応じて必要な処理をデータノードで実施
DDLやDMLを実行したユーザーで、当該データベースに接続します。
中央管理ノードのすべてのサーバがプライマリサーバにもスタンバイサーバにもなることができるので、中央管理ノードのすべてのサーバのアドレスについて、エントリを追加してください。
例)
# TYPE DATABASE USER ADDRESS METHOD host all initdbのユーザー 中央管理ノードのアドレス1 認証方式 host all initdbのユーザー 中央管理ノードのアドレス2 認証方式
postgresql.confの設定
“Connection Manager 利用ガイド”の“postgresql.confの設定”を参照し、watchdogプロセスのための設定を行ってください。
また、以下のパラメータの設定を追加してください。
パラメータ | 設定値 | 説明 |
---|---|---|
max_replication_slots | レプリケーションテーブルを利用する際に必要となるレプリケーションスロット数を加算 | レプリケーションテーブルを定義するデータベース数より大きい値を加算する必要があります。設定した値が必要数よりも小さい場合には、ただちにエラーになります。 |
max_logical_replication_workers | レプリケーションテーブルを利用する際に必要となるレプリケーションワーカー数を加算 | max_replication_slots以上の値を設定する必要があります。これに加えて、レプリケーションテーブル作成時に初期データを同期する際に、別のワーカーが必要になります。同時に定義するレプリケーションテーブル数を加算してください。初期データ同期完了後は、このワーカーは不要となるため、設定値を減算しても構いません。設定した値が必要数よりも小さい場合は、WARNINGが出力され、初期データ同期やレプリケーションが実行されません。 |
max_worker_processes | max_logical_replication_workersの分だけ加算 | レプリケーションワーカーとそのランチャーを収容するために、(max_logical_replication_workers+1)より大きい値を設定する必要があります。 |
max_sync_workers_per_subscription | 初期データ同期の並列度 | 初期データ同期を並列に実行したい場合は、同期するテーブル数を設定してください。 |
max_prepared_transactions | 少なくとも中央管理ノードのmax_connections(デフォルトでは100)と同じ大きさである必要があります。 | 中央管理ノードからデータノードを更新するトランザクションでは二相コミットを使用するため、値を設定する必要があります。 |
max_connections | 中央管理ノードのmax_connectionsとmax_worker_processesを加算 | 中央管理ノードからデータノードにアクセスするトランザクションやワーカーも接続を使用するため、その値を加算する必要があります。 |
SSL接続の設定
SSLを使用した通信データの暗号化を行う場合、“3.8 スケールアウト環境におけるSSL(Secure Sockets Layer)による安全な通信の構成”を参考に設定してください。また、インスタンスの作成時に、SSLの設定を行うと、ユーザーマッピングにSSL証明書の格納先が設定されます。詳細は、“5.5.1 ユーザーマッピングの自動作成”を参照してください。
“クラスタ運用ガイド(データベース多重化編)”の“データベースサーバのユーザー出口の作成”を参照し、データノードのプライマリサーバのユーザー出口を作成してください。
“クラスタ運用ガイド(データベース多重化編)”の“プライマリサーバのMirroring Controllerの起動”を参照し、データノードのプライマリサーバのMirroring Controllerを起動してください。
“Connection Manager 利用ガイド”の“watchdog拡張の導入”を参照し、データノードのプライマリサーバにwatchdog拡張を導入してください。