クラスターリンク
注意
クラスターリンク機能は、Dedicated および Dedicated Flex エディションの EMQX バージョン 5.8.6 以降でのみ利用可能です。
クラスターリンクは、複数の独立した EMQX クラスターを接続し、異なる地理的に分散したクラスター上のクライアント間の通信を可能にする機能です。従来の MQTT ブリッジと比較して、クラスターリンクはより効率的で信頼性が高く、スケーラブルです。帯域幅の使用を最小限に抑え、ネットワークの中断にも耐性があります。
本ページでは、クラスターリンク機能の概要と Dedicated Flex デプロイメントでの使用および設定方法について紹介します。
機能概要
単一のデプロイメントで、地理的に分散した数千の MQTT クライアントに効果的に対応できます。しかし、クライアントが世界中に散らばっている場合、高レイテンシやネットワーク接続の不安定さといった問題が発生します。異なる地域に複数のデプロイメントを作成してクライアントにローカルでサービスを提供することでこれらの問題を軽減できますが、異なるデプロイメントに接続されたクライアント間でシームレスに通信できるようにするという新たな課題が生じます。
従来の解決策は、各デプロイメントに MQTT ブリッジを追加し、すべてのメッセージをデプロイメント間で転送する方法です。この方法は帯域幅の使用が過剰になり、転送される多くのメッセージが相手側のクライアントにとって不要であるため、メッセージのレイテンシが増加する可能性があります。
クラスターリンクは、関連するメッセージのみをデプロイメント間で転送することでこれらの問題を解決します。この最適化により帯域幅の使用が削減され、ネットワークの中断時でも効率的な通信が保証されます。
クラスターリンクの作成
注意
現時点では、EMQX Cloud で API を使ったクラスターリンクの作成や管理はサポートされていません。
クラスターリンクはコンソールから設定してください。
クラスターリンクは複数のユースケースに対応しています。デプロイメント環境に応じて、以下のようにリンクできます。
- 同一の EMQX Cloud アカウント内の Dedicated Flex デプロイメント同士
- 異なる EMQX Cloud アカウント間の Dedicated Flex デプロイメント同士
- Dedicated Flex デプロイメントとセルフホスト(ローカル)EMQX ブローカー間
それぞれのシナリオで設定手順が若干異なります。以下に詳細を示します。
前提条件
クラスターリンクを設定する前に、以下の要件を満たしていることを確認してください。
- Dedicated Flex デプロイメントを作成します。例えば、異なるリージョンに
deployment-usとdeployment-euの2つのデプロイメントを作成します。
Dedicated Flex デプロイメントの作成方法は Dedicated Flex デプロイメントの作成 を参照してください。 - NAT ゲートウェイ を介したパブリックネットワークアクセスを確保します。
- 各デプロイメントで NAT ゲートウェイを設定する必要があります。
- NAT ゲートウェイは外部接続を許可するために
Running状態である必要があります。
TIP
EMQX Cloud のクラスターリンクでは NAT ゲートウェイが必須です。
ただし、対象がセルフホストの EMQX インスタンスの場合は、Dedicated Flex デプロイメントがパブリックインターネット経由で対象ノードにアクセス可能である必要があります。
これらの前提条件は、クラウドデプロイメントとセルフホスト(ローカル)EMQX ブローカーを接続する場合にも適用されます。Dedicated Flex デプロイメントはパブリックネットワーク経由で対象ブローカーに接続可能でなければなりません。
シナリオ 1: 同一アカウント内のデプロイメントをリンクする
最も簡単なシナリオです。ドロップダウンから対象デプロイメントを選択すると、多くの項目が自動入力されます。
deployment-usのコンソールで Cluster Linking ページを開きます。New をクリックして新しいクラスターリンクを作成します。
New Cluster Linking ページで以下の項目を設定します。
Deployment Name: リンク先の Dedicated Flex デプロイメント名を選択します。ここでは例として
deployment-euを選択します。Address: リンク先デプロイメントの MQTT ホストとポート。選択したデプロイメントに基づき自動入力されます。
Username / Password: リンク先デプロイメントで設定された有効な認証情報を使用します。
Client ID Prefix:
deployment-euへの MQTT 接続に使用するクライアントIDのプレフィックスを定義します。例:from-usTIP
クラスターの規模や設定によっては、リモートクラスターへの複数の MQTT クライアント接続が確立され、それぞれ異なる ClientID が必要です。Client ID Prefix を設定することで、これらの ClientID の割り当て方法を制御できます。
Topics: 現在のデプロイメントがリモートデプロイメントから受信するメッセージの MQTT トピックフィルターのリスト。例:
/from-eu。プラスアイコンをクリックしてトピックを追加できます。TIP
これらはローカルクラスターがリモートクラスターから受信を期待するトピックです。空欄にすると、ローカルクラスターはリモートクラスターからメッセージを受信しません。
Advanced Settings: MQTT プロトコルパラメータなどの追加設定を行います。
Confirm をクリックします。クラスターリンクページにリダイレクトされ、新しいエントリが表示され、デフォルトで有効になります。

