ページの先頭行へ戻る
Enterprise Postgres 14 SP1 スケールアウト運用ガイド
FUJITSU Software

4.1 スケールアウト環境でのアクセスのルーティング

アプリケーションは、シャードと対応するデータノードを記憶しておき、処理するデータに応じてデータノードへアクセスする必要があります。つまり、アクセス対象のデータがシャードAにある場合、対応したデータノードであるデータノード1に直接アクセスし、アクセス対象のデータが複数のデータノードにまたがっている場合は、中央管理ノードを経由して複数のデータノードへアクセスする必要があります。一方、Connection Managerと連携すると、Connection Managerがシャードとノードの対応関係を保持することができます。これによりアプリケーションは接続文字列にシャード名を指定することで、対応するデータノードに自動的にアクセスできるようになります。この機能のことを“接続ルーティング”と呼びます。

まず、この機能を使用するためにはConnection Managerの設定ファイルであるconmgr.confに以下のパラメータを設定し、Connection Managerを起動しておく必要があります。

各ノードのホストとポート番号は、Connection Managerの既存パラメータであるbackend_host*またはbackend_hostaddr*と、backend_port*で指定します。watchdog_port*には、conmgrと通信用にポート番号を割り当てます。

パラメータ

設定値

node_name* (string)

外部サーバ名を記載します。中央管理ノードの場合、COORDINATORを記載します。接続ルーティングを有効にする場合、すべての接続先に対して設定する必要があります。

collect_shardinfo_interval (integer)

Connection Managerが、中央管理ノードからシャードの情報を取得する頻度を指定します。単位は秒です。プライマリサーバ、スタンバイサーバで共通のパラメータです。省略した場合のデフォルト値は10秒です

collect_shardinfo_timeout (integer)

Connection Managerが、中央管理ノードへ接続を確立するための接続タイムアウトを指定します。単位は秒です。プライマリサーバ、スタンバイサーバで共通のパラメータです。省略した場合のデフォルト値は20秒です。

collect_shardinfo_conninfo (string)

中央管理ノードからシャードの情報を取得する際に使用する接続文字列を指定します。省略した場合、conmgrを起動したユーザー名を使用してデータベース接続を試みます。hostとportについてはconmgrとwatchdogの接続が確立しているいずれかの中央管理ノードのものを使用するため、接続文字列に指定されていても無視されます。


conmgr.confに設定するほとんどのパラメータはcm_ctl reloadコマンドを実行することで反映できますが、collect_shardinfoから始まるパラメータについてはconmgrを再起動する必要があります。

アプリケーションは、接続先にConnection Managerを指定し、接続文字列パラメータshard_nameにシャードの情報を指定することで、シャードが存在するノードに接続できます。シャード名を省略した場合、中央管理ノードに接続されます。JDBCドライバの場合、接続文字列パラメータは「shardName」になります。