Azure Event Hubs ジオ災害復旧

geo ディザスター リカバリーは、プライマリ名前空間からセカンダリ名前空間に名前空間の構成 (イベント ハブ、コンシューマー グループ、および設定) を継続的にレプリケートする、Azure Event Hubsのディザスター リカバリー機能です。 この機能を使用すると、リージョンの停止中にプライマリ名前空間からセカンダリ名前空間へのフェールオーバーを開始できます。

Note

この記事では、メタデータのみをレプリケートする geo ディザスター リカバリー機能について説明します。 データとメタデータの両方をレプリケートする geo レプリケーション機能の詳細については、「 geo レプリケーション」を参照してください。

可用性ゾーン サポートを備えたすべてアクティブな Azure Event Hubs クラスター モデルにより、ハードウェアおよびデータセンターの停止に対する回復性が提供されます。 ただし、リージョン全体とすべてのゾーンが使用できない障害が発生した場合は、geo ディザスター リカバリーを使用してワークロードとアプリケーションの構成を復旧できます。

この記事で説明する概念とワークフローは、一時的な停止ではなく、障害シナリオに適用されます。 Microsoft Azureでのディザスター リカバリーの詳細については、Azure アプリケーションのDisaster 復旧を参照してください。 geo ディザスター リカバリーを使用すると、プライマリからセカンダリへの 1 回限りのフェールオーバー移動をいつでも開始できます。 フェールオーバー移動により、その名前空間に選択したエイリアス名がセカンダリ名前空間を指します。 移動後、ペアリングは削除されます。 フェールオーバーは、開始されるとほぼ瞬時に完了します。

重要

  • この機能を使用すると、同じ構成で操作を瞬時に継続できますが、イベント データはレプリケートされません。 障害によってすべてのゾーンが失われた場合を除き、フェールオーバー後にプライマリ イベント ハブに保持されるイベント データは復旧可能であり、アクセスが復元されると、そこから履歴イベントを取得できます。 障害や災害に対処するために、イベント データをレプリケートし、アクティブ/アクティブ構成で対応する名前空間を操作する場合は、この geo ディザスター リカバリー機能セットに頼らず、 レプリケーションのガイダンスに従ってください。
  • Microsoft Entra ロールベースのアクセス制御 (RBAC) によるプライマリ名前空間内のエンティティへの割り当ては、セカンダリ名前空間にレプリケートされません。 セカンダリ名前空間にロールの割り当てを手動で作成して、アクセスをセキュリティで保護します。

geo ディザスター リカバリーのペアリングを設定し、フェールオーバーを開始するには、「 geo ディザスター リカバリーの構成」を参照してください。

基本的な概念と用語

ディザスター リカバリー機能は、メタデータディザスター リカバリーを実装し、プライマリとセカンダリのディザスター リカバリー名前空間に依存します。 geo ディザスター リカバリー機能は、Standard レベル、Premium レベル、および Dedicated レベル にのみ使用できます。 別名を使用して接続を確立するので、接続文字列に変更を加える必要はありません。

この記事では、次の用語を使用します。

  • エイリアス: 設定した障害復旧構成の名前です。 エイリアスは、1 つの不変の完全修飾ドメイン名 (FQDN) の接続文字列を示します。 アプリケーションでは、このエイリアスの接続文字列を使用して名前空間に接続します。
  • プライマリ/セカンダリ名前空間: エイリアスに対応する名前空間です。 プライマリ名前空間がアクティブとなり、メッセージを受け取ります (既存の名前空間の場合もあれば、新しい名前空間の場合もあります)。 セカンダリ名前空間はパッシブで、メッセージを受け取りません。 両者間のメタデータは同期しているため、どちらでもアプリケーション コードや接続文字列を変更せずにメッセージをシームレスに受信できます。 確実にアクティブな名前空間にだけメッセージを送信するためには、エイリアスを使用する必要があります。
  • メタデータ:名前空間に関連付けられているサービスのエンティティ (イベント ハブ、消費者グループなど) とそのプロパティです。 自動的にレプリケートされるのはエンティティとその設定だけです。 メッセージやイベントはレプリケートされません。
  • フェールオーバー: セカンダリ名前空間をアクティブ化するプロセスです。

サポートされている名前空間のペア

プライマリ名前空間とセカンダリ名前空間の次の組み合わせがサポートされています。

プライマリ名前空間層 許可されるセカンダリ名前空間層
Standard Standard、専用
Premium Premium
Dedicated Dedicated

重要

同じ専用クラスター内にある名前空間を組み合わせることはできません。 別々のクラスター内にある名前空間を組み合わせることができます。

フェールオーバーの考慮事項

