Skip to content

Dedicated Flex と BYOC 接続ガイド

本ページでは、Dedicated Flex および BYOC デプロイメントへの接続に使用されるプロトコルとポートについて紹介し、接続問題のトラブルシューティングガイドを提供します。

プロトコルとポートに関するQ&A

以下の表は、Dedicated Flex および BYOC デプロイメントへの接続に使用されるプロトコルとポートを示しています。

プランTCPポート(mqtt)MQTT over TLS/SSL ポート (mqtts)WebSocket ポート(ws)WebSocket over TLS/SSL ポート(wss)
Dedicated1883888380838084
BYOC1883888380838084

MQTT over TCP と WebSocket とは何ですか?

標準の MQTT は、非同期データ通信のための軽量なパブリッシュ/サブスクライブメッセージングプロトコルです。TCP/IP スタック上に構築されており、不安定なネットワーク環境でもスケール可能です。そのため、デバイスのハードウェアストレージ容量やネットワーク帯域が制限されているシナリオに適しています。

WebSocket プロトコルは TCP をベースとした新しいネットワークプロトコルであり、ブラウザとサーバー間で単一のハンドシェイクを通じて持続的な接続を確立できます。ブラウザとサーバー間で繰り返しハンドシェイクを行う必要がないため、双方向のデータ交換が非常に簡単になります。具体的には、MQTT における WebSocket とは、まず WebSocket による接続を確立し、その WebSocket チャネル上で MQTT プロトコルを用いて通信する方式(MQTT over WebSocket)を指し、主にブラウザ環境での接続に利用されます。

標準の MQTT over TCP と WebSocket はいずれも暗号化されていないため、安全性のリスクがあります。

MQTT over TCP のポートは 1883 で、mqtt に対応します。WebSocket のポートは 8083 で、ws に対応します。

MQTT over TCP と WebSocket ポートの使い方は?

Client Connection Guidelines の SDK デモで、テストおよび接続用のサンプルコードを確認できます。

MQTT over TLS/SSL と WebSocket over TLS/SSL とは何ですか?

MQTT over TLS/SSL と WebSocket over TLS/SSL は、MQTT または WebSocket プロトコル通信に TLS/SSL 暗号化を追加したものです。これにより、通信が盗聴や改ざんから保護されます。

MQTT over TLS/SSL のポートは 8883 で、mqtts に対応します。WebSocket over TLS/SSL のポートは 8084 で、wss に対応します。

Dedicated Flex プランでの MQTT over TLS/SSL と WebSocket over TLS/SSL ポートの使い方は?

Dedicated Flex プランはカスタマイズ可能な一方向/双方向 TLS/SSL をサポートしています。Configure TLS/SSL で有効化してください。その後、デプロイメント概要画面のポート 8883(mqtts)および 8084(wss)を通じて直接接続できます。

BYOC デプロイメントでの MQTT over TLS/SSL と WebSocket over TLS/SSL ポートの使い方は?

BYOC デプロイメントは、デプロイメント作成時に設定するカスタマイズ可能な一方向 TLS/SSL 証明書をサポートしています。デプロイメント概要画面のポート 8883(mqtts)および 8084(wss)を通じて直接接続できます。

TLS/SSL 接続のクライアントコードの書き方は?

TLS 関連のサンプルコードは以下のリポジトリで確認できます。

Python
Java
GO
Node.js
ESP 32
ESP 8266
Android
swift

EMQX Dedicated Flex デプロイメントはIPアドレスでの接続をサポートしていますか?

EMQX Dedicated Flex デプロイメントでは、IPアドレスでの接続は推奨していません。フェイルオーバー、アップグレード、クラスターのスケールなどのシナリオで IP アドレスが変更される可能性があるためです。IP アドレスで接続すると、これらの変更によりサービスが中断される恐れがあります。

