アプリケーションは、シャードと対応するデータノードを記憶しておき、処理するデータに応じてデータノードへアクセスする必要があります。つまり、アクセス対象のデータがシャード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」になります。