Global Replicator は、ApsaraMQ for RocketMQ のクラスター間メッセージ同期を実現します。本ガイドでは、セットアップ、構成パラメータ、および FAQ について説明します。
前提条件
ApsaraMQ for RocketMQ インスタンスが必要です。以下のバージョンがサポートされています。
-
ApsaraMQ for RocketMQ 4.0 シリーズインスタンス。
説明4.0 シリーズのインスタンスの Standard Edition は、一方向同期のみをサポートします。
-
ApsaraMQ for RocketMQ 5.0 シリーズインスタンス。
このガイドの例では、ApsaraMQ for RocketMQ 5.0 シリーズのインスタンスをソースクラスターおよび宛先クラスターとして使用します。
仕様の推奨事項
トピックマッピングを構成すると、メッセージ同期は追加の TPS リソースを消費します。ソースおよび宛先の ApsaraMQ for RocketMQ インスタンスの両方に、十分なピーク送信 TPS およびピーク受信 TPS の容量があることを確認してください。
次の表に、仕様の推奨事項を示します。
たとえば、同期前の ApsaraMQ for RocketMQ インスタンスでは、ピークメッセージ送信 TPS は 10,000 メッセージ/秒、ピークメッセージ受信 TPS は 10,000 メッセージ/秒です。
ソースインスタンスおよび宛先インスタンスの推奨 TPS 構成:
|
タスクタイプ |
ソースクラスター |
宛先クラスター |
||||
|
ピーク TPS 制限 (メッセージ/秒) |
ピーク送信 TPS (メッセージ/秒) |
ピーク受信 TPS (メッセージ/秒) |
ピーク TPS 制限 (メッセージ/秒) |
ピーク送信 TPS (メッセージ/秒) |
ピーク受信 TPS (メッセージ/秒) |
|
|
一方向同期 |
30,000 |
10,000 |
20,000 |
20,000 |
10,000 |
10,000 |
|
双方向同期 |
40,000 |
20,000 |
20,000 |
40,000 |
20,000 |
20,000 |
-
インスタンスのメッセージングのピーク TPS 上限は、インスタンスの詳細 ページで確認できます。さまざまなインスタンス仕様の TPS 上限の詳細については、「仕様上の制限」をご参照ください。
-
宛先クラスターのピークメッセージ受信 TPS は、業務要件に基づいて調整できます。
Global Replicator タスクの作成
初めて Global Replicator を使用すると、[Alibaba Cloud サービス承認 - RocketMQ Global Replicator] ダイアログボックスが表示されます。[確認] をクリックすると、サービスにリンクされたロール AliyunServiceRoleForRMQDisasterRecovery が自動的に作成され、これにより ApsaraMQ for RocketMQ の Global Replicator 機能が有効になります。詳細については、「サービスにリンクされたロール」をご参照ください。
ステップ 1:タスクの作成
- Log on to the ApsaraMQ for RocketMQ console.ApsaraMQ for RocketMQ コンソールにログインします。
-
ナビゲーションペインで [Global Replicator] をクリックし、[タスクの作成] をクリックします。
-
[タスクの作成] ページで、必要なパラメータを構成し、[作成] をクリックします。
ページ上部で、[タスク名] を
rocket-testに設定し、[タスクタイプ] で [一方向バックアップ:ソースクラスターから宛先クラスターへデータを同期] を選択し、必要に応じて [タスクの説明] を入力します。左右のペインでソースクラスターと宛先クラスターを構成します。ペイン間の矢印は同期方向を示します。次の表では、さまざまなタイプのソースクラスターおよび宛先クラスターの構成方法について説明します。
ApsaraMQ for RocketMQ
パラメータ
説明
例
バージョン
ApsaraMQ for RocketMQ インスタンスのバージョンを選択します。
-
4.0 シリーズのインスタンス
-
5.0 シリーズのインスタンス
5.0 シリーズのインスタンス
[リージョン]
ApsaraMQ for RocketMQ インスタンスのリージョンを選択します。
中国 (杭州)
[インスタンス]
ApsaraMQ for RocketMQ インスタンスを選択します。
rmq-cn-778***
認証モード
-
構成不要
-
ACL ベースの認証
ACL ベースの認証
ユーザー名
ユーザー名を選択します。
yS8x01****
セキュリティグループ ID
ApsaraMQ for RocketMQ インスタンスをホストする ECS インスタンスのセキュリティグループ。このパラメーターは、[バージョン] が 5.0 シリーズのインスタンスに設定されている場合に必須です。
-
インバウンドルール:要件なし。
-
アウトバウンドルール:
-
ポリシー:許可
-
プロトコル:カスタム TCP
-
宛先:CIDR ブロックには、クラスターの vSwitch のすべての CIDR ブロックを含める必要があります。ポート範囲には 8080 と 8081 を含める必要があります。
-
sg-2ze4jlbqy2s40pc4****
フィルター条件システム構成
(オプション) メッセージにカスタム属性 (ユーザープロパティ) を追加できます。コンシューマーは、SQL-92 構文を使用したサブスクリプションポリシーに基づいてメッセージをフィルタリングできます。
-
キー:ユーザープロパティのキー。
-
ソースクラスター値:ソースクラスターからのメッセージに追加されるユーザープロパティの値。
-
宛先クラスター値:宛先クラスターからのメッセージに追加されるユーザープロパティの値。
次のコードは、SQL-92 サブスクリプションフィルタリングの例を示しています。
String sqlStr = "{Key} IS NOT NULL AND {Key} = {Source/Destination Cluster Value}"; consumer.subscribe(MqConfig.TOPIC, MessageSelector.bySql(sqlStr));--
Apache RocketMQ
パラメータ
説明
例
アクセスポイント
アクセスポイントの形式は
{ドメイン名/IP}:{ポート番号}です。XX.XX.XX.XX:8080
認証モード
-
構成不要
-
ACL ベースの認証
ACL ベースの認証
ユーザー名
必要なユーザー名を入力します。
yS8x01****
パスワード
必要なパスワードを入力します。
F17R4to****
ネットワークタイプ
-
パブリックネットワーク
-
VPC
パブリックネットワーク
[リージョン]
[ネットワークタイプ] を VPC に設定した場合、このパラメーターは必須です。Apache RocketMQ クラスターがデプロイされているリージョンを選択します。
中国 (杭州)
VPC
[ネットワークタイプ] を VPC に設定する場合、このパラメーターは必須です。Apache RocketMQ クラスターがデプロイされている VPC を選択してください。
vpc-bp17fapfdj0dwzjkd****
[vSwitch]
[ネットワークタイプ] を VPC に設定した場合、このパラメーターは必須です。Apache RocketMQ クラスターがデプロイされている vSwitch を選択します。
vsw-bp1gbjhj53hdjdkg****
セキュリティグループ ID
[ネットワークタイプ] を VPC に設定した場合、このパラメーターは必須です。Apache RocketMQ クラスターがデプロイされているセキュリティグループを選択します。
-
インバウンドルール:要件なし。
-
アウトバウンドルール:
-
ポリシー:許可
-
プロトコル:カスタム TCP
-
宛先: CIDR ブロックには、すべての Apache RocketMQ ノードの CIDR ブロックを含める必要があります。ポート範囲には、すべての Apache RocketMQ ノードのサービスポートを含める必要があります。デフォルトポートは 9876、10911、10909 です。NameServer または broker のポートを変更した場合は、更新後のポートを指定する必要があります。
-
sg-2ze4jlbqy2s40pc4****
フィルター条件システム構成
(オプション) メッセージにカスタム属性 (ユーザープロパティ) を追加できます。コンシューマーは、SQL-92 構文を使用したサブスクリプションポリシーに基づいてメッセージをフィルタリングできます。
-
キー:ユーザープロパティのキー。
-
ソースクラスター値:ソースクラスターからのメッセージに追加されるユーザープロパティの値。
-
宛先クラスター値:宛先クラスターからのメッセージに追加されるユーザープロパティの値。
次のコードは、SQL-92 サブスクリプションフィルタリングの例を示しています。
String sqlStr = "{Key} IS NOT NULL AND {Key} = {Source/Destination Cluster Value}"; consumer.subscribe(MqConfig.TOPIC, MessageSelector.bySql(sqlStr));--
-
ステップ 2:トピックマッピングの構成
-
タスクの詳細ページで、ナビゲーションペインの [メッセージ同期] をクリックします。
-
[一括マッピング] または [マッピングの追加] をクリックして、ダイアログボックスで同期用のトピックマッピングを構成します。
-
一括マッピング:必要なトピックマッピングを構成して選択し、[OK] をクリックします。
-
マッピングの追加:必要なトピックマッピングを構成し、[OK] をクリックします。
説明-
ソースクラスターが Apache RocketMQ クラスターの場合、メッセージ同期用のグループを指定する必要があります。業務ですでに使用されているグループは使用しないでください。
-
メッセージ同期は、トピックマッピングを構成した後にのみ開始されます。
-
ステップ 3 (オプション):コンシューマー進捗同期の有効化
コンシューマー進捗の同期は、トピックに対するグループの現在のコンシューマー進捗を宛先クラスターに複製します。詳細については、「コンシューマー進捗の同期」をご参照ください。
コンシューマークライアント構成
この例では、双方向同期タスクによって、ソースクラスター (中国 (上海) リージョン内の ApsaraMQ for RocketMQ インスタンス) と宛先クラスター (中国 (杭州) リージョン内の ApsaraMQ for RocketMQ インスタンス) が接続されます。フィルター条件として、キーが Region、ソースクラスターの値が Shanghai、宛先クラスターの値が Hangzhou に設定されています。
中国 (上海) リージョン内のコンシューマークライアントがローカルで生成されたデータのみを消費するようにするには、カスタム属性を使用してメッセージをフィルター処理します。詳細については、「イベントパターン」をご参照ください。
-
メッセージをサブスクライブし、単一のカスタム属性に基づいてフィルターします。
String topic = "topic";
// ローカルで生成されたメッセージのみをサブスクライブします。
// ローカルで生成されたメッセージの場合、ローカルプロデューサーアプリケーションがこのキーを設定しないため、ユーザープロパティの Region キーは NULL です。
FilterExpression filterExpression = new FilterExpression("Region IS NULL", FilterExpressionType.SQL92);
simpleConsumer.subscribe(topic, filterExpression);
-
フィルタリングせずにトピック内のすべてのメッセージをサブスクライブします。
String topic = "topic";
// すべてのメッセージをサブスクライブします。
FilterExpression filterExpression = new FilterExpression("True", FilterExpressionType.SQL92);
simpleConsumer.subscribe(topic, filterExpression);