RabbitMQ コネクタを作成して、ApsaraMQ for RabbitMQ から ApsaraMQ for Kafka にデータを同期します。
前提条件
-
EventBridge を有効化し、必要な権限を付与していること。
-
OSS サービスを有効化し、バケットを作成していること。 詳細については、「コンソールでのバケットの作成」をご参照ください。
-
SAE サービスを有効化していること。 詳細については、「準備」をご参照ください。
-
VPC と vSwitch を作成していること。
-
ApsaraMQ for Kafka インスタンスを購入し、デプロイしていること。 詳細については、「インスタンスの購入とデプロイ」をご参照ください。
ステップ 1:ApsaraMQ for RabbitMQリソースの作成
-
ApsaraMQ for RabbitMQ コンソールにログインし、インスタンスを作成します。 詳細については、「インスタンスの作成」をご参照ください。
-
インスタンスをクリックして詳細ページを開き、次のリソースを作成します。
-
ナビゲーションウィンドウで [静的ユーザー名/パスワード] をクリックし、[ユーザー名/パスワードの作成] をクリックします。 詳細については、「ステップ2:リソースの作成」をご参照ください。
ユーザーを作成した後、ユーザー名とパスワードを保存します。 [インスタンス ID]、[アクセスキー]、[ユーザー名]、[パスワード]、[作成時刻] などの情報を含む新しい認証情報がリストに表示されます。 [操作] 列の [削除] をクリックして、認証情報を削除できます。
-
ナビゲーションウィンドウで [Vhost リスト] をクリックし、[Vhost の作成] をクリックします。 詳細については、「ステップ2:リソースの作成」をご参照ください。
-
ナビゲーションウィンドウで [キューリスト] をクリックします。 [現在の Vhost] の横にある [変更] ドロップダウンリストから作成した Vhost を選択し、[キューの作成] をクリックします。 詳細については、「ステップ2:リソースの作成」をご参照ください。
-
ステップ 2:コネクタの作成
-
RabbitMQ コネクタファイルをダウンロードし、作成した OSS バケットにアップロードします。 詳細については、「ファイルのアップロード」をご参照ください。
-
ApsaraMQ for Kafka コンソールにログインし、概要 ページの リソースの分布 セクションでリージョンを選択します。
-
左側のナビゲーションペインで、を選択します。
-
タスクリスト ページで、タスクリストの作成 をクリックします。
-
タスクの作成 パネルで、Task Name と以下のパラメーターを設定します。
-
タスクの作成
-
Source (ソース) 設定ウィザードで、データプロバイダー で Apache Kafka Connect を選択し、次へ をクリックします。
-
コネクタの設定 ウィザードで、次のパラメーターを設定し、次へ をクリックします。
項目
パラメーター
説明
Kafka Connect プラグイン
[バケット]
OSS バケットを選択します。
[ファイル]
アップロードした .zip ファイルを選択します。
ApsaraMQ for Kafka リソース情報
[Kafka パラメータ設定]
Source Connect を選択します。
[Kafka インスタンス]
前提条件で作成したインスタンスを選択します。
[Virtual Private Cloud (VPC)]
インスタンスのデプロイに基づいて自動的に入力されます。 この値は変更できません。
[vSwitches]
インスタンスのデプロイに基づいて自動的に入力されます。 この値は変更できません。
[Security Group]
セキュリティグループを選択します。
Kafka Connect 設定情報
現在のZIPパッケージ内のプロパティファイルを解析
properties ファイルの作成 を選択します。.ZIP ファイルに含まれている SourceConnector の .properties ファイルを選択します。パスは /etc/source-xxx.properties です。入力ボックスで、次のフィールドの値を更新します。
-
connector.class:コネクタの Java クラス。 この値は変更しないでください。
-
tasks.max:タスクの最大数。
-
rabbitmq.host: RabbitMQ インスタンスの VPC エンドポイントを入力します。エンドポイントは、インスタンスの詳細 ページの エンドポイント情報 セクションで確認できます。
-
rabbitmq.username:ステップ 1:ApsaraMQ for RabbitMQリソースの作成で作成した ApsaraMQ for RabbitMQ インスタンスの静的ユーザー名を指定します。
-
rabbitmq.password:ステップ 1:ApsaraMQ for RabbitMQリソースの作成で作成した ApsaraMQ for RabbitMQ インスタンスの静的パスワードを指定します。
-
rabbitmq.virtual.host:ステップ 1:ApsaraMQ for RabbitMQリソースの作成で作成した Vhost を指定します。
-
kafka.topic:宛先の Kafka トピック。 データを転送する前に、このトピックを作成する必要があります。
-
rabbitmq.queue:ステップ 1:ApsaraMQ for RabbitMQリソースの作成で作成したキューを指定します。
次のコードに例を示します。
connector.class=com.ibm.eventstreams.connect.rabbitmqsource.RabbitMQSourceConnector name=rabbitmq-source-connector # ApsaraMQ for RabbitMQ インスタンスの VPC エンドポイント。 rabbitmq.host=xxx # ApsaraMQ for RabbitMQ インスタンスの静的パスワード。 rabbitmq.password=xxx # ApsaraMQ for RabbitMQ インスタンスの静的ユーザー名。 rabbitmq.username=xxx # ApsaraMQ for RabbitMQ インスタンスの Vhost。 rabbitmq.virtual.host=xxx # 宛先 Kafka トピック。 kafka.topic=xxx # ApsaraMQ for RabbitMQ インスタンスのキュー。 rabbitmq.queue=xxx tasks.max=4 -
-
インスタンス設定 ウィザードで、次のパラメーターを設定し、次へ をクリックします。
項目
パラメーター
説明
ワーカー仕様
[ Worker 仕様]
ワーカー仕様を選択します。
[Worker の最小数]
ワーカーの最小数を設定します。
[Worker の最大数]
ワーカーの最大数を設定します。 この値はタスクの最大数を超えることはできません。
[水平スケーリングしきい値 (%)]
スケーリングは、CPU およびメモリ使用率が設定されたしきい値を上回るか下回るとトリガーされます。Worker の最小数とWorker の最大数の値が等しくない場合にのみ有効です。
Kafka Connect ワーカー設定
[Worker の依存関係を自動的に作成]
このチェックボックスを選択することを推奨します。 システムは、選択した Kafka インスタンスに Kafka Connect が必要とする内部トピックとコンシューマーグループを自動的に作成し、必要な設定を自動入力します。 これらには以下が含まれます。
-
オフセットトピック:ソースデータのオフセットを格納します。 トピック名は
connect-eb-offset-<task_name>の形式になります。 -
Config トピック:コネクタとタスクの設定を格納します。 トピック名は
connect-eb-config-<task_name>の形式になります。 -
ステータストピック:コネクタとタスクのステータス情報を格納します。 トピック名は
connect-eb-status-<task_name>の形式になります。 -
Kafka Connect コンシューマーグループ:Kafka Connect ワーカーが内部トピックからメッセージを消費するために使用するコンシューマーグループです。 コンシューマーグループ名は
connect-eb-cluster-<task_name>の形式になります。 -
Kafka ソースコネクタコンシューマーグループ:このパラメーターはシンクコネクタにのみ有効です。 ソーストピックからデータを消費するために使用します。 コンシューマーグループ名は
connector-eb-cluster-<task_name>-<connector_name>の形式になります。
-
-
実行設定 セクションで、Log Shipping 方法を Log Service への送信 または Kafka への送信 に設定し、ロールの付与 カードで Connect 依存関係の ロール設定 を設定し、次に 保存 をクリックします。
重要タスクの失敗を防ぐために、AliyunSAEFullAccess 権限を持つロールを選択することを推奨します。
-
-
タスクプロパティ
このタスクのリトライポリシーとデッドレターキューを設定します。 詳細については、「リトライとデッドレターキュー」をご参照ください。
タスクのステータスが実行中になるまで待ちます。これでコネクタは正常に実行されています。
-
ステップ 3:コネクタのテスト
-
ApsaraMQ for RabbitMQ コンソールにログインし、左側のナビゲーションバーでインスタンスリスト を選択します。
-
インスタンスリスト ページで、トップメニューバーからリージョンを選択し、インスタンスリストで対象のインスタンス名をクリックします。
-
左側のナビゲーションバーで[キューリスト]をクリックし、対象のキューのActions列にある詳細をクリックします。
-
[キュー詳細] ページで、[宛先情報としてバインド] タブをクリックし、[バインディングの追加] をクリックします。
-
[バインディングの追加] パネルで、[ソースエクスチェンジ] を amq.direct に設定し、OK をクリックします。
-
[Bindings] タブで、amq.direct Exchange の Actions 列にある [メッセージの送信] をクリックし、Kafka のターゲット Topic にメッセージを送信します。 詳細については、「メッセージを送信する」をご参照ください。 ターゲットキューの詳細ページで、[メッセージの送信] をクリックします。 [メッセージの送信] ダイアログボックスで、[routingKey] を
1に、[messageId] を123に、[messageBody] をthis is a messageに設定します。 [詳細設定] セクションで、値が12345の [userId] プロパティを追加し、[OK] をクリックします。 -
ApsaraMQ for Kafka コンソールにログオンし、インスタンス ページで、対象のインスタンスをクリックします。
-
ターゲットインスタンスのページで、ターゲット Topic をクリックし、次に メッセージ検索 をクリックして、挿入されたメッセージデータを表示します。 ターゲット Topic の [メッセージのクエリ] タブで、[クエリ方法] を [時間によるクエリ] に設定し、[パーティション] と [時点] を選択して、[クエリ] をクリックします。 クエリ結果の Value 列に ApsaraMQ for RabbitMQ から送信されたメッセージ内容 (
this is a messageなど) が表示された場合、Connector のテストが成功したことを示します。
一般的なエラー
シナリオ 1:すべてのタスクの実行失敗
エラーメッセージ:
All tasks under connector rabbitmq-source-connector failed, please check the error trace of the task.
解決策: 「メッセージ流入タスク詳細」ページの基本情報セクションで診断をクリックすると、コネクタモニタリングページで失敗したタスクの詳細なエラーメッセージを表示できます。
シナリオ 2:Kafka Connectの予期せぬ終了
エラーメッセージ:
Kafka connect exited! Please check the error log /opt/kafka/logs/connect.log on sae application to find out the reason why kafka connect exited and update the event streaming with valid arguments to solve it.
解決策:ステータスの更新が遅れる場合があります。 まずページを更新してください。 ステータスが「失敗」のままである場合は、次の手順を実行してエラー情報を表示します。
-
Worker 情報 セクションのメッセージ流入タスク詳細ページで、SAE アプリケーション の横にあるインスタンス名をクリックして、SAE アプリケーション詳細ページに移動します。
-
Basic Information ページで、[インスタンスデプロイ情報] タブをクリックします。
-
インスタンスの右側にあるActions列で[Webshell]をクリックして、Kafka Connect ランタイム環境にログオンします。
-
vi /home/admin/connector-bootstrap.logコマンドを実行してコネクタの起動ログを表示し、エラーメッセージを確認します。 -
vi /opt/kafka/logs/connect.logコマンドを実行してコネクタの実行ログを表示し、ERROR または WARN フィールドを検索してエラー情報を見つけます。
-
エラーメッセージに基づいて問題を修正した後、タスクを再起動します。
シナリオ 3:コネクタパラメーターの検証失敗
エラーメッセージ:
Start or update connector xxx failed. Error code=400. Error message=Connector configuration is invalid and contains the following 1 error(s):
Missing required configuration "rabbitmq.host" which has no default value.
You can also find the above list of errors at the endpoint `/connector-plugins/{connectorType}/config/validate`
解決策:エラーメッセージを使用して、不正なパラメーターを特定して修正します。 メッセージが不明確な場合は、シナリオ 2 の手順に従って Kafka Connect の実行環境にログインし、次のコマンドを実行してパラメーターを検証します。
curl -i -X PUT -H "Accept:application/json" -H "Content-Type:application/json" -d @$CONNECTOR_PROPERTIES_MAPPING http://localhost:8083/connector-plugins/com.ibm.eventstreams.connect.rabbitmqsource.RabbitMQSourceConnector/config/validate
このコマンドは、各コネクタパラメーターの検証結果を返します。 パラメーターの検証に失敗した場合、errors プロパティに、以下のようにエラーが示されます。
"value":{
"name":"rabbitmq.host",
"value":null,
"recommended_values":[
],
"errors":[
"Missing required configuration \"rabbitmq.host\" which has no default value."
],
"visible":true
}