deployment-eu側でも同様の手順でdeployment-usへの逆リンクを作成します。
シナリオ 2: 異なるアカウント間のデプロイメントをリンクする
このシナリオでは、両方のデプロイメントが EMQX Cloud 上にありますが、異なるアカウントに属しています。より多くの情報を手動で入力する必要があります。
deployment-usのコンソールで Cluster Linking ページを開きます。New をクリックして新しいクラスターリンクを作成します。
New Cluster Linking ページで以下の項目を設定します。
- Cluster Name: 対象デプロイメントのデプロイメントIDを入力します。対象デプロイメントの Settings ページで確認可能です。
- Address: リモートデプロイメントの MQTT over TLS/SSL アドレスを入力します。
- Username / Password: 対象デプロイメントで設定された認証情報を使用します。
- Client ID Prefix:
deployment-euへの MQTT 接続に使用するクライアントIDのプレフィックスを定義します。例:from-us - Topics: 現在のデプロイメントがリモートデプロイメントから受信するメッセージの MQTT トピックフィルターのリスト。例:
/from-eu。プラスアイコンをクリックしてトピックを追加できます。 - Advanced Settings: MQTT プロトコルパラメータなどの追加設定を行います。
Confirm をクリックします。クラスターリンクページにリダイレクトされ、新しいエントリが表示され、デフォルトで有効になります。
リモートアカウントの
deployment-eu側でも同様の手順でdeployment-usへの逆リンクを作成します。
シナリオ 3: ローカル(セルフホスト)ブローカーとのリンク
クラウドデプロイメントとローカルに展開された EMQX ブローカー(例:プライベートデータセンターや仮想マシン上のセルフホスト)をリンクすることも可能です。
TIP
ローカルデプロイメントはパブリックネットワークからアクセス可能であり、TLS/SSL 経由の MQTT をサポートしている必要があります。
有効な証明書の使用を推奨します。
デプロイメントの Cluster Linking で New をクリックします。
New Cluster Linking ページで以下の項目を設定します。
- Cluster Name: ローカル EMQX 設定ファイルの
cluster.nameの値を入力します。 - Address: ローカル EMQX インスタンスのアドレスとポートを入力します(例:
<your-host>:8883)。 - Username / Password: ローカルデプロイメントが接続を受け入れるユーザー名とパスワードを指定します。
- Client ID Prefix: ローカル EMQX への MQTT 接続に使用するクライアントIDのプレフィックスを定義します。例:
from-us - Topics: 現在のデプロイメントがローカル EMQX から受信するメッセージの MQTT トピックフィルターのリスト。例:
/from-local - Advanced Settings: MQTT プロトコルパラメータなどの追加設定を行います。
- Cluster Name: ローカル EMQX 設定ファイルの
Confirm をクリックします。クラスターリンクページにリダイレクトされ、新しいエントリが表示され、デフォルトで有効になります。
ローカル EMQX 側でも同様の手順で逆リンクを作成します。詳細は Dashboard を使ったクラスターリンクの設定と管理 を参照してください。
クラスターリンクの確認
MQTTX を使ってクラスターリンクが正常に作成されたか確認できます。
- MQTTX で
us-clientという新しい接続を作成し、deployment-usに接続します。トピック/from-euをサブスクライブします。 - MQTTX で
eu-clientという新しい接続を作成し、deployment-euに接続します。トピック/from-usをサブスクライブします。 us-clientでトピック/from-usにペイロードfrom usのメッセージをパブリッシュします。eu-clientがメッセージを受信することを確認します。eu-clientでトピック/from-euにメッセージをパブリッシュし、us-clientがメッセージを受信することを確認します。
非対称リンクの作成
非対称リンクを作成するには、クラスターリンク設定の Topics フィールドを空にし、他の設定はそのままにします。
例えば、deployment-us のクラスターリンク設定でトピックを削除すると、deployment-us は deployment-eu からのメッセージを一切受信しないことになります。これによりクラスターリンクは非対称となり、クラスター間の一方向メッセージ転送に便利です。
クラスターリンクの確認 のメッセージパブリッシュとサブスクライブの手順を繰り返すと、deployment-eu からパブリッシュされたメッセージが deployment-us のサブスクライバーに届かないことが確認できます。
クラスターリンクの管理
クラスターリンクページでは、クラスターリンクの基本情報を一覧で確認できます。
デプロイメント名をクリックすると、Overview タブでクラスターリンクの実行状況やメッセージ送受信のメトリクス・統計情報を閲覧できます。メトリクスをリセットしたい場合は、右上の「Reset」ボタンをクリックし、確認を求められます。
Settings タブをクリックすると設定の変更が可能です。また、Actions 列の編集アイコンからも設定変更ができます。
Actions 列の削除アイコンをクリックすると、選択したクラスターリンクのエントリを削除できます。