N1 Provisioning Server ソフトウェアは、ファーム内の全デバイスの可用性を積極的かつ自動的に監視して、論理サーバーファームデバイスの自動フェイルオーバーを実現します。 この監視を有効にするための特別な構成は必要ありません。 あるデバイスが使用不能であることをソフトウェアが検出した場合は、その物理デバイスを未使用デバイスのプールの同一デバイスと交換するため、ソフトウェアは必要な手順を自動的に実行します。 障害のある物理デバイスの交換では、障害のあるデバイスの役割を新しいデバイスが継承できるように、システムは構成を複製し、ストレージを新しいデバイスに論理的に再接続します。
障害が検出されると、システムは N1 Provisioning Server のキューイングメカニズムにフェイルオーバー「ジョブ」要求を発行して、フェイルオーバープロセスを開始します。 すべてのファームの起動とファームの更新の要求を処理するためにも、この同じキューイングメカニズムが使用されます。 現在の一連のタスクとそのステータスを表示するには、request -l コマンドを実行します。
監視システムがデバイス障害を検出する際のフェイルオーバー動作を指定する、次の 2 つのオプションがあります。
自動フェイルオーバーは、キューで replacefaileddevice 要求を発行し自動的に処理する N1 Provisioning Server から構成されます。 ユーザーの操作は必要ありません。
手動フェイルオーバーは、障害のあるデバイスを交換するための要求キューに、ブロックされた要求として replacefaileddevice 要求を発行する N1 Provisioning Server から構成されます。 要求を処理し、デバイスを交換するためには、要求をブロック解除する必要があります。 このためには、コマンド request -u request-ID を実行します。
ブロックされたフェイルオーバー要求は、(Control Center を介して行われるファーム更新要求を含む) そのファームに対するそれ以降のすべての要求をブロックします。 フェイルオーバー要求がブロック解除されるか削除されるまで、システムはそのファームに対するすべての変更を処理しません。
自動オプションを使用すると、要求がシステムの要求キューに入った時点で直ちにフェイルオーバーが処理されます。 手動オプションを使用すると、フェイルオーバー要求はシステムの要求キューでブロックされます。 その結果、ユーザーが要求をブロック解除してフェイルオーバーを許可するか、要求を削除してフェイルオーバーを中止するまで、ブロックされたフェイルオーバー要求と、障害のあるデバイスのファームに対するそれ以降のすべての要求は処理されません。
サーバーには実際には障害が発生しておらず、使用不能になっていただけである場合は、自動フェイルオーバーは多くのリソースを消費する可能性があります。 この場合、不必要なデバイス交換が行われる可能性があります。
フェイルオーバーメカニズムの動作を構成するには、/etc/opt/terraspring/tspr.properties ファイルのプロパティを変更します。
com.terraspring.cs.services.DeviceStatus.blockReqFailedDevice プロパティが false に設定されている場合、検出されたすべてのデバイス障害は、ブロックされたフェイルオーバー要求にはなりません。 このプロパティが true に設定されている場合は、検出されたすべてのデバイス障害はブロックされたフェイルオーバー要求になります。 このプロパティはデフォルトで true に設定されています。これが推奨設定です。
ファームデバイスの障害が検出されると、そのファームを管理する N1 Provisioning Server のセグメントマネージャに対して、監視ソフトウェアはデバイスの DOWN イベントを送信します。
監視ソフトウェアがデバイスの DOWN イベントを送信する対象は、アクティブなファームのみです。
セグメントマネージャが監視ソフトウェアから DOWN イベントを受信すると、セグメントマネージャは次の処理を実行します。
ブロックされた replacePhysicalDevices 要求が、そのデバイスを所有するファームのファームマネージャに送信されます。
操作の警告を通知するため、クリティカルエラーメッセージがログファイルに記録されます。 セグメントマネージャにより生成されるクリティカルメッセージには、障害の発生したデバイス名とそれに対応するファーム ID が含まれます。
クリティカルなファームデバイス障害のメッセージを受け取ったら、コントロールプレーンサーバーで次の手続きを実行します。
自動フェイルオーバーのプロパティが true に設定されている場合は、処置は必要ありません。
次のように入力して、ファームの現在の要求を表示します。
request -lf farm ID |
リストを確認し、ファームのセグメントマネージャにより生成された、ブロックされた replacePhysicalDevices 要求の requestID を取得します。
状態が QUEUED_BLOCKED と表示されている場所で、replacePhysicalDevice 要求により requestID を特定できます。 replacePhysicalDevices 要求の 2 番目の引数で、障害のあるデバイスの ID が指定されています。
実際に物理デバイスに障害が発生していて、見かけだけのエラーではないことを確認します。 詳細については、「障害のあるコントロールプレーンサーバーの処理」を参照してください。 一時的なネットワーク障害が、見かけだけのエラーの原因になることがあります。
障害のあるデバイスを交換した後、次のように入力して replacePhysicalDevices 要求を削除します。
request -d request-ID |