スイッチ管理エージェント (SMA) は、クラスタプライベートインターコネクトを介して通信チャネルを管理するクラスタモジュールです。SMA は、プライベートインターコネクトを監視し、障害を検出した場合にバックアップネットワークに対するフェイルオーバーを呼び出します。
作業を開始する前に、次の制限に注意してください。
SC2000/SS1000 ノードでは、単一のシステムボードに複数の SCI カードを取り付けないでください。複数の SCI カードを取り付けると、SCI インターコネクトに疑似リンクリセットが起きる場合があります。
Sun Enterprise 10000 ノードでは、SCI カードが SBus 上の唯一のカードであってはなりません。
Sun StorEdge A3000 構成では、同じ SBus 上に SCI アダプタとほかの A3000 ホストアダプタを取り付けないでください。
クラスタノードにスイッチと SCI カードを追加するには、次の作業を行なってください。詳細は、sm_config(1M) マニュアルページを参照してください。
sm_config 一時ファイルを編集して、構成変更を反映させます。
この一時ファイルは、通常、/opt/SUNWsma/bin/Examples にあります。
ノードの 1 つから sm_config(1M) コマンドを実行して、SCI SBus カードを構成します。
このコマンドを再実行して、SCI のノード ID と IP アドレスがクラスタノードに正しく割り当てられていることを確認してください。割り当てが不正に行われていると、ノード間で通信不良が発生することがあります。
新しいノードを再起動します。
SCI に問題が発生した場合は、次の点を確認してください。
sm_config(1M) 一時ファイルがハードウェア構成 (SCI リンクとスイッチ) およびクラスタトポロジと一致していること。
sm_config(1M) コマンドが、クラスタノードの 1 つから正常に実行できること。
再構成されたノードはすべて、sm_config(1M) コマンドの実行後再起動されたこと。
次に示す問題とその解決方法も参考にしてください。
Oracle Parallel Server (OPS) などの一部のアプリケーションは、非常に多くの共有メモリーを必要とします (最小サイズは /etc/system ファイルに指定されています)。/etc/system ファイル内のフィールド shmsys:shminfo_shmmin が 200 バイトを超える値に設定される場合、sm_config(1M) コマンドは共有メモリーを取得できません。これは、sm_config(1M) コマンドは、システムが割り当てることができる最小サイズよりも小さいバイトを要求するためです。その結果、sm_config(1M) コマンドによるシステムコールは失敗し、このコマンドはアボートします。
この問題を解決するには、/etc/system ファイルを編集し、shmsys:shminfo_shmmin の値を 200 未満に設定します。その後で、新しい値が有効になるようにマシンを再起動します。
semsys 警告とコアダンプが発生する場合は、/etc/system ファイルの semsys:seminfo_* フィールドに入ったセマフォ値が、マシンの実際の物理的な制限に一致しているかどうかを確認してください。
ノード間の接続を検査するには、get_ci_status(1M) または ping(1) を実行できます。
get_ci_status(1M) コマンドは、すべてのクラスタノードで実行します。
次に、get_ci_status(1M) の出力例を示します。
# /opt/SUNWsma/bin/get_ci_status sma: sci #0: sbus_slot# 1; adapter_id 8 (0x08); ip_address 1; switch_id# 0; port_id# 0; Adapter Status - UP; Link Status - UP sma: sci #1: sbus_slot# 2; adapter_id 12 (0x0c); ip_address 17; switch_id# 1; port_id# 0; Adapter Status - UP; Link Status - UP sma: Switch_id# 0 sma: port_id# 1: host_name = interconn2; adapter_id = 72; active | operational sma: port_id# 2: host_name = interconn3; adapter_id = 136; active | operational sma: port_id# 3: host_name = interconn4; adapter_id = 200; active | operational sma: Switch_id# 1 sma: port_id# 1: host_name = interconn2; adapter_id = 76; active | operational sma: port_id# 2: host_name = interconn3; adapter_id = 140; active | operational sma: port_id# 3: host_name = interconn4; adapter_id = 204; active | operational # |
最初の 4 つの行は、ローカルノード (この例では interconn1) の状態を示しています。ローカルノードは、switch_id# 0 および switch_id# 1 と通信しています (Link Status - UP)。
sma: sci #0: sbus_slot# 1; adapter_id 8 (0x08); ip_address 1; switch_id# 0; port_id# 0; Adapter Status - UP; Link Status - UP sma: sci #1: sbus_slot# 2; adapter_id 12 (0x0c); ip_address 17; switch_id# 1; port_id# 0; Adapter Status - UP; Link Status - UP |
ほかの行は、クラスタ内のほかのノードの全体的な状態を示しています。2 つのスイッチ上のノードはすべて、それらのノードと通信しています。ハードウェアに問題があると、active ではなく inactive が表示されます。ソフトウェアに問題があると、operational ではなく inoperational が表示されます。
sma: Switch_id# 0 sma: port_id# 1: host_name = interconn2; adapter_id = 72; active | operational sma: port_id# 2: host_name = interconn3; adapter_id = 136; active | operational sma: port_id# 3: host_name = interconn4; adapter_id = 200; active | operational sma: Switch_id# 1 sma: port_id# 1: host_name = interconn2; adapter_id = 76; active | operational sma: port_id# 2: host_name = interconn3; adapter_id = 140; active | operational sma: port_id# 3: host_name = interconn4; adapter_id = 204; active | operational # |
ping(1) コマンドは、遠隔ノードのすべての IP アドレスに対して実行します。
次に、ping(1) の出力例を示します。
# ping IP-address |
IP アドレスは、/etc/sma.ip ファイルに入っています。ping(1) コマンドは、必ずクラスタ内のノードごとに実行してください。
ping(1) コマンドは、2 つの末端が支障なく通信している場合、「alive」というメッセージを返します。問題がある場合は、エラーメッセージが表示されます。
次に例を示します。
# ping 204.152.65.2 204.152.65.2 is alive |
IP アドレスの最後の 8 ビットは、/etc/sma.config ファイルの IP フィールドの値に一致する必要があります。
# ifconfig -a lo0: flags=849<UP,LOOPBACK,RUNNING,MULTICAST> mtu 8232 inet 127.0.0.1 netmask ff000000 hme0: flags=863<UP,BROADCAST,NOTRAILERS,RUNNING,MULTICAST> mtu 1500 inet 129.146.238.55 netmask ffffff00 broadcast 129.146.238.255 ether 8:0:20:7b:fa:0 scid0: flags=80cl<UP,RUNNING,NOARP,PRIVATE> mtu 16321 inet 204.152.65.1 netmask fffffff0 scid1: flags=80cl<UP,RUNNING,NOARP,PRIVATE> mtu 16321 inet 204.152.65.17 netmask fffffff0 |