AWS Network Load BalancerでMQTT 接続編

こんにちは!Tamaです!

前回はNLBにEC2を紐付けHTTPアクセスを試してみました。
前回記事:AWS Network Load BalancerでMQTT設定編

今回はNLBを使ってMQTTでの設定とMQTTでの疎通の確認を行います。NLBの登場により、NLBとMQTTブローカーを組み合わせることでAWS IoT相当のものが自前で構築できるようになりました。AWS IoTで対応できない独自ドメインのエンドポイントやQoS3とかに対応させた上うえで負荷分散ができる構成も可能になりました。実際に環境を構築して検証してみます。

NLB設定

前回作成したNLBに設定を追加しMQTTに対応させます。
MQTTでのヘルスチェックを行うためのターゲットグループを作成します。
プロトコルとポートを以下に設定します。

プロトコル: TCP
ポート: 1883

ターゲットグループ作成後対象のインスタンスを登録しておきます。
セキュリティグループのポート開放も忘れずに行いましょう。

NLBに作成したターゲットグループを設定します。

ヘルスチェックが通っていることを確認し疎通テストを行います。

接続テスト

MQTTブローカーはmosquitto、
MQTTクライアントはMQTT.fxを使用しました。

mosquittoとMQTT.fxの導入は以下記事の手順に従って設定を行いました。
AWS IoTとデバイスの通信をEC2のMQTTブローカーでブリッジさせてみる

AWS IoTを始めよう -MQTTの設定(MQTT.fx編)
まずはローカルに対してメッセージを送信してみます。

受信側で以下コマンドを入力し受信待ち
mosquitto_sub -d -t testtopic

送信側でメッセージをpublishすると

受信側に表示されました。

次にMQTT.fxでNLBを通してメッセージをpublishしてみます。

MQTT.fxのインストールに関しては以下の記事で紹介しています。
AWS IoTを始めよう -MQTTの設定(MQTT.fx編)-
接続プロファイルでアドレスにNLBのエンドポイントを指定します。

サーバ側で待機しメッセージをpublishすると

無事NLBを通して接続が確認できました。

今回は以上になります!
お疲れさまでした!

ポートを設定するだけで簡単にNLBを通して接続することが出来ました。

次回は負荷分散が行われているかの確認を行います。

またお会いしましょう!