2.3.3. バックアップ用のフェンスデバイスを設定する
1 つのノードに対して複数のフェンシングメソッドを定義することが可能です。 最初のメソッドで失敗すると、 2 番目のメソッドでノードのフェンシングを試行します。 さらにメソッドを設定していればそれらのメソッドが順次試行されていきます。 ノードにバックアップ用のフェンシングメソッドを設定する場合は、 1 ノードに 2 種類のメソッドを設定し、 各メソッドに対してフェンスインスタンスを設定します。
注記
設定したフェンシングメソッドが使用される順序は、 クラスター設定ファイルに記載されている順序に従います。
ccs
コマンドで設定する一番目のメソッドが第一フェンシングメソッドになり、 2 番目に設定するメソッドがバックアップ用のフェンシングメソッドになります。 順序を変更する場合は、 一旦、 設定ファイルから第一フェンシングメソッドを削除し、 そのメソッドを追加し直します。
次のコマンドを実行すると、 ノードに現在設定しているフェンスメソッドとインスタンスの一覧をいつでも出力させることができます。 ノードを指定しないでコマンドを実行すると、 全ノードに設定されているフェンスメソッドとインスタンスが出力されます。
ccs -h host --lsfenceinst [node]
次の手順にしたがい、 ノードに第一フェンシングメソッドを設定します。 使用するフェンスデバイスは
apc
、 フェンスエージェントは fence_apc
です。 また、 バックアップ用のフェンスデバイスは sanswitch1
、 フェンスエージェントは fence_sanbox2
を使用します。 sanswitch1
デバイスはストレージベースのフェンスエージェントのため、 このデバイスにはアンフェンシングの設定も行なう必要があります。
- ノードにフェンスメソッド名を与え、 第一フェンスメソッドを追加します。
ccs -h host --addmethod method node
たとえば、node-01.example.com
と言うクラスターノードの設定ファイル内でAPC
という第一フェンスメソッドをnode-01.example.com
と言うノードに対して設定する場合は次のようなコマンドになります。ccs -h node-01.example.com --addmethod APC node-01.example.com
- 第一メソッドにフェンスインスタンスを追加します。 ノードに使用するフェンスデバイス、 このインスタンスを適用するノード、 メソッド名、 このノードに固有となるこのメソッドのオプションなどを指定する必要があります。
ccs -h host --addfenceinst fencedevicename node method [options]
たとえば、クラスターノードnode-01.example.com
の設定ファイルにフェンスインスタンスを設定します。ここで使用しているフェンスデバイスはapc
、インスタンスを適用するノードはnode-01.example.com
、メソッド名はAPC
とし、ノードに固有となるメソッド用のオプションにはフェンスデバイスの APC スイッチの電源ポート 1 を指定しています。ccs -h node-01.example.com --addfenceinst apc node-01.example.com APC port=1
- フェンスメソッド名を与え、 ノードにバックアップ用のフェンスメソッドを追加します。
ccs -h host --addmethod method node
たとえば、node-01.example.com
というクラスターノードの設定ファイル内でSAN
というバックアップ用のフェンスメソッドをnode-01.example.com
というノードに対して設定する場合は次のようなコマンドになります。ccs -h node-01.example.com --addmethod SAN node-01.example.com
- バックアップ用のメソッドにフェンスインスタンスを追加します。 ノードに使用するフェンスデバイス、 このインスタンスを適用するノード、 メソッド名、 このノードに固有となるこのメソッドのオプションなどを指定する必要があります。
ccs -h host --addfenceinst fencedevicename node method [options]
例えば、 クラスターノードnode-01.example.com
の設定ファイルにフェンスインスタンスを設定します。ここで使用しているフェンスデバイスはsanswitch1
、適用するクラスターノードはnode-01.example.com
、メソッド名はSAN
とし、ノードに固有となるオプションにはフェンスデバイスの SAN スイッチ電源ポート 11 を指定しています。ccs -h node-01.example.com --addfenceinst sanswitch1 node-01.example.com SAN port=11
sanswitch1
デバイスはストレージベースのデバイスのためアンフェンシングの設定を行なう必要があります。ccs -h node-01.example.com --addunfence sanswitch1 node-01.example.com port=11 action=on
必要に応じて引き続きフェンシングメソッドを追加します。
この手順では、 クラスター内の一つのノードに対してフェンスデバイスおよびバックアップ用のフェンスデバイスを設定しています。 このクラスター内の他のノードに対してもフェンシングを設定する必要があります。
電源ベースの第一フェンシングメソッドとストレージベースのバックアップ用フェンシングメソッドをクラスター内の各ノードに追加した後の
cluster.conf
設定ファイルを 例2.3「バックアップ用のフェンスメソッドを追加した状態の cluster.conf
」 に示します。
例2.3 バックアップ用のフェンスメソッドを追加した状態の cluster.conf
<cluster name="mycluster" config_version="3"> <clusternodes> <clusternode name="node-01.example.com" nodeid="1"> <fence> <method name="APC"> <device name="apc" port="1"/> </method> <method name="SAN"> <device name="sanswitch1" port="11"/> </method> </fence> <unfence> <device name="sanswitch1" port="11" action="on"/> </unfence </clusternode> <clusternode name="node-02.example.com" nodeid="2"> <fence> <method name="APC"> <device name="apc" port="2"/> </method> <method name="SAN"> <device name="sanswitch1" port="12"/> </method> </fence> <unfence> <device name="sanswitch1" port="12" action="on"/> </unfence </clusternode> <clusternode name="node-03.example.com" nodeid="3"> <fence> <method name="APC"> <device name="apc" port="3"/> </method> <method name="SAN"> <device name="sanswitch1" port="13"/> </method> </fence> <unfence> <device name="sanswitch1" port="13" action="on"/> </unfence </clusternode> </clusternodes> <fencedevices> <fencedevice agent="fence_apc" ipaddr="apc_ip_example" login="login_example" name="apc" passwd="password_example"/> <fencedevice agent="fence_sanbox2" ipaddr="san_ip_example" login="login_example" name="sanswitch1" passwd="password_example"/> </fencedevices> <rm> </rm> </cluster>
クラスターのコンポーネントの設定がすべて終了したら、 クラスター設定ファイルを全ノードに対して同期する必要があります。
注記
設定したフェンシングメソッドが使用される順序は、 クラスター設定ファイルに記載されている順序に従います。 一番目に設定するメソッドが第一フェンシングメソッドになり、 2 番目に設定するメソッドがバックアップ用のフェンシングメソッドになります。 順序を変更する場合は、 一旦、 設定ファイルから第一フェンシングメソッドを削除し、 そのメソッドを追加し直します。