フェデレーションタスクは、EventBridge イベントストリームを使用して、オープンソースの Federation Plugin 機能を実装します。フェデレーションタスクを構成することで、クラスター間でメタデータおよびメッセージの同期とレプリケーションが可能になります。
注意事項
-
フェデレーションタスクは現在、エクスチェンジフェデレーション(エクスチェンジ間のメッセージ同期)のみをサポートしています。キューのフェデレーションはまだ利用できません。
-
宛先の RabbitMQ インスタンスにおけるメッセージ最大サイズが、ソースインスタンスのメッセージ最大サイズと少なくとも同じ以上であることを確認してください。宛先の制限値が小さい場合、その制限を超えるメッセージはルーティングに失敗し、メッセージ同期が失敗する原因となります。
課金
フェデレーションタスクには追加料金が発生します。総費用は以下の 2 つのコンポーネントで構成されます。
総費用 = ApsaraMQ for RabbitMQ 料金 + EventBridge 転送料金
-
ApsaraMQ for RabbitMQ の料金:詳細については、「ApsaraMQ for RabbitMQ 課金ドキュメント」をご参照ください。
-
EventBridge の料金:詳細については、「EventBridge 課金ドキュメント」をご参照ください。
前提条件
-
ApsaraMQ for RabbitMQ インスタンス:ソースインスタンスおよび Vhost、または宛先インスタンスおよび Vhost が作成済みで利用可能であること。
-
EventBridge が有効化されていること。
-
オープンソース RabbitMQ クラスター(該当する場合):ソースまたは宛先がオープンソース RabbitMQ クラスターの場合、
rabbitmq_event_exchangeプラグインが有効になっていることを確認してください。詳細については、「rabbitmq_event_exchange プラグインの有効化」をご参照ください。
フェデレーションタスクの作成
フェデレーションタスクを作成するには、次の手順を完了します:タスクの作成、サービスの権限付与、クラスター情報の構成、タスクパラメーターの構成、タスクステータスの確認。
ステップ 1:タスクの作成
-
ApsaraMQ for RabbitMQ コンソールにログインします。
-
左側のナビゲーションウィンドウで、フェデレーションタスク をクリックします。
-
フェデレーションタスク ページで、タスクの作成 をクリックします。
ステップ 2:サービスの権限付与
初めてフェデレーションタスクを作成する際、システムにより自動的に AliyunServiceRoleForEventBridgeRabbitMQPlugin という名前のサービスリンクロールが作成されます。
Alibaba Cloud サービス権限付与 ダイアログボックスで、権限付与の詳細を確認し、確認 をクリックします。
ロールの説明:AliyunServiceRoleForEventBridgeRabbitMQPlugin は、EventBridge が RabbitMQ プラグイン機能を実装できるようにするためのサービスリンクロールです。
ステップ 3:クラスター情報の構成
フェデレーションタスク構成ページで、ソースおよび宛先クラスター情報を設定します。
クラスター構成パラメーター
|
カテゴリ |
パラメーター |
説明 |
例 |
|
オープンソース RabbitMQ |
URL |
オープンソース RabbitMQ クラスターのエンドポイント。デフォルトポートは 5672 です。 |
192.168.1.1 |
|
ユーザー名 |
オープンソース RabbitMQ クラスターのユーザー名。 |
admin |
|
|
パスワード |
オープンソース RabbitMQ クラスターのパスワード。 |
pass***word |
|
|
VPC |
オープンソース RabbitMQ クラスターが配置されているネットワークの VPC ID。 |
vpc-2zehiozskjdbb3*** |
|
|
vSwitch |
オープンソース RabbitMQ クラスターが配置されているネットワークの vSwitch ID。 |
vsw-m5hksicnqou22*** |
|
|
セキュリティグループ |
オープンソース RabbitMQ クラスターがデプロイされているホストのセキュリティグループ ID。 |
sg-2ca1jjhsdxciap*** |
|
|
仮想ホスト |
オープンソース RabbitMQ クラスターの Vhost。 |
test-001 |
|
|
ApsaraMQ for RabbitMQ |
インスタンス |
ApsaraMQ for RabbitMQ インスタンスのインスタンス ID。 |
amqp-cn-s1q2ksbq*** |
|
仮想ホスト |
ApsaraMQ for RabbitMQ インスタンスの Vhost。 |
test-001 |
ステップ 4:タスクパラメーターの構成
タスクパラメーター設定ページで、タスク設定を構成します。
タスクパラメーター構成
|
カテゴリ |
パラメーター |
説明 |
オプション / 例 |
|
タスクパラメーター |
タスク名 |
フェデレーションタスクの名前。 |
federation-task-001 |
|
順序付け |
メッセージを順序通りに同期するかどうかを指定します。 |
- Concurrent |
|
|
フェデレーションエクスチェンジパラメーター |
最大ホップ数 |
メッセージがフェデレーションリンクを経由して走査できる最大ホップ数。この制限を超えたメッセージは破棄されます。 |
1 |
|
エクスチェンジ式 |
1 つ以上のエクスチェンジ名にマッチする正規表現。この式に一致するエクスチェンジがソースクラスターに同期されます。 |
.* |
ステップ 5:タスクステータスの確認
フェデレーションタスク ページで、作成したタスクを確認できます。初期ステータスは 起動中 です。
ステータスが 実行中 に変化した場合、フェデレーションタスクは正常に開始されています。
ベストプラクティス
1. 最大ホップ数を慎重に計画する
-
シンプルなポイントツーポイント同期の場合は、値を 1 に設定します。
-
マルチホップのフェデレーショントポロジーの場合は、実際のトポロジーの深さに基づいて値を設定します。
-
メッセージがループ内で転送されるのを防ぐため、過剰に大きな値を設定しないでください。
2. 正確なエクスチェンジ式を使用する
-
同期が必要なエクスチェンジのみにマッチするよう、正確な正規表現を使用します。
-
.*のような広範な式は避け、不要なエクスチェンジの同期を防止します。 -
例:
-
「order」で始まるすべてのエクスチェンジにマッチ:
^order.* -
特定のエクスチェンジ名にマッチ:
^(order|payment|inventory)$
-
3. 適切な順序モードを選択する
-
同時:メッセージの順序が重要でないシナリオに最適です。スループットが高くなります。
-
逐次:注文処理や状態トランジションなど、厳密なメッセージ順序が必要なシナリオに最適です。
4. 監視とアラートの設定
-
定期的にフェデレーションタスクのステータスを確認します。
-
メッセージのバックログに対してアラートを設定します。
-
同期遅延を監視し、問題を早期に検出します。
5. ネットワークを計画する
-
ソースクラスターと宛先クラスター間のネットワーク遅延が許容範囲内であることを確認します。
-
クロスリージョン同期の場合は、ネットワーク安定性を向上させるために Express Connect または VPN の使用を検討します。
-
VPC およびセキュリティグループルールを計画し、ネットワーク接続を確保します。
よくある質問
フェデレーションタスクが「起動中」の状態で停止しています。どうすればよいですか?
以下の項目を確認してください。
-
ソースクラスターと宛先クラスターのネットワーク接続を確認します。
-
クラスターの認証情報(ユーザー名およびパスワード)が正しいことを確認します。
-
EventBridge が有効化され、権限付与されていることを確認します。
-
コンソール内のエラーメッセージを確認し、それに基づいてトラブルシューティングを行います。
メッセージ同期の遅延や損失をトラブルシューティングするにはどうすればよいですか?
-
遅延:ネットワーク帯域幅の使用量を確認し、メッセージサイズの最適化または帯域幅の増加を検討します。
-
損失:宛先インスタンスのメッセージサイズ制限がソースインスタンスの制限と少なくとも同等であることを確認します。最大ホップ数の設定が適切かどうかを確認します。エクスチェンジ式が対象のエクスチェンジに正しくマッチしているかを確認します。
フェデレーションタスク作成後に変更できますか?
フェデレーションタスクは作成後に変更できません。構成を変更するには、既存のタスクを削除して新しいタスクを作成してください。
フェデレーションは双方向同期をサポートしていますか?
フェデレーションタスクは単方向です。双方向同期を実現するには、逆方向の 2 つのフェデレーションタスクを作成してください。
参考資料
オープンソース Federation Plugin の詳細については、「Federation Plugin」をご参照ください。