すべてのクライアント接続には、EMQX Cloud が提供するドメイン名の使用を強く推奨します。ドメイン名は常に正しいかつ現在アクティブなノードに解決されるため、高可用性と接続の安定性が保証されます。

なお、直接 IP 接続による問題は SLA の対象外となります。サービス中断を避けるため、ドメイン名ベースの接続をシステム構成に組み込むことを推奨します。

接続トラブルシューティングガイド

デプロイメントへの接続で問題が発生した場合は、以下のガイドに従い、プラン別に自己診断とトラブルシューティングを行ってください。

Dedicated Flex プラン

Dedicated Flex デプロイメントへの接続で問題が発生した場合は、以下の手順で自己診断およびトラブルシューティングを行ってください。

  1. 接続アドレスの確認

    EMQX Dedicated Flex が提供する正しいドメイン名の接続アドレスを使用しているか確認してください。Dedicated Flex はドメイン名による接続をサポートしています。独自ドメインを接続アドレスとして使用したい場合は、デプロイメントが提供するデフォルトの接続アドレスに対して CNAME レコードを設定してください。

  2. 接続ポートの確認
    Dedicated Flex プランではデフォルトで 1883(MQTT)および 8083(WebSocket)ポートが開放されています。TLS/SSL 設定により、セキュアな 8883(MQTTS)および 8084(WSS)ポートを開放できます。各ポートの役割は以下の通りです。

    • MQTT および WebSocket ポート:暗号化されていない平文通信をサポートし、データ暗号化が不要な内部ネットワークや開発環境に適しています。
    • MQTTS および WSS ポート:TLS/SSL 暗号化による安全な通信をサポートし、本番環境や機密データの通信に適しています。
    • ポート 8883(MQTTS)および 8084(WSS):EMQX Dedicated Flex V5 ではデフォルトで有効化されており、本番環境での安全な通信に最適です。V5 にはシステム割り当ての接続アドレス(IP またはドメイン名)に対応した組み込み TLS 証明書が含まれているため、追加設定なしで利用可能です。
  3. ネットワーク接続のテスト
    telnet コマンドを使い、サーバーと Dedicated Flex プラン間のネットワーク接続をテストしてください。

    例:Dedicated Flex プランの MQTT ポートへの接続をテストする場合
    telnet <Dedicated Flex デプロイメントのドメイン名接続アドレス> 1883
    TLS/SSL を有効化している場合は、MQTTS ポートへの接続をテストしてください。
    telnet <Dedicated Flex デプロイメントのドメイン名接続アドレス> 8883

    <Dedicated Flex デプロイメントのドメイン名接続アドレス> は実際のデプロイメントアドレスに置き換えてください。

  4. 認証情報の確認
    EMQX Dedicated Flex プランは匿名認証をサポートしていません。EMQX Cloud コンソールで MQTT クライアントのユーザー名とパスワードを正しく設定し、クライアント接続時にも正しい認証情報を使用しているか確認してください。

  5. MQTTX クライアントでのテスト
    MQTT クライアントのテストツールとして MQTTX の使用を推奨します。MQTTX は無料で使いやすいクロスプラットフォーム対応の MQTT 5.0 クライアントです。接続できない原因がクライアントコードにあるかを検証できます。詳細は以下を参照してください。
    MQTTX ドキュメント

サポートチケットでの問い合わせ

上記のすべての手順を実施しても問題が解決しない場合は、サポートチケットシステムからお問い合わせください。問題解決を迅速化するため、以下の詳細情報を提供してください。

  • デプロイメント名およびID(コンソールの「デプロイメント管理」ページで確認可能)
  • デプロイメントタイプ(例:サーバレスプラン、Dedicated Flex など)
  • クライアントの種類およびバージョン
  • クライアント接続のサンプルコード(使用言語例:Python、JavaScriptなど。機密情報は伏せてください)
  • クライアントのエラーログや具体的なエラーメッセージ(可能であれば詳細なエラー説明やスクリーンショットを添付してください)