Azure Elastic SAN 上でクラスター化アプリケーションをデプロイする
Azure Elastic SAN ボリュームは、同時に複数のコンピューティング クライアントにアタッチできるため、クラスター アプリケーションを Azure にデプロイまたは移行できます。 Windows Server フェールオーバー クラスター (WSFC) や Pacemaker などの Elastic SAN ボリュームを共有するには、クラスター マネージャーを使用する必要があります。 クラスター マネージャーは、クラスター ノードの通信と書き込みロックを処理します。 Elastic SAN では、SMB または NFS 経由でアクセスできるフル マネージド ファイルシステムがネイティブで提供されていません。
Elastic SAN ボリュームを共有ボリュームとして使用する場合、可用性ゾーンまたはリージョン間で共有できます。 ローカル冗長ストレージ内のボリュームをゾーン間で共有すると、ボリュームとクライアント間の待機時間が長くなるため、パフォーマンスが低下します。
制限事項
- Elastic SAN 接続スクリプトを使用して、共有ボリュームを Virtual Machine Scale Sets 内の仮想マシンまたは可用性セット内の仮想マシンにアタッチできます。 障害ドメインの配置はサポートされていません。
- 共有ボリュームでサポートされるセッションの最大数は 128 です。
- 個々のクライアントでは、パフォーマンスを向上するために、個々のボリュームに対して複数のセッションを作成できます。 たとえば、各クライアントで 32 個のセッションを作成する場合、1 つのボリュームに接続できるクライアントは 4 つのみです。
Elastic SAN のその他の制限については、「Azure Storage 機能のサポート」を参照してください。
しくみ
Elastic SAN 共有ボリュームでは、SCSI-3 Persistent Reservationsを使用して、イニシエーター (クライアント) で共有 Elastic SAN ボリュームへのアクセスを制御できるようにします。 このプロトコルを使用すると、イニシエーターにより、Elastic SAN ボリュームへのアクセスの予約や、他のイニシエーターによる書き込み (読み取り) アクセスの制限を行うことができます。また、既定でセッションの有効期間を超えてボリューム上に予約を保持することもできます。
SCSI-3 PR には、クラスター シナリオで共有ボリューム内のデータの一貫性と整合性を維持する上できわめて重要な役割があります。 クラスター内のコンピューティング ノードでは、クラスター アプリケーションによって選択された予約に基づいて、アタッチされた Elastic SAN ボリュームの読み取りまたは書き込みを行うことができます。
永続的な予約フロー
次の図は、2 ノード クラスター構成のデータベース アプリケーションの例を示しています。ここでは、ノード間のフェールオーバーを有効にするために SCSI-3 PR が使用されています。
フローは次のとおりです。
- Azure VM1 と Azure VM2 で実行されている両方のクラスター化アプリケーションは、Elastic SAN ボリュームに対して読み取りまたは書き込みを行う意図を登録します。
- その後、VM1 上のアプリケーション インスタンスが、そのディスクに書き込むための排他的な予約を取得します。
- この予約がボリュームに適用され、データベースはボリュームに排他的に書き込むことができるようになります。 VM2 上のアプリケーション インスタンスからの書き込みは失敗します。
- VM1 上のアプリケーション インスタンスがダウンすると、VM2 上のインスタンスはデータベースのフェールオーバーを開始し、ボリュームの制御を引き継ぐことができます。
- この予約はボリュームに適用され、VM1 からの書き込みは受け入れられなくなります。 VM2 からの書き込みのみが受け入れられます。
- クラスター化アプリケーションは、データベースのフェールオーバーを完了し、VM2 からの要求を処理できます。
次の図は、複数のノードで構成される別の一般的なクラスター化されたワークロードを示しています。これは、機械学習モデルのトレーニングなど、並列プロセスを実行するために Elastic SAN ボリュームからデータを読み取ります。
フローは次のとおりです。
- すべての VM で実行されているクラスター化アプリケーションは、Elastic SAN ボリュームに対して読み取りまたは書き込みを行う意図を登録します。
- VM1 上のアプリケーション インスタンスは、他の VM からのボリュームに対する読み取りは可能にしたまま、ボリュームへの書き込みの排他的な予約を取得します。
- この予約がボリュームに適用されます。
- クラスター内のすべてのノードは、ボリュームから読み取ることができるようになります。 クラスター内のすべてのノードに代わって、1 つのノードだけが結果をボリュームに書き戻します。
サポートされている SCSI PR コマンド
Elastic SAN ボリュームでは、次のコマンドがサポートされています。
ボリュームを操作するには、適切な永続的予約アクションから開始します。
- PR_REGISTER_KEY
- PR_REGISTER_AND_IGNORE
- PR_GET_CONFIGURATION
- PR_RESERVE
- PR_PREEMPT_RESERVATION
- PR_CLEAR_RESERVATION
- PR_RELEASE_RESERVATION
PR_RESERVE、PR_PREEMPT_RESERVATION、または PR_RELEASE_RESERVATION を使用する場合は、次のいずれかの永続的な予約の種類を指定します。
- PR_NONE
- PR_WRITE_EXCLUSIVE
- PR_EXCLUSIVE_ACCESS
- PR_WRITE_EXCLUSIVE_REGISTRANTS_ONLY
- PR_EXCLUSIVE_ACCESS_REGISTRANTS_ONLY
- PR_WRITE_EXCLUSIVE_ALL_REGISTRANTS
- PR_EXCLUSIVE_ACCESS_ALL_REGISTRANTS
永続的な予約の種類によって、クラスター内の各ノードからのボリュームへのアクセスが決まります。
永続的な予約の種類 | 予約の所有者 | Registered | その他 |
---|---|---|---|
予約なし | 該当なし | 読み取り/書き込み | 読み取り/書き込み |
排他的書き込み | 読み取り/書き込み | 読み取り専用 | 読み取り専用 |
排他的アクセス | 読み取り/書き込み | アクセス許可なし | アクセス許可なし |
排他的書き込み - 登録者のみ | 読み取り/書き込み | 読み取り/書き込み | 読み取り専用 |
排他的アクセス - 登録者のみ | 読み取り/書き込み | 読み取り/書き込み | アクセス許可なし |
排他的読み取り - すべての登録者 | 読み取り/書き込み | 読み取り/書き込み | 読み取り専用 |
排他的アクセス - すべての登録者 | 読み取り/書き込み | 読み取り/書き込み | アクセス許可なし |
次のアクションを使用する場合は、永続的な予約キーを指定する必要もあります。
- PR_RESERVE
- PR_REGISTER_AND_IGNORE
- PR_REGISTER_KEY
- PR_PREEMPT_RESERVATION
- PR_CLEAR_RESERVATION
- PR_RELEASE-RESERVATION。