この項では、クラスタを通常の TCP/IP 通信に SCI ソケットを使用できるようにするために設定について説明します。この説明は 2004 年 10 月 1 日現在の SCI Socket バージョン 2.3.0 に基づいています。
必要条件
SCI ソケットを使用するマシンは SCI カード実装が必要です。
SCI ソケットはどのバージョンの MySQL Cluster でも使用できます。それは既に MySQL Cluster で利用できる通常のソケット呼び出しを使用していますので特別な構築は必要ありません。しかし、SCI Soket は現在 Linux 2.4 および 2.6 kernels 上でしかサポートされていません。SCI トランスポーターはその他のオペレーティング システムでも検証されていますが今までのところ弊社では Linux 2.4 でしかこれらの検証を行っておりません。
これらは SCI Socket の使用する際の基本的な要件です。
SCI Socket ライブラリの構築。
SCI Socket kernel ライブラリのインストール。
1 つ以上の設定ファイルのインストール。
SCI Socket kernel ライブラリはマシン全体あるいは MySQL Cluster プロセスが実行されるシェルのいずれかに有効でなければなりません。
このプロセスは SCI Socket をインターノード通信に使用する際のクラスタの各マシンに繰返されます。
SCI Socket を動作させるには 2 つのパッケージを取り出す必要があります。
SCI Socket ライブラリの DIS サポート ライブラリを含むソースコード パッケージ。
SCI Socket ライブラリそのもののソースコード パッケージ
現在は、これらはソースコードのフォーマットでしか利用できません。本マニュアルを書いている段階でのこれらのパッケージの最新のバージョンは
(それぞれ)
DIS_GPL_2_5_0_SEP_10_2004.tar.gz
および
SCI_SOCKET_2_3_0_OKT_01_2004.tar.gz
が利用できました。これらは
(または最新バージョン) は
http://www.dolphinics.no/support/downloads.html
で入手できます。
パッケージのインストール
これらのライブラリのパッケージを入手したら、以下のステップでそれらを適切なディレクトリに解凍し、そこで SCI Socket ライブラリを DIS コードの下のディレクトリに入れます。次に、ライブラリを構築する必要があります。この例ではこのタスクを実行するための Linux/x86 でのコマンドを示します。
shell>tar xzf DIS_GPL_2_5_0_SEP_10_2004.tar.gz
shell>cd DIS_GPL_2_5_0_SEP_10_2004/src/
shell>tar xzf ../../SCI_SOCKET_2_3_0_OKT_01_2004.tar.gz
shell>cd ../adm/bin/Linux_pkgs
shell>./make_PSB_66_release
これらの ライブラリを 64 ビットのプロセッサに構築できます。64 ビット拡張を使用してライブラリを Opteron CPU に構築するには、make_PSB_66_X86_64_release を実行します。make_PSB_66_release ではありません。それを Itanium マシンに構築した場合には、 make_PSB_66_IA64_release を使用する必要があります。X86-64 バリアントは Intel EM64T アーキテクチャで動作しますが、これはまだ (弊社の知っている限り) まだ検証されていません。
構築が完了したら、コンパイルしたライブラリは
zip の tar ファイルで
DIS-
の名前で検索できます。ここでパッケージを適切なスペースにインストールします。この例ではインストールを
<operating-system>
-time
-date
/opt/DIS
に入れます。(注:多くの場合以下をシステム
root
ユーザーとして実行する必要があります。)
shell>cp DIS_Linux_2.4.20-8_181004.tar.gz /opt/
shell>cd /opt
shell>tar xzf DIS_Linux_2.4.20-8_181004.tar.gz
shell>mv DIS_Linux_2.4.20-8_181004 DIS
ネットワークの設定
すべてのライブラリおよびバイナリが準備できたら、SCI カードが SCI アドレス スペースで適切なノード ID を持っているか確認する必要があります。
次に進む前にネットワーク構成で決める必要があります。これ例で使用できるネットワーク構成は 3 種類あります。
簡単な一次元リング
スイッチ ポートと毎に 1 つのリングを持つ 1 つ以上の SCI スイッチ
2 あるいは 3次元トーラス
これらの各トポロジにはノード ID を提供するそれぞれの手法があります。簡単にそれぞれについて説明します。
簡単なリングは非ーゼロの 4 の倍数を使用します。 4, 8, 12,...
次の例は SCI スイッチを使用しています。SCI スイッチには 8 ポートあり、それぞれのポートはリングをサポートします。異なるリングは異なるノード ID スペースを使用することを確認する必要があります。一般的な設定では、最初のポートは 64 (4 – 60) 以下のノード ID を使用し、次の 64 ノード ID (68 – 124) は次のポートに割り当てられ、そのように続いてノード ID 452 – 508 は 8 番目のポートに割り当てられます。
2、3 次元のトーラス ネットワーク構成は各ノードは各次元のどこに配置され、最初の次元で各ノードを 4 で増分し、2 次元では 64、および (適用できる場合) 3 次元では 1024 で増分します。さらに詳しい説明については Dolphin 社のウェブ サイト を参照してください。
弊社の試験ではスイッチを使用しました。大きなクラスタのインストールでは 2 あるいは 3 次元のローラス構成を使用します。スイッチを使用する利点は、2 つの SCI および 2 つのスイッチでは、比較的容易に冗長ネットワークを構築でき、そこでは SCI ネットワークの標準フェールオーバー時間は 一般的に100 ミリセカンドです。これは MySQL Cluster の SCI トランスポーターでサポートされており、現在 SCI Socket に導入するために開発中です。
2D/3D トーラスでのファールオーバーは可能ですがすべてのノードに対して新しいルート インデックスを送る必要があります。しかし、これには それを完了するには 100 ミリセカンドあるいはそれくらいが必要で、多くの高可用性を要求されるケースで使用せきなればなりません。
クラスタのデータ ノードをスイッチのアーキテクチャに適切に配置することで、2 つのスイッチを使用して 16 台のコンピュータをインターコネクトし 1 つの不具合が他の 1 つ以上に影響を及ぼさない構成を構築できます。32 台のコンピュータと 2 つのスイッチで、1 つの不具合が 2 つい上のノードの損失につながらないようにクラスタを設定することができます。この場合、その組のノードが影響されたかを知ることも可能です。このように、2 つのノードを個別のノード グループに配置することで、「安全な」 MySQL Cluster のインストールを構築できます。
ノード ID を SCI カードに設定するには
/opt/DIS/sbin
ディレクトリの以下のコマンドを使用します。この例では、-c
1
は SCI カード (これはマシンにカードが
1 つだけの場合には常に 1 です)
の番号を表し、-a 0
はアダプタ
0、および 68
はノード ID
を意味します。
shell> ./sciconfig -c 1 -a 0 -n 68
同じマシンに複数の SCI
カードがある場合、以下のコマンド
(ここでは使用するディレクトリを
/opt/DIS/sbin
とします)
を発行することでどのカードにどのスロットがあるか決めることができます。
shell> ./sciconfig -c 1 -gsn
これにより SCI
カードのシリアル番号が決まります。次にマシンの各カードにこのプロシージャを
-c 2
などで繰り返します。各カードをスロットに合わせたら、ノード
ID をすべてのカードに設定できます。
必要なライブラリおよびバイナリをインストールすると、SCI
ノードと ID
が設定され、次のステップでホスト名(あるいは
IP アドレス) から SCI ノード ID
のマッピングを設定します。これは SCI Socket
の設定ファイルで行われ、/etc/sci/scisock.conf
として保存します。このファイルで、各 SCI
ノード ID は適切な SCI
カードから通信するホスト名あるいは IP
アドレスにマップされます。ここにその様な設定ファイルの極めて簡単な例を示します。
#host #nodeId alpha 8 beta 12 192.168.10.20 16
設定をこれらのホストの利用できるポートのサブセットにのみ適用できるように制限することも可能です。これを行うために別の設定ファイル
/etc/sci/scisock_opt.conf
を以下のように使用できます。
#-key -type -values EnablePortsByDefault yes EnablePort tcp 2200 DisablePort tcp 2201 EnablePortRange tcp 2202 2219 DisablePortRange tcp 2220 2231
ドライバのインストール
設定ファイルの用意ができたら、ドライバをインストールできます。
最初に、低レベルのドライバ、次に SCI ソケット ドライバをインストールする必要があります。
shell>cd DIS/sbin/
shell>./drv-install add PSB66
shell>./scisocket-install add
任意で、SCI ソケットの設定ファイルのすべてのノードがアクセスできることを検証するスクリプトを実行してインストールをチェックできます。
shell>cd /opt/DIS/sbin/
shell>./status.sh
エラーが発生し SCI ソケットの設定の変更が必要な場合、このタスクを実行するためには ksocketconfig を使用する必要があります。
shell>cd /opt/DIS/util
shell>./ksocketconfig -f
設定テスト
SCI
ソケットが実際に使用されているか確認するには、latency_bench
テスト
プログラムを使用します。このユーティリティのサーバーコンポーネントを使用して、接続のレーテンシーをテストするためにサーバーに接続できます。SCI
が有効であるかを確認するにはこのレーテンシーを確認することで用意に分かります。(注:latency_bench
を使用する前に、LD_PRELOAD
環境変数をこの項の後で述べるように設定する必要があります。
サーバーを設定するには、以下を使用します。
shell>cd /opt/DIS/bin/socket
shell>./latency_bench -server
クライアントを起動するには、latency_bench
を、この場合は -client
オプションを除いて再度使用します。
shell>cd /opt/DIS/bin/socket
shell>./latency_bench -client
server_hostname
SCI ソケットの設定はこれで完了し、MySQL Cluster の SCI ソケット および SCI トランスポート (項14.4.4.10. 「SCI トランスポート接続」 参照) を使用する用意ができました。
クラスタの起動
プロセスの次のステップで MySQL Cluster
が起動します。SCI
ソケットの使用を有効にするには、環境変数
LD_PRELOAD
を
ndbd、mysqld、および
ndb_mgmd
を実行する前に設定します。.この変数は SCI
ソケットの kernel
ライブラリに向ける必要があります。
ndbd をバッシュ シェルで起動するには、以下に従います。
bash-shell>export LD_PRELOAD=/opt/DIS/lib/libkscisock.so
bash-shell>ndbd
tcsh 環境では、以下で同様のことが出来ます。
tcsh-shell>setenv LD_PRELOAD=/opt/DIS/lib/libkscisock.so
tcsh-shell>ndbd
注:MySQL Cluster は SCI ソケットの kernel 派生品のみ使用できます。