クラスター化プール
クラスタリングは、GFS2ストレージリポジトリを使用するリソースプールに必要な、追加機能を提供します。GFS2の詳細については、「 ストレージの構成」を参照してください。
クラスターは、クラスター化されていないプールよりも密接に接続され協調する、最大16台のXenServerホストから成るプールです。クラスター内のホストは、選択したネットワーク上で互いに一定の通信を維持します。クラスター内のすべてのホストは、クラスター内のすべてのホストの状態を認識しています。このホスト協調により、クラスターはGFS2ストレージリポジトリのコンテンツへのアクセスを制御できます。
注:
クラスタリング機能は、GFS2ストレージリポジトリを含むプールの場合のみメリットがあります。プールにGFS2ストレージリポジトリが含まれていない場合は、プールでクラスタリングを有効にしないでください。
クォーラム
クラスター内の各ホストは、クラスター内のホストの大半(それ自体を含む)と常に通信している必要があります。この状態は、クォーラムを持つホストと呼ばれます。ホストがクォーラムを持たない場合、そのホストは自己隔離します。
最初にクォーラムを達成するために通信する必要があるホストの数は、クラスターがクォーラムを維持するために必要なホストの数とは異なる場合があります。
次の表は、この動作をまとめたものです。nの値は、クラスター化プール内のホストの合計数です。
クォーラムを達成するために必要なホストの数 | クォーレートを維持するために必要なホストの数 | |
---|---|---|
プール内のホストの数が奇数である | (n+1)/2 | (n+1)/2 |
プール内のホストの数が偶数である | (n/2)+1 | n/2 |
奇数のプール
奇数のプールのクォーラム値を達成するには、クラスター内のホストの合計数に1を加えた半分を超えた数が必要です:(n+1)/2。これは、プールがクォレートを維持するために接続可能な状態を維持する必要があるホストの最小数でもあります。
たとえば、5ホストのクラスター化プールでは、クラスターがアクティブになりクォレートを維持するには、3つのホストに接続できる必要があります。[(5+1)/2 = 3]。
可能な場合は、クラスター化されたプールでは奇数のホストを使用することをお勧めします。これにより、ホストがクォーレートセットを持っているかどうかを常に判断できるようになります。
偶数のプール
偶数のクラスター化プールにコールドスタートから電源を投入する場合は、ホストがクォーラムを持つ前に、(n/2)+1台のホストを使用できるようにする必要があります。ホストがクォーラムを持つと、クラスターがアクティブになります。
ただし、アクティブな偶数のプールは、接続可能なホストの数が少なくともn/2の場合にクォーレートを維持できます。その結果、偶数のホストの場合は、実行中のクラスターを正確に半分に分けることができます。実行中のクラスターは、クラスターのどちらの半分が自己隔離し、クラスターのどちらの半分がクォーラムを持つかを決定します。クラスターの分割前にアクティブと見なされていた最小IDを持つノードを含むクラスターの半分はアクティブのままで、残りの半分は自己隔離されます。
たとえば、4ホストのクラスター化プールでは、クラスターがアクティブになるためには3つのホストに接続できる必要があります。[4/2 + 1 = 3]。クラスターがアクティブになった後、クォーレートを維持するには、2つのホストのみが接続可能でなければなりません [4/2 = 2]。また、そのホストのセットには、アクティブであることが判明している最小のノードIDを持つホストが含まれている必要があります。
自己隔離
ホストは、クォーラムを持たないことを検出すると、数秒で自己隔離します。ホストは自己隔離すると、すぐに再起動します。ホストはハードシャットダウンを行うので、ホスト上で実行されているすべての仮想マシンが終了されます。高可用性を使用するクラスター化プールでは、XenServerは、ほかのプールメンバーでのその再起動構成に従って仮想マシンを再起動します。自己隔離されたホストは再起動され、クラスターに再び参加しようとします。
クラスター内の稼働中ホストの数がクォーラム値より小さくなると、残りのすべてのホストがクォーラムを失います。
理想的なシナリオでは、クラスター化プールには、クォーラムに必要な数より多くの稼働中ホストが常に存在し、XenServerが隔離することはありません。このシナリオをより実現可能にするには、クラスター化プールの設定時に次の推奨事項を考慮してください:
-
適切なハードウェア冗長性を確保します。
-
クラスターネットワークに専用のボンディングネットワークを使用します。ボンディングされたNICが必ず同じL2セグメント上にあるようにします。詳しくは、「ネットワーク」を参照してください。
-
プールとGFS2ストレージリポジトリとの間のストレージマルチパスを構成します。詳しくは、「ストレージのマルチパス」を参照してください。
クラスター化プールを作成する
開始前に、次の前提条件が満たされていることを確認してください:
-
クラスター化プール内のすべてのXenServerホストには、少なくとも2GiBのコントロールドメインメモリが必要です。
環境によっては、ホストにこれより多くのコントロールドメインのメモリが必要になる場合があります。ホスト上のコントロールドメインのメモリが不足すると、プールのネットワークが不安定になる可能性があります。ネットワークが不安定になることにより、GFS2ストレージリポジトリを含むクラスター化プールに問題が発生する可能性があります。コントロールドメインのメモリの量を変更し、メモリの動作を監視する方法については、「メモリ使用率」を参照してください。
-
クラスター内のすべてのホストは、クラスターネットワークに静的IPアドレスを使用する必要があります。
-
クラスタリングを使用するのは、プールが3つ以上のホストを含む場合だけにすることをお勧めします。これは、2つのホストを含むプールではプール全体の自己隔離で問題が発生しやすいためです。
-
クラスター化プールでは、プールあたり16台までのホストのみがサポートされます。
- プール内のホスト間にファイアウォールがある場合は、ホスト同士が以下のポートを使用してクラスターネットワーク上で通信できることを確認してください:
- TCP:8892、8896、21064
- UDP:5404、5405
詳しくは、「XenServerが使用する通信ポート」を参照してください。
-
既存のプールをクラスタリングする場合は、高可用性が無効になっていることを確認してください。クラスタリングが有効になった後、高可用性を再度有効にできます。
- クラスター化されたプールには、ほかのトラフィックには使用されないボンディングネットワークを使用することを強くお勧めします。
必要な場合は、XenCenterを使用してプールにクラスタリングを設定することもできます。詳しくは、XenCenter製品ドキュメントを参照してください。
xe CLIを使用してクラスター化プールを作成するには、以下の手順を実行します:
-
ボンディングネットワークを作成して、クラスタリングネットワークとして使用します。
注:
クラスター化されたプールには専用のボンディングネットワークを使用することを強くお勧めします。このネットワークはそれ以外のトラフィックには使用しないでください。
プールコーディネーターにするXenServerホストで、次の手順を実行します:
-
XenServerホストでコンソールを開きます。
-
次のコマンドを使用して、NICボンディングで使用するネットワークを作成します:
xe network-create name-label=bond0 <!--NeedCopy-->
これにより、新しいネットワークのUUIDが返されます。
-
次のコマンドを使用して、ボンディングに使用するPIFのUUIDを見つけます:
xe pif-list <!--NeedCopy-->
-
アクティブ/アクティブモード、アクティブ/パッシブモード、またはLACPボンディングモードのいずれかで、ボンディングしたネットワークを作成します。使用するボンディングモードに応じて、以下のいずれかのアクションを実行します:
-
アクティブ/アクティブモードのボンディング(デフォルト)を作成するには、
bond-create
コマンドを使用します。パラメーターをコンマで区切って、新しく作成したネットワークのUUIDと、ボンディングするPIFのUUIDを指定します:xe bond-create network-uuid=<network_uuid> / pif-uuids=<pif_uuid_1>,<pif_uuid_2>,<pif_uuid_3>,<pif_uuid_4> <!--NeedCopy-->
ボンディングを構成するNICの数に応じて、2つまたは4つのUUIDを指定してください。これにより、ボンディングのUUIDが返されます。
-
アクティブ/パッシブモードまたはLACPモードのボンディングを作成するには、上記と同じ構文に
mode
パラメーターを追加して、lacp
またはactive-backup
を指定します:xe bond-create network-uuid=<network_uuid> pif-uuids=<pif_uuid_1>, / <pif_uuid_2>,<pif_uuid_3>,<pif_uuid_4> / mode=balance-slb | active-backup | lacp <!--NeedCopy-->
-
プールコーディネーターでボンディングネットワークを作成した後、他のXenServerホストをプールに追加すると、ネットワークとボンディングの情報が追加するサーバーに自動的に複製されます。
詳しくは、「ネットワーク」を参照してください。
-
-
3台以上のXenServerホストから成るリソースプールを作成します。
プールメンバー(マスターではない)である各XenServerホストで、次の手順を繰り返します:
- XenServerホストでコンソールを開きます。
-
次のコマンドを使用して、XenServerホストをプールコーディネーター上のプールに参加させます:
xe pool-join master-address=master_address master-username=administrators_username master-password=password <!--NeedCopy-->
master-address
パラメーターの値は、プールコーディネーターであるXenServerホストの完全修飾ドメイン名に設定する必要があります。password
にはプールコーディネーターのインストール時に設定した管理者パスワードを指定します。
詳しくは、「ホストとリソースプール」を参照してください。
-
このネットワークに属するすべてのPIFについて、
disallow-unplug=true
を設定します。-
次のコマンドを使用して、ネットワークに属するPIFのUUIDを見つけます:
xe pif-list <!--NeedCopy-->
-
リソースプール内のXenServerホストで次のコマンドを実行します:
xe pif-param-set disallow-unplug=true uuid=<pif_uuid> <!--NeedCopy-->
-
-
プールでクラスタリングを有効にします。リソースプール内のXenServerホストで次のコマンドを実行します:
xe cluster-pool-create network-uuid=<network_uuid> <!--NeedCopy-->
前の手順で作成したボンディングしたネットワークのUUIDを入力します。
クラスター化プールを破棄する
クラスター化されたプールは破棄できます。クラスター化されたプールを破棄した後もプールは引き続き存在しますが、クラスター化されなくなり、GFS2ストレージリポジトリを使用できなくなります。
クラスター化されたプールを破棄するには、次のコマンドを実行します:
xe cluster-pool-destroy cluster-uuid=<uuid>
クラスター化プールを管理する
クラスター化プールを管理する場合は、次の方法で、プールがクォーラムを失うリスクを軽減できます。
クラスター化プール上でホストを追加または削除する
クラスター化プールでホストを追加または削除する場合は、クラスター内のすべてのホストがオンラインであることを確認してください。
XenCenterを使用して、クラスター化プール上のホストを追加または削除できます。詳しくは、「プールへのサーバーの追加」 および「プールからのサーバーの削除」を参照してください。
xe CLIを使用して、クラスター化プール上のホストを追加または削除することもできます。詳しくは、「xe CLIを使用してホストをプールに追加する」および「リソースプールからXenServerホストを削除する」を参照してください。
ホストが正常にシャットダウンされるようにする
ホストは、正常にシャットダウンされると、再起動されるまで一時的にクラスターから削除されます。ホストは、シャットダウンされている間はクラスターのクォーラム値にカウントされません。そのホストがないことで他のホストがクォーラムを失うことはありません。
ただし、ホストは、強制的または予期せずにシャットダウンされた場合、オフラインになる前にクラスターから削除されることはありません。このホストは、クラスターのクォーラム値にカウントされます。シャットダウンされると、他のホストがクォーラムを失う可能性があります。
ホストを強制的にシャットダウンする必要がある場合は、まずクラスター内に稼働中のホストが何台あるかを確認してください。これはコマンドcorosync-quorumtool
で実行できます。コマンド出力では、稼働中ホストの数はTotal votes:
の値であり、クォーラムを維持するために必要な稼働中ホストの数はQuorum:
の値です。
-
稼働中ホストの数がクォレートを維持するために必要なホストの数と同じ場合は、ホストを強制的にシャットダウンしないでください。これを行うと、クラスター全体が隔離されます。
代わりに、ホストを強制的にシャットダウンする前に、他のホストの回復を試み、稼働中ホストの数を増やします。
-
稼働中ホストの数がクォレートを維持するために必要なホストの数に近い場合は、ホストを強制的にシャットダウンできます。ただし、これにより、プール内の他のホストに問題がある場合、クラスターは完全な隔離に対してより脆弱になります。
クラスターの回復性を高めるために、シャットダウンしたホストを常にできるだけ早く再起動するようにしてください。
保守モードを使用する
ホスト上で何かを実行することでホストがクォーラムを失う可能性がある場合は、その前に、ホストを保守モードにしてください。ホストが保守モードの場合、実行中の仮想マシンはプール内の別のホストに移行されます。また、そのホストがプールコーディネーターであった場合、その役割はプール内の別のホストに渡されます。操作によって保守モードのホストが自己隔離した場合でも、仮想マシンを失うことや、プールへのXenCenterの接続が失われることはありません。
保守モードのホストは、以降もクラスターのクォーラム値にカウントされます。
ホストが保守モードの場合は、クラスター化プールに含まれるそのホストのIPアドレスのみを変更できます。ホストのIPアドレスを変更すると、そのホストはクラスターから離れることになります。IPアドレスが正常に変更されると、そのホストはクラスターに再び参加します。ホストがクラスターに再び参加した後、保守モードを解除できます。
自己隔離しているかオフラインになっているホストを回復する
自己隔離されているホストを回復することは重要です。これらのクラスターメンバーは、オフラインになっている間は、クラスターのクォーラム数にカウントされ、接続可能なクラスターメンバーの数が減少します。この状況では、後続のホスト障害が発生することでクラスターがクォーラムを失い完全にシャットダウンされるリスクが高まります。
クラスター内にオフラインのホストがあると、特定の操作を実行できなくなります。クラスター化プールでは、プールのメンバーすべてがプールメンバーシップのすべての変更に同意しないと、変更は成功しません。クラスターメンバーが接続不可の場合は、XenServerにより、クラスターメンバーシップを変更する操作(ホストの追加や削除など)が行えなくなります。
ホストを回復不能としてマークする
1つまたは複数のオフラインのホストを回復できない場合は、クラスター化プールにそれらを消去するように指示できます。これらのホストはプールから永久に削除されます。ホストがクラスター化プールから削除されると、それらはクォーラム値にカウントされなくなります。
ホストを回復不能としてマークするには、次のコマンドを使用します:
xe host-forget uuid=<host_uuid>
消去したホストを回復する
クラスター化プールがホストを削除するように指示された後は、そのホストをプールに再度追加することはできません。
クラスター化プールに再参加させるには、ホストにXenServerを再インストールして、プールに対して新しいホストとして表示されるようにする必要があります。その後、通常の方法でホストをクラスター化プールに参加させることができます。
クラスター化プールのトラブルシューティング
クラスター化プールで問題が発生した場合は、「クラスター化プールのトラブルシューティング」を参照してください。
制約
- クラスター化プールでは、プールあたり16台までのホストのみがサポートされます。
- クラスター化プールで高可用性を有効にするには、ハートビートストレージリポジトリはGFS2ストレージリポジトリである必要があります。
- クラスタートラフィックの場合、少なくとも2つの異なるネットワークスイッチを使用するボンディングネットワークを使用することを強くお勧めします。このネットワークを他の目的に使用しないでください。
- XenCenterを使用してクラスターネットワークのIPアドレスを変更するには、クラスタリングとGFS2を一時的に無効にする必要があります。
- クラスターが稼働中で、クラスターに実行中の仮想マシンがある間は、クラスタリングネットワークのボンディングを変更しないでください。この操作により、クラスター内のホストがハード再起動(隔離)される可能性があります。
- クラスタリングが有効になっているホストが少なくとも1つ含まれるクラスタリングネットワーク上で、IPアドレスの競合(同じIPアドレスを持つホストが複数存在)が発生した場合、クラスタは正しく形成されず、必要なときにホストが隔離できなくなります。 この問題を解決するには、IPアドレスの競合を解決します。