Azure Service Bus で使用されるメッセージ キューと発行/サブスクライブ トピックを使用して、エンタープライズ メッセージ ブローカー完全に管理します。 このサービスは、使用側がメッセージを受信する準備ができるまで、ブローカー (キューなど) にメッセージを格納します。
次のような利点があります。
- 競合するワーカー間での負荷分散。
- サービスとアプリケーションの境界を越えてデータと制御を安全にルーティングおよび転送します。
- 高い信頼性を必要とするトランザクション作業の調整。
Service Bus の使用方法の詳細については、Azure Service Bus メッセージング 参照してください。 オンプレミス環境とクラウド環境間でアプリケーションとサービスを接続するメッセージングを設定する方法について説明します。
Service Bus が信頼性の高いワークロードにどのように貢献するかを理解するには、次のトピックを参照してください。
手記
以前は、可用性ゾーンを有効にするためにプロパティ zoneRedundant
を true
に設定する必要がありましたが、この動作は既定で可用性ゾーンを有効にするように変更されました。 既存の名前空間は、可能な限り可用性ゾーンに移行され、プロパティ zoneRedundant
は非推奨になります。 可用性ゾーンが有効になっている場合でも、zoneRedundant
プロパティは false
として表示される場合があります。
次のセクションは、Azure Service Bus と信頼性に固有のものです。
- 設計に関する考慮事項
- 構成チェックリスト
- 推奨される構成オプション
- ソース成果物
設計に関する考慮事項
Azure Service Bus アップタイム SLA を使用して信頼性を最大化します。 適切に構成されたアプリケーションは、メッセージを送受信したり、デプロイされたキューまたはトピックに対して他の操作を実行したりできます。 詳細については、Service Bus SLAを参照してください。
その他の設計上の考慮事項は次のとおりです。
Service Bus Premium および Standard メッセージングレベルのに関するドキュメントに加えて、次の機能は Premium Stock Keeping Unit (SKU) でのみ使用できます。
- 専用リソース。
- 仮想ネットワーク統合: Service Bus インスタンスに接続できるネットワークを制限します。 サブネットでサービス エンドポイントを有効にする必要があります。 仮想ネットワークの実装時にサポートされていない信頼された Microsoft サービスがあります (たとえば、Event Grid との統合)。 詳細については、「特定の仮想ネットワークから Azure Service Bus 名前空間へのアクセスを許可する」を参照してください。
- プライベート エンドポイント。
- IP フィルタリング/ファイアウォールの: 定義された
IPv4
アドレスまたはIPv4
アドレス範囲のみに接続を制限します。 - イベントグリッド統合: 利用可能なイベントタイプ。
- メッセージング ユニットをスケーリングします。
- geo ディザスター リカバリー (ペアの名前空間)。
- ジオ・レプリケーション (リージョン間の完全なデータレプリケーション)。
- CMK (カスタマー マネージド キー): Azure Service Bus は保存データを暗号化し、アクセス時に自動的に暗号化を解除しますが、顧客は独自のカスタマー マネージド キーを持ち込むこともできます。
地理的災害復旧と可用性ゾーンで Service Bus をデプロイすると、サービス レベル操作 (SLO) は大幅に増加しますが、稼働時間のSLAには変更がありません。
チェックリスト
信頼性を念頭に置いて Azure Service Bus を構成しましたか?
- Azure Service Bus の Premium レベルの利点を評価します。
- Service Bus メッセージング例外 が適切に処理されていることを確認します。
- 高度なメッセージング キュー プロトコル (AMQP) を使用して Service Bus に接続し、可能な場合はサービス エンドポイントまたはプライベート エンドポイントを使用します。
- Service Bus メッセージング を使用したパフォーマンス向上のためののベスト プラクティスを確認します。
- 障害や災害から保護するために、送信側と受信側に geo レプリケーションを実装します。
- ジオディザスターを設定する
- キューとトピックを含むミッション クリティカルなメッセージングが必要な場合は、Geo-Disaster Recovery で Service Bus Premium をお勧めします。
- Service Bus 名前空間の高可用性を実装します。
- 関連するメッセージが保証された順序で配信されていることを確認します。
- JMS API を使用して、さまざまな Java Messaging Service (JMS) 機能を評価します。
- .NET Nuget パッケージを使用して Service Bus メッセージング エンティティと通信します。
- メッセージの送受信時の一時的な障害処理の回復性を実装します。
- メッセージング ユニットの自動スケーリングを実装します。
構成に関する推奨事項
Azure Service Bus を構成するときの信頼性を最適化するには、次の推奨事項を検討してください。
勧告 | 説明 |
---|---|
Azure Service Bus の Premium レベルの利点を評価します。 | プラットフォームでサポートされている停止と障害保護を利用するには、Service Bus の Premium レベルへの移行を検討してください。 |
AMQP プロトコルを使用して Service Bus に接続し、可能な場合はサービス エンドポイントまたはプライベート エンドポイントを使用します。 | この推奨事項は、Azure バックボーン上のトラフィックを保持します。 注: Microsoft.Azure.ServiceBus および Windows.Azure.ServiceBus 名前空間の既定の接続プロトコルは AMQP です。 |
障害や災害から保護するために、送信側と受信側に geo レプリケーションを実装します。 | Standard レベルでは、送信側と受信側の geo 冗長性の実装のみがサポートされます。 Azure リージョンで障害や障害が発生すると、ソリューションのダウンタイムが発生する可能性があります。 |
ジオディザスターを設定する | - アクティブ/アクティブ - アクティブ/パッシブ - ペアの名前空間 (アクティブ/パッシブ) - Geo-Replication (完全なデータ レプリケーションを使用するアクティブ/パッシブ) - 注: セカンダリ リージョンは、Azure のペアリージョンである必要があります。 |
キューとトピックを含むミッション クリティカルなメッセージングが必要な場合は、Geo-Disaster Recovery で Service Bus Premium をお勧めします。 | パターンの選択は、ビジネス要件と目標復旧時間 (RTO) によって異なります。 |
Service Bus 名前空間の高可用性を実装します。 | Premium レベルでは、名前空間レベルでの geo ディザスター リカバリーとレプリケーションがサポートされます。 このレベルでは、Premium レベルでは、プライマリとセカンダリのディザスター リカバリー名前空間を使用したメタデータ ディザスター リカバリーの高可用性が提供されます。 |
関連するメッセージが保証された順序で配信されていることを確認します。 | 各メッセージにパーティション キー、セッション ID、またはメッセージ ID を設定して、関連するメッセージがメッセージング エンティティ内の同じパーティションに確実に送信されるようにする必要があることに注意してください。 |
JMS API を使用して、さまざまな JMS 機能を評価します。 | JMS 2.0 API (およびそのソフトウェア開発キット (SDK) で使用できる機能は、ネイティブ SDK で使用できる機能と同じではありません。 たとえば、Service Bus セッションは JMS では使用できません。 |
メッセージの送受信時の一時的な障害処理の回復性を実装します。 | スループットを維持し、メッセージの損失を防ぐために、送受信操作に適した一時的な障害処理とエラー処理を実装することが不可欠です。 |
メッセージング ユニット 自動スケーリングを実装して、ワークロードに十分なリソースを確保します。 |
ソース成果物
プライベート エンドポイントを使用していない Premium Service Bus インスタンスを識別するには、次のクエリを使用します。
Resources | where type == 'microsoft.servicebus/namespaces' | where sku.tier == 'Premium' and isempty(properties.privateEndpointConnections)
Premium レベルにない Service Bus インスタンスを識別するには、次のクエリを使用します。
Resources | where type == 'microsoft.servicebus/namespaces' | where sku.tier != 'Premium'