ADC
ご意見をお寄せいただきありがとうございました

この記事は機械翻訳されています.免責事項

MQTT負荷分散

メッセージキューテレメトリトランスポート(MQTT)は、モノのインターネット(IoT)用のOASIS標準メッセージングプロトコルです。MQTTは、IoTシステム内で効果的な通信を提供する柔軟で使いやすいテクノロジーです。MQTTはブローカーベースのプロトコルであり、クライアントとブローカー間のメッセージ交換を容易にするために広く使用されています。

MQTTの次の主な利点により、MQTTはIoTデバイスに最適なオプションになります。

  • 信頼性
  • 速い応答時間
  • 無制限のデバイスをサポートする機能
  • Publish/subscribe 多対多のコミュニケーションに最適なメッセージング

IoTは、センサー、ソフトウェア、ネットワーク接続、および必要な電子機器が組み込まれた相互接続されたデバイスのネットワークです。組み込みコンポーネントにより、IoTデバイスはデータを収集および交換できます。IoTデバイスの使用の増加は、ネットワークインフラストラクチャに複数の課題をもたらし、スケールが目立ったものです。IoTデバイスの大規模な展開では、各IoTデバイスによって生成されたデータを迅速に分析する必要があります。スケール要件とリソースの効率的な使用を実現するには、ブローカープールの負荷を均等に分散する必要があります。MQTTプロトコルのサポートにより、IoT展開でCitrix ADCアプライアンスを使用して、MQTTトラフィックの負荷分散を行うことができます。

次の図は、Citrix ADCアプライアンスを使用してMQTTトラフィックの負荷を分散するMQTTアーキテクチャを示しています。

MQTTシステム

MQTTプロトコルを使用したIoTデプロイメントには、次のコンポーネントがあります。

  • MQTTブローカー。クライアントからすべてのメッセージを受信し、メッセージを適切な宛先クライアントにルーティングするサーバー。ブローカーは、すべてのメッセージの受信、メッセージのフィルタリング、各メッセージのサブスクライブ者の決定、およびこれらのサブスクライブされたクライアントへのメッセージの送信を担当します。ブローカーは、すべてのメッセージが通過する必要のある中央ハブです。
  • MQTTクライアント。マイクロコントローラーから本格的なサーバーまで、MQTTライブラリを実行し、ネットワーク経由でMQTTブローカーに接続するすべてのデバイス。パブリッシャーとサブスクライバーはどちらもMQTTクライアントです。パブリッシャーとサブスクライバーのラベルは、クライアントがメッセージを公開しているか、メッセージを受信するようにサブスクライブしているかを示します。
  • MQTTロードバランサー。Citrix ADCアプライアンスは、MQTTトラフィックを負荷分散するためにMQTT負荷分散仮想サーバーで構成されています。

一般的な IoT 展開では、ブローカー(サーバーのクラスタ)が IoT デバイスのグループ(IoT クライアント)を管理します。Citrix ADCアプライアンスは、クライアントID、トピック、ユーザー名などのさまざまなパラメーターに基づいて、ブローカーへのMQTTトラフィックの負荷を分散します。

MQTTトラフィックの負荷分散を構成する

Citrix ADCアプライアンスでMQTTトラフィックの負荷を分散するには、次の構成タスクを実行します。

  1. 構成、設定 MQTT/MQTT_TLS サービスまたはサービスグループ。
  2. 構成、設定 MQTT/MQTT_TLS 仮想サーバーの負荷分散。
  3. バインドする MQTT/MQTT_TLS へのサービス MQTT/MQTT_TLS 仮想サーバーの負荷分散。
  4. 構成、設定 MQTT/MQTT_TLS コンテンツスイッチング仮想サーバー。
  5. ターゲットの負荷分散仮想サーバーを指定するコンテンツスイッチングアクションを構成します
  6. コンテンツスイッチングポリシーを構成します。
  7. コンテンツスイッチングポリシーを、特定の負荷分散仮想サーバーにリダイレクトするように既に構成されているコンテンツスイッチング仮想サーバーにバインドします。
  8. 構成を保存します。

CLIを使用してMQTTトラフィックのロードバランシングを設定するには

