アクティブ/スタンバイ Linux クラスター構成では、IP、ファイルシステムを含むすべての重要なサービスが、クラスター内のあるノードから別のノードにフェイルオーバーします。
このチュートリアルでは、コマンド ライン ユーティリティを使用して 2 ノード Redhat クラスターを作成および構成する方法について詳しく説明します。
以下は、Redhat または CentOS で Linux クラスターを構成するための手順の概要です。
- RICCI クラスター サービスをインストールして開始する
- アクティブ ノードにクラスタを作成
- クラスターにノードを追加する
- クラスタにフェンシングを追加
- フェイルオーバー ドメインを構成する
- クラスタにリソースを追加
- ノード間でクラスタ構成を同期
- クラスターを開始する
- アクティブ ノードをシャットダウンしてフェイルオーバーを確認する
1.必要なクラスター パッケージ
最初に、次のクラスター パッケージがインストールされていることを確認します。これらのパッケージがない場合は、yum コマンドを使用してインストールしてください。
[root@rh1 ~]# rpm -qa | egrep -i "ricci|luci|cluster|ccs|cman" modcluster-0.16.2-28.el6.x86_64 luci-0.26.0-48.el6.x86_64 ccs-0.16.2-69.el6.x86_64 ricci-0.16.2-69.el6.x86_64 cman-3.0.12.1-59.el6.x86_64 clusterlib-3.0.12.1-59.el6.x86_64
2. RICCI サービスの開始とパスワードの割り当て
次に、両方のノードで ricci サービスを開始します。
[root@rh1 ~]# service ricci start Starting oddjobd: [ OK ] generating SSL certificates... done Generating NSS database... done Starting ricci: [ OK ]
また、両方のノードで RICCI のパスワードを割り当てる必要があります。
[root@rh1 ~]# passwd ricci Changing password for user ricci. New password: Retype new password: passwd: all authentication tokens updated successfully.
また、iptables ファイアウォールを実行している場合は、相互に通信できるように両方のノードに適切なファイアウォール ルールが必要であることに注意してください。
3.アクティブ ノードにクラスタを作成
アクティブ ノードから、次のコマンドを実行して新しいクラスターを作成してください。
次のコマンドは、クラスター構成ファイル /etc/cluster/cluster.conf を作成します。ファイルが既に存在する場合、既存の cluster.conf が新しく作成された cluster.conf に置き換えられます。
[root@rh1 ~]# ccs -h rh1.mydomain.net --createcluster mycluster rh1.mydomain.net password: [root@rh1 ~]# ls -l /etc/cluster/cluster.conf -rw-r-----. 1 root root 188 Sep 26 17:40 /etc/cluster/cluster.conf
また、これらのコマンドをクラスターの 1 つのノードからのみ実行しており、クラスターの他のノードに変更を反映する準備がまだできていないことにも注意してください。
4.初期プレーン cluster.conf ファイル
クラスターを作成すると、cluster.conf ファイルは次のようになります:
[root@rh1 ~]# cat /etc/cluster/cluster.conf <?xml version="1.0"?> <cluster config_version="1" name="mycluster"> <fence_daemon/> <clusternodes/> <cman/> <fencedevices/> <rm> <failoverdomains/> <resources/> </rm> </cluster>
5.ノードをクラスタに追加
クラスターが作成されたら、次に示すように ccs コマンドを使用して参加ノードをクラスターに追加する必要があります。
最初に、以下に示すように最初のノード rh1 をクラスターに追加します。
[root@rh1 ~]# ccs -h rh1.mydomain.net --addnode rh1.mydomain.net Node rh1.mydomain.net added.
次に、以下に示すように、2 番目のノード rh2 をクラスターに追加します。
[root@rh1 ~]# ccs -h rh1.mydomain.net --addnode rh2.mydomain.net Node rh2.mydomain.net added.
ノードが作成されたら、次のコマンドを使用して、クラスター内の使用可能なすべてのノードを表示できます。これにより、対応するノードのノード ID も表示されます。
[root@rh1 ~]# ccs -h rh1 --lsnodes rh1.mydomain.net: nodeid=1 rh2.mydomain.net: nodeid=2
6.ノード追加後の cluster.conf ファイル
これにより、以下に示すように cluster.conf ファイルにもノードが追加されます。
[root@rh1 ~]# cat /etc/cluster/cluster.conf <?xml version="1.0"?> <cluster config_version="3" name="mycluster"> <fence_daemon/> <clusternodes> <clusternode name="rh1.mydomain.net" nodeid="1"/> <clusternode name="rh2.mydomain.net" nodeid="2"/> </clusternodes> <cman/> <fencedevices/> <rm> <failoverdomains/> <resources/> </rm> </cluster>
7.フェンシングをクラスタに追加
フェンシングとは、ノードを共有ストレージから切断することです。フェンシングは共有ストレージから I/O を遮断するため、データの整合性が確保されます。
フェンス デバイスは、ノードを共有ストレージから切り離すために使用できるハードウェア デバイスです。
これは、さまざまな方法で実現できます。たとえば、リモート電源スイッチを介してノードの電源を切る、ファイバー チャネル スイッチ ポートを無効にする、ホストの SCSI 3 予約を取り消すなどです。
フェンス エージェントは、フェンス デバイスに接続して、ノードの共有ストレージへのアクセスを切断するようにフェンス デバイスに要求するソフトウェア プログラムです (ノードの電源をオフにするか、他の手段で共有ストレージへのアクセスを削除することにより)。
次のコマンドを実行してフェンシングを有効にします。
[root@rh1 ~]# ccs -h rh1 --setfencedaemon post_fail_delay=0 [root@rh1 ~]# ccs -h rh1 --setfencedaemon post_join_delay=25
次に、フェンス デバイスを追加します。さまざまな種類のフェンシング デバイスが利用可能です。仮想マシンを使用してクラスターを構築している場合は、以下に示すように fence_virt デバイスを使用してください。
[root@rh1 ~]# ccs -h rh1 --addfencedev myfence agent=fence_virt
次に、フェンシング メソッドを追加します。フェンシング デバイスを作成したら、フェンシング メソッドを作成し、ホストをフェンシング メソッドに追加する必要があります。
[root@rh1 ~]# ccs -h rh1 --addmethod mthd1 rh1.mydomain.net Method mthd1 added to rh1.mydomain.net. [root@rh1 ~]# ccs -h rh1 --addmethod mthd1 rh2.mydomain.net Method mthd1 added to rh2.mydomain.net.
最後に、以下に示すように、上記で作成したメソッドにフェンス デバイスを関連付けます。
[root@rh1 ~]# ccs -h rh1 --addfenceinst myfence rh1.mydomain.net mthd1 [root@rh1 ~]# ccs -h rh1 --addfenceinst myfence rh2.mydomain.net mthd1
8.フェンシング後の cluster.conf ファイル
フェンシング デバイス、メソッドが追加された後、cluster.conf は以下のようになります。
[root@rh1 ~]# cat /etc/cluster/cluster.conf <?xml version="1.0"?> <cluster config_version="10" name="mycluster"> <fence_daemon post_join_delay="25"/> <clusternodes> <clusternode name="rh1.mydomain.net" nodeid="1"> <fence> <method name="mthd1"> <device name="myfence"/> </method> </fence> </clusternode> <clusternode name="rh2.mydomain.net" nodeid="2"> <fence> <method name="mthd1"> <device name="myfence"/> </method> </fence> </clusternode> </clusternodes> <cman/> <fencedevices> <fencedevice agent="fence_virt" name="myfence"/> </fencedevices> <rm> <failoverdomains/> <resources/> </rm> </cluster>
9.フェイルオーバー ドメインの種類
フェイルオーバー ドメインは、リソース グループまたはサービスがバインドされるクラスター メンバーの順序付けられたサブセットです。
以下は、さまざまなタイプのフェイルオーバー ドメインです:
- フェイルオーバー ドメインの制限:ドメインにバインドされたリソース グループまたはサービスは、フェイルオーバー ドメインのメンバーでもあるクラスター メンバーでのみ実行できます。フェイルオーバー ドメインのメンバーが利用できない場合、リソース グループまたはサービスは停止状態になります。
- 無制限のフェイルオーバー ドメイン:このドメインにバインドされたリソース グループは、すべてのクラスター メンバーで実行できますが、ドメインのメンバーが使用可能な場合は常にそのメンバーで実行されます。つまり、リソース グループがドメイン外で実行されていて、ドメインのメンバーがオンラインに移行した場合、リソース グループまたは
- サービスはそのクラスタ メンバーに移行されます。
- 順序付きドメイン:順序付きドメイン内のノードには、1 ~ 100 の優先度レベルが割り当てられます。優先度 1 が最も高く、100 が最も低くなります。最も優先度の高いノードがリソース グループを実行します。ノード 2 で実行されていたリソースは、オンラインになるとノード 1 に移行します。
- 順序付けられていないドメイン:ドメインのメンバーには優先順位がありません。どのメンバーもリソース グループで実行できます。リソース グループは、可能な限り常にフェイルオーバー ドメインのメンバーに移行します。
10. Fileover ドメインを追加
フェイルオーバードメインを追加するには、次のコマンドを実行します。この例では、「webserverdomain」という名前のドメインを作成しました。
[root@rh1 ~]# ccs -h rh1 --addfailoverdomain webserverdomain ordered
フェイルオーバー ドメインが作成されたら、以下に示すように両方のノードをフェイルオーバー ドメインに追加します。
[root@rh1 ~]# ccs -h rh1 --addfailoverdomainnode webserverdomain rh1.mydomain.net priority=1 [root@rh1 ~]# ccs -h rh1 --addfailoverdomainnode webserverdomain rh2.mydomain.net priority=2
次のコマンドを使用して、フェイルオーバー ドメイン内のすべてのノードを表示できます。
[root@rh1 ~]# ccs -h rh1 --lsfailoverdomain webserverdomain: restricted=0, ordered=1, nofailback=0 rh1.mydomain.net: 1 rh2.mydomain.net: 2
11.リソースをクラスタに追加
次に、リソースを追加します。これは、ノードに障害が発生したときに ip および filesystem とともにフェイルオーバーする必要があるサービスを示します。たとえば、Redhat Linux クラスターでは、Apache Web サーバーをフェイルオーバーの一部にすることができます。
リソースを追加する準備ができたら、2 つの方法でこれを行うことができます。
グローバル リソースとして追加するか、リソースをリソース グループまたはサービスに直接追加できます。
グローバル リソースとして追加する利点は、リソースを複数のサービス グループに追加する場合に、サービスまたはリソース グループでグローバル リソースを参照するだけで済むことです。
この例では、ファイルシステムを共有ストレージにグローバル リソースとして追加し、サービスで参照しました。
[root@rh1 ~]# ccs –h rh1 --addresource fs name=web_fs device=/dev/cluster_vg/vol01 mountpoint=/var/www fstype=ext4
クラスターにサービスを追加するには、サービスを作成し、リソースをサービスに追加します。
[root@rh1 ~]# ccs -h rh1 --addservice webservice1 domain=webserverdomain recovery=relocate autostart=1
サービスへのリソース参照を追加するために、cluster.conf に次の行を追加します。この例では、フェールオーバー IP もサービスに追加しました。
<fs ref="web_fs"/> <ip address="192.168.1.12" monitor_link="yes" sleeptime="10"/>
このチュートリアルの第 2 部 (明日) では、クラスタ内の複数のノード間で構成を同期する方法と、クラスタ セットアップでフェイルオーバー シナリオを検証する方法について説明します。