フェールオーバーを計画する場合は、次の点を考慮してください。

  • 設計上、Event Hubs geo ディザスター リカバリーではデータはレプリケートされません。 そのため、プライマリ イベント ハブの古いオフセット値をセカンダリ イベント ハブで再利用することはできません。 次のいずれかの方法を使用して、イベント レシーバーを再起動します。

    • EventPosition.FromStart() - セカンダリ イベント ハブ上のすべてのデータを読み取る場合。
    • EventPosition.FromEnd() - セカンダリ イベント ハブへの接続時からすべての新しいデータを読み取る場合。
    • EventPosition.FromEnqueuedTime(dateTime) - 特定の日時からセカンダリ イベント ハブで受信したすべてのデータを読み取る場合。
  • フェールオーバー計画の時間要因を考慮してください。 たとえば、接続の喪失時間が 15 ~ 20 分を超えた場合にフェールオーバー開始の判断を下すことが考えられます。

  • データはレプリケートされないため、現在アクティブなセッションはレプリケートされません。 また、重複の検出やスケジュールされたメッセージが正しく機能しない可能性があります。 新しいセッション、スケジュールされたメッセージ、新しい重複処理が機能します。

  • 少なくとも 1 回は、複雑な分散インフラストラクチャのフェールオーバーを リハーサル する必要があります。

  • エンティティの同期には、ある程度時間がかかる場合があります (1 分あたり約 50 ~ 100 エンティティ)。

  • geo リカバリーのペアリングがアクティブな間、セカンダリ名前空間の管理プレーンの一部は読み取り専用になります。

  • ジオ復旧ペアリングがアクティブな間、セカンダリ名前空間のデータプレーンは読み取り専用です。 セカンダリ名前空間のデータ プレーンは、クライアント接続とアクセス制御の検証を有効にするために GET 要求を受け入れます。

プライベート エンドポイント

このセクションでは、プライベート エンドポイントを使用する名前空間で geo ディザスター リカバリーを使用する場合の考慮事項について説明します。 一般に Event Hubs でプライベート エンドポイントを使用する方法については、プライベート エンドポイントの構成に関するページを参照してください。

新しいペアリング

プライベート エンドポイントがあるプライマリ名前空間と、プライベート エンドポイントがないセカンダリ名前空間とのペアリングを作成しようとすると、ペアリングは失敗します。 ペアリングは、プライマリとセカンダリの両方の名前空間にプライベート エンドポイントがある場合にのみ成功します。 プライマリ名前空間とセカンダリ名前空間、およびプライベート エンドポイントを作成する仮想ネットワーク上で同じ構成を使用します。

Note

プライマリ名前空間とプライベート エンドポイントとセカンダリ名前空間をペアリングしようとすると、検証プロセスでは、セカンダリ名前空間にプライベート エンドポイントが存在するかどうかのみが確認されます。 エンドポイントが機能するかどうか、またはフェールオーバー後に機能するかどうかは確認されません。 フェールオーバー後に、プライベート エンドポイントがあるセカンダリ名前空間が予期したとおりに機能することをご自身で確認する必要があります。

プライベート エンドポイント構成がプライマリ名前空間とセカンダリ名前空間で同じであることをテストするには、仮想ネットワークの外部からセカンダリ名前空間に読み取り要求 (例: Get Event Hub) を送信し、サービスからエラー メッセージが表示されることを確認します。

既存のペアリング

プライマリ名前空間とセカンダリ名前空間のペアリングが既に存在する場合、プライマリ名前空間でのプライベート エンドポイントの作成は失敗します。 このエラーを解決するには、最初にセカンダリ名前空間にプライベート エンドポイントを作成してから、プライマリ名前空間用に作成します。

Note

セカンダリ名前空間には読み取り専用でアクセスできますが、プライベート エンドポイント構成を更新できます。

アプリケーションと Event Hubs 名前空間のディザスター リカバリー構成を作成するときは、プライマリとセカンダリの両方の Event Hubs 名前空間のプライベート エンドポイントを作成します。 これらのプライベート エンドポイントは、アプリケーションのプライマリ インスタンスとセカンダリ インスタンスの両方をホストする仮想ネットワークに接続します。

VNET-1VNET-2の 2 つの仮想ネットワークがあり、プライマリ名前空間とセカンダリ名前空間 (EventHubs-Namespace1-PrimaryEventHubs-Namespace2-Secondary) があるとします。 次の手順を実行します :

  • EventHubs-Namespace1-Primary で、VNET-1VNET-2 のサブネットを使用する 2 つのプライベート エンドポイントを作成します
  • EventHubs-Namespace2-Secondary で、VNET-1VNET-2 と同じサブネットを使用する 2 つのプライベート エンドポイントを作成します

プライベート エンドポイントと仮想ネットワーク

この方法の利点は、Event Hubs 名前空間に関係なく、アプリケーション レイヤーでフェールオーバーが発生する可能性があるということです。 次のシナリオで考えてみましょう。

アプリケーションのみのフェールオーバー: このシナリオでは、アプリケーションは VNET-1 に存在せず、 VNET-2に移動します。 プライマリ名前空間とセカンダリ名前空間の両方に対して VNET-1VNET-2 の両方でプライベート エンドポイントが構成されるため、アプリケーションは動作します。

Event Hubs 名前空間のみのフェールオーバー: このシナリオでは、両方のプライベート エンドポイントがプライマリ名前空間とセカンダリ名前空間の両方の仮想ネットワークで構成されているため、アプリケーションは動作します。

Note

仮想ネットワークの geo ディザスター リカバリーに関するガイダンスについては、「Virtual Network - ビジネス継続性」を参照してください。

役割ベースのアクセス制御 (RBAC)

Microsoft Entra ロールベースのアクセス制御 (RBAC) によるプライマリ名前空間内のエンティティへの割り当ては、セカンダリ名前空間にレプリケートされません。 セカンダリ名前空間にロールの割り当てを手動で作成して、アクセスをセキュリティで保護します。