Transactd HA(高可用)運用のためホスト名リゾルバー (THNRと呼びます) [詳解]
#include <haNameResolver.h>
静的公開メンバ関数 | |
static void | addPortMap (short mysqlPort, short transactdPort) |
static void | clearPortMap () |
static const char * | master () |
static const char * | slave () |
static int | start (const char *master, const char *slaves, const char *slaveHostsWithPort, short slaveNum, const char *userName, const char *password, int option=0) |
static void | stop () |
Transactd HA(高可用)運用のためホスト名リゾルバー (THNRと呼びます)
HA(高可用性)運用でマスターがフェイルオーバーする構成で、接続先のホスト名に代えて 役割名(master/slaveなど)の仮想ホスト名でアクセス可能にするホスト名解決関数ライブラリです。
このリゾルバーを正しく動作させるには、サーバー群がTransactd 高可用構成にて構成されている必要があります。
Transactd 高可用構成については「Transactd 高可用運用 (THA)」を参照してください。
THNRは、アプリケーションの先頭で haNameResolver::start() 関数を呼び出すことで有効になります。 有効にしたアプリケーションからデータベースをオープンする際のURIのホスト部には,実際のホスト名に代えて start() で指定したマスターまたはスレーブの仮想ホスト名を指定します。
以下の例は、仮想ホスト名に master1 という名前を使用した例です。
このように仮想ホスト名でアクセスすることで、実際のマスターが切り替わった場合でも正しく目的の機能を持つサーバー にアクセスすることができます。
クライアントライブラリ自身が名前解決することで、DNSやネットワーク機器など外部に依存することなくHA運用を可能にします。 クラウドサービスなど、外部機器に制約がある場合には特に有効です。
また、役割を確認することで、アクセス時にマスター切替を自動検出し、正しいサーバーにアクセスを自動的に切替えることができます。
MySQLレプリケーションで使用するポート番号とTrasnactdのポート番号の関連付けを登録します。
この関数を使用するのは、MySQLレプリケーションで使用するポート番号 デフォルト3306とTrasnactdのポート 番号 デフォルト8610を変更している場合のみです。MySQLレプリケーションで使用するポート番号を変更する場合 は、Trasnactdのポート番号も変更し、それぞれの対応付けをこの関数で指定します。
mysqlPort | MySQLのレプリケーションで使用するポート番号を指定します。 |
transactdPort | mysqlPortで指定されたポートを使用するサーバーでの、Trasnactdのポート番号を指定します。 |
|
static |
addPortMap() で登録したポート番号をクリアして無効にします。
|
static |
仮想マスター名に対するTHNRが解決した実ホスト名を返します。Transactdクライアント以外のライブラリから マスターにアクセスしたいときは、この関数で得られたホスト名を使って同じホストにアクセスすることができます。
但し、ここで返されたホスト名はキャッシュされた名前です。今現在マスターの役割を持っているかどうかのチェックは行われません。 ここで得られたホスト名でTransactdクライアント以外のライブラリからアクセスすることは、Transactd HA(高可用性)運用の適用外です。
|
static |
仮想スレーブ名に対するTHNRが解決した実ホスト名を返します。Transactdクライアント以外のライブラリから マスターにアクセスしたいときは、この関数で得られたホスト名を使って同じホストにアクセスすることができます。
但し、ここで返されたホスト名はキャッシュされた名前です。今現在マスターの役割を持っているかどうかのチェックは行われません。 ここで得られたホスト名でTransactdクライアント以外のライブラリからアクセスすることは、Transactd HA(高可用性)運用の適用外です。
|
static |
THNRを開始します。
master | マスター用の仮想ホスト名を指定します。実在しないホスト名であればどのような名前でも指定できます。使用可能な文字種は通常のホスト名と同様です。 |
slaves | スレーブ用の仮想ホスト名を指定します。ホスト名のルールはmasterと同様です。カンマで区切って複数の仮想スレーブ名を指定することができます。 |
slaveHostsWithPort | マスターとスレーブの実ホストを指定します。カンマで区切って複数指定できます。また、Transactdのポート番号をデフォルトから変更している場合はポート番号も合わせて指定します。(例 "host1:8611,host2:8612") |
slaveNum | slaveHostsWithPortで指定したスレーブの中でこのプログラムがデフォルトとして使用するスレーブを列挙順の番号で指定します。最初のホストは0です。 |
userName | Trasnactdのユーザー名を指定します。slaveHostsWithPortで指定したホストはすべてこのユーザー名でTrasanctdクライアントからアクセス可能でなければなりません。 |
password | userNameに対するパスワードを指定します。 |
option | オプションを指定します。デフォルトは0です。オプションは以下の値をOR演算で複数指定できます。
|
|
static |
THNRを停止します。プログラムの終了時にこの関数を呼び出す必要はありません。