Citrix ADC

mqtt負荷分散

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

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

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

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

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

mqttシステム

MQTTプロトコルを使用したIoTデプロ。

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

一般的な物联网展開では,ブローカー(サーバーのクラスタ)が物联网デバイスのグループ(物联网クライアント)を管理します。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     add servicegroup   bind servicegroup    

例:

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     

例:

add lb vserver lb1 MQTT 10.106.163.9 1883 

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

bind lb vserver   bind lb vserver   

例:

Bind lb vserver lb1 srvc1 

構成,設定mqtt / mqtt_tlsコンテン。

add cs vserver     

例:

add cs vserver cs1 MQTT 10.106.163.13 1883 

タゲットの負荷分散仮想サバ。

add cs action  -targetLBVserver  [-comment ] 

例:

添加cs action act1 -targetlbvserver lbv1 

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

add cs policy  [-url  | -rule ] -action  

例:

添加cs策略cspol1 -rule " MQTT.COMMAND.EQ(CONNECT) && MQTT.CONNECT.FLAGS.QOS.eq(2) " -action act1 

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

bind cs vserver  -policyName  -priority  

例:

bind cs vserver cs1 -policyName cspol1 -priority 20 

構成を保存します。

保存ns config 

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

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

mqttメッセジの長さの制限

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

cliを使用してジャンボパケットを処理するようにadcアプラを使用してジャンボパケットを処理するようにを使用してジャンボパケットを処理するように

设置lb参数-dropMqttJumboMessage [YES | NO] 

例:

设置lb参数-dropMqttJumboMessage no 
mqtt負荷分散