Azure Load Balancer で MQTT を通してみる
ほぼ備忘録。
Azure Load Balancer は、Azure へのトラフィックを分散することができます。
この中で、TCP の任意のポートを分散できる機能を持っています。
それでは、一つ試してみましょう。
MQTT の分散
通常、 Azure で IoT といえば IoT Hub を使うことが一般的ですが、非対応デバイスや、そもそも IoT Hub から繋げない独自実装などにつなげる際に、MQTT サーバと立てて LB で分散したいというケースもあると思います。今回は、そのケースを試してみましょう。
Azure 側に Mosquitto を立てる。
まず、 Azure Load Balancer と、そこに配置される VM を Azure 側にデプロイし、 Mosquitto をインストールします。
Azure Load Balancer と バックエンドプールとしての VM のつくり方はこちらを参考に。今回は Standard Load Balancer で立てます。
上記文書での注意点は一点、今回は HTTP を分散するわけではないので、正常性プローブは TCP で 1883 を( MQTT のデフォルトポート ) 通す設定を、負荷分散規則も 1883 を通すように設定しました。
正常性プローブ
負荷分散規則
また、サーバ上での Mosquitto のインストールや設定はこちらを参考に。
この際に、上述のリンクを参考に、Mosquitto を起動し、topic を立てておきます。この場合は、topicA というものを立てました。
今回、クライアント側に MQTT.fxというツールを入れて検証してみます。
Azure の Standard Load Balancer の フロントエンドのグローバル IP アドレスとポート番号を設定し、topicA にメッセージを送信。
MQTT.fx の設定
topicAへメッセージ送信
サブスクライブしているクライアントで取得
Azure 側の VM にて、topicA をサブスクライブしているクライアント側でメッセージが表示されました。無事届いていることが確認できます。
このように、Azure Load balancer で HTTP/HTTPS ではない TCP のポートを使うアプリケーション通信を通すことができます。いろいろ使えそうですね。