構成、設定 MQTT/MQTT_TLS サービスまたはサービスグループ。

add service <name> <IP> <protocol> <port> add servicegroup <ServiceGroupName> <Protocol> bind servicegroup <serviceGroupName> <IP> <port>

例:

add service srvc1 10.106.163.3 MQTT 1883 add servicegroup srvcg1 MQTT bind servicegroup srvcg1 10.106.163.3 1883

構成、設定 MQTT/MQTT_TLS 仮想サーバーの負荷分散。

add lb vserver <name> <protocol> <IPAddress> <port>

例:

add lb vserver lb1 MQTT 10.106.163.9 1883

バインドする MQTT/MQTT_TLS MQTT負荷分散仮想サーバーへのサービスまたはサービスグループ。

bind lb vserver <name> <serviceName> bind lb vserver <name> <servicegroupName>

例:

bind lb vserver lb1 srvc1 bind lb vserver lb1 srvcg1

構成、設定 MQTT/MQTT_TLS コンテンツスイッチング仮想サーバー。

add cs vserver <name> <protocol> <IPAddress> <port>

例:

add cs vserver cs1 MQTT 10.106.163.13 1883

ターゲットの負荷分散仮想サーバーを指定するコンテンツスイッチングアクションを構成します。

add cs action <name> -targetLBVserver <string> [-comment <string>]

例:

add cs action act1 -targetlbvserver lbv1

コンテンツスイッチングポリシーを構成します。

add cs policy <policyName> [-url <string> | -rule <expression>] –action <actName>

例:

add cs policy cspol1 -rule “MQTT.COMMAND.EQ(CONNECT) && MQTT.CONNECT.FLAGS.QOS.eq(2)-action act1

コンテンツスイッチングポリシーを、特定の負荷分散仮想サーバーにリダイレクトするように既に構成されているコンテンツスイッチング仮想サーバーにバインドします。

bind cs vserver <virtualServerName> -policyName <policyName> -priority <positiveInteger>

例:

bind cs vserver cs1 –policyName cspol1 -priority 20

構成を保存します。

save ns config

GUIを使用してMQTTトラフィックの負荷分散を構成するには

  1. トラフィック管理に移動します > 負荷分散 > 仮想サーバー、およびタイプMQTTまたはの負荷分散仮想サーバーを作成します MQTT_TLS 。**
  2. タイプMQTTのサービスまたはサービスグループを作成します。
  3. サービスをMQTT仮想サーバーにバインドします。
  4. [保存] をクリックします。

MQTTメッセージの長さの制限

Citrix ADCアプライアンスは、メッセージ長が65536バイトを超えるメッセージをジャンボパケットとして扱い、デフォルトで破棄します。dropmqttjumbomessage lbパラメーターは、ジャンボパケットを処理するかどうかを決定します。このパラメーターはデフォルトで YESに設定されています。これは、ジャンボMQTTパケットがデフォルトでドロップされることを意味します。このパラメータが NOに設定されている場合、ADCアプライアンスはメッセージ長が65536バイトを超えるパケットも処理します。

CLIを使用してジャンボパケットを処理するようにADCアプライアンスを構成するには:

Set lb parameter –dropMqttJumboMessage [YES | NO]

例:

set lb parameter –dropMqttJumboMessage no
このコンテンツの正式なバージョンは英語で提供されています。Cloud Software Groupドキュメントのコンテンツの一部は、お客様の利便性のみを目的として機械翻訳されています。Cloud Software Groupは機械翻訳されたコンテンツを管理していないため、誤り、不正確な情報、不適切な用語が含まれる場合があります。英語の原文から他言語への翻訳について、精度、信頼性、適合性、正確性、またはお使いのCloud Software Group製品またはサービスと機械翻訳されたコンテンツとの整合性に関する保証、該当するライセンス契約書またはサービス利用規約、あるいはCloud Software Groupとのその他すべての契約に基づき提供される保証、および製品またはサービスのドキュメントとの一致に関する保証は、明示的か黙示的かを問わず、かかるドキュメントの機械翻訳された範囲には適用されないものとします。機械翻訳されたコンテンツの使用に起因する損害または問題について、Cloud Software Groupは責任を負わないものとします。
MQTT負荷分散