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

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

MQTT負荷分散

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

MQTT には次の主な利点があるため、お使いの IoT デバイスに最適なオプションです。

  • 信頼性
  • 迅速な応答時間
  • サポートできるデバイス数は無制限
  • 多対多のコミュニケーションに最適なパブリッシュ/サブスクライブメッセージ

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 トラフィックの負荷分散の設定

NetScalerアプライアンスが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 メッセージ長の制限

NetScalerアプライアンスは、メッセージ長が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負荷分散