Azure IoT MQ Preview を使用した MQTT メッセージの発行とサブスクライブ

重要

Azure Arc によって有効にされる Azure IoT Operations Preview は、 現在プレビュー段階です。 運用環境ではこのプレビュー ソフトウェアを使わないでください。

ベータ版、プレビュー版、または一般提供としてまだリリースされていない Azure の機能に適用される法律条項については、「Microsoft Azure プレビューの追加使用条件」を参照してください。

Azure IoT MQ Preview は、スケーラブル、高可用性、Kubernetes ネイティブといった特性を持つ、標準に準拠しエンタープライズ グレードの MQTT ブローカーを備えています。 これは、Azure IoT Operations Preview のメッセージング プレーンを提供し、双方向のエッジ/クラウド通信を可能にし、またエッジではイベント ドリブン アプリケーションを動作させます。

MQTT 準拠

IoT MQ は、MQTT v3.1.1 と MQTT v5 の両方をサポートする標準準拠の MQTT ブローカーを備えています。

メッセージ キュー テレメトリ トランスポート (MQTT) は、IoT 空間に存在するプロトコル間の共通言語として役割を果たしてきました。 MQTT のシンプルな設計により、1 つのブローカーが、軽量のパブリッシュ/サブスクライブ トピックの作成と管理を行って、数万のクライアントに同時にサービスを提供できます。 多くの IoT デバイスでは、そのままの設定で使用できるように MQTT がネイティブでサポートされています。さまざまな IoT プロトコルが使用されていますが、ダウンストリーム変換ゲートウェイで MQTT に変換され、合理化されています。

IoT MQ では、メッセージング層の基盤として MQTT プロトコルが使用されます。 サポートされている MQTT 機能の詳細情報については、「Azure IoT MQ Preview での MQTT 機能のサポート」を参照してください。

高可用性を備えスケーラブル

Kubernetes では、複数のインスタンスで実行できるように、ワークロードを水平方向にスケーリングできます。 この冗長性により、インスタンスがダウンした場合にも要求を処理できる追加の容量を備え、信頼性が向上します。 Kubernetes には自己復旧機能が組み込まれており、インスタンスは自動で復旧します。

Kubernetes はエラスティック スケーリング テクノロジを備えているだけでなく、DevOps の標準にもなっています。 MQTT が IoT プロトコルの共通言語であるならば、Kubernetes はコンピューティング インフラストラクチャ層の共通言語です。 Kubernetes を採用することで、同じ CI/CD パイプライン、ツール、監視、アプリ パッケージ、従業員のスキルをどこでも利用できます。 つまり、クラウド コンピューティング、オンプレミス サーバー、工場内の小規模な IoT ゲートウェイから 1 つのエンド ツー エンド システムを利用できます。 インフラストラクチャや DevOps の処理に費やす時間を短縮し、自らの行うべき業務に集中できます。

Azure IoT MQ は独自のエッジネイティブなデータ プレーンの価値に焦点を当てていますが、この価値を Kubernetes エコシステムにシームレスに適合させながら波及させることができます。 このようにして、MQTT を中心に構築された高パフォーマンスでスケーラブルなメッセージング プラットフォーム プレーンと、他のスケーラブルな Kubernetes ワークロードや Azure とのシームレスな統合が実現されます。

既定でのセキュリティ保護

IoT MQ は、実績のある Azure と Kubernetes ネイティブのセキュリティおよび ID の概念に基づいて構築されており、高度なセキュリティと実用性を兼ね備えています。 個々の MQTT トピック レベルまできめ細かに制御できるアクセス制御メカニズムとともに、柔軟性をもたらす複数の認証メカニズムをサポートします。

Azure Arc の統合

Microsoft のハイブリッド プラットフォームは、Kubernetes を中心に据えつつ、単一のコントロール プレーンとして Azure Arc を使用しています。 既存の Azure 以外のリソース、オンプレミスのリソース、またはその他のクラウド リソースを Azure Resource Manager に投影する管理プレーンが提供されます。 そのようにして、仮想マシン、Kubernetes クラスター、および Azure データ センターで実行されていないデータベースを管理するための単一のコントロール ウィンドウを実現します。

IoT MQ は、Azure Arc for Kubernetes 拡張機能としてデプロイされ、フル機能の Azure リソース プロバイダー (RP) - rosoft/IoTOperationsMQ を介して管理されます。 つまり、Virtual Machines、Storage などのネイティブ Azure クラウド リソースと同じように管理できます。

Azure Arc テクノロジを使用すると、オンプレミスの Kubernetes クラスターで実行されている IoT MQ サービスで変更を有効にできます。 完全な Kubernetes ネイティブのアプローチを使用する場合は、必要に応じて、Kubernetes カスタム リソース定義 (CRD) をローカルで使用するか、Flux などの GitOps テクノロジを使用して、IoT MQ を管理できます。

クラウド コネクタ

クラウド シナリオには、異なるメッセージング要件がある場合があります。 たとえば、優先度の高いデータに対して双方向のクラウド/エッジの高速パスを使用したり、バッチで更新できる時間的な制約の少ないデータに対して準リアルタイムのクラウド ダッシュボードや、より低コストの低速パスを使用したりできます。

柔軟性を高めるために、Azure IoT MQ では、Event Hubs への組み込みの Azure コネクタ (Kafka エンドポイントを使用)、Event Grid MQTT ブローカー機能、Microsoft Fabric、および Blob Storage が提供されます。 IoT MQ は拡張可能であるため、ソリューションで動作する好みのクラウド メッセージング ソリューションを選択できます。

Azure Arc 上に構築すると、強力な Azure ロールベースのアクセス制御 (RBAC) を使用してクラウド サービスにアクセスするために、Azure マネージド ID を使用するようにコネクタを構成できます。 手動で安全でなく、面倒な資格情報の管理は必要ありません。

Dapr プログラミング モデル

Dapr は、状態管理、サービス間呼び出し、パブリッシュ/サブスクライブ メッセージングなどの一般的な分散アプリケーション機能を公開することで、分散型アプリケーション間のプラミングを簡略化します。 構成ブロックの下にある Dapr コンポーネントにより、各機能の具象実装が提供されます。 自分はビジネス ロジックに集中し、Dapr に分散型アプリケーションの詳細をまかせることができます。

IoT MQ は、プラグ可能な Dapr パブリッシュ/サブスクライブおよび状態ストアの構成要素を提供し、エッジ上のイベント ドリブン アプリケーションの開発とデプロイを容易にし、それらが特定のテクノロジに依存しないで済むようにします。

アーキテクチャ

MQTT ブローカーには、次の 3 つのレイヤーがあります。

  • クライアント要求を処理するステートレスなフロントエンド レイヤー
  • 要求をルーティングし、ブローカーを他のブローカーに接続するロード バランサー
  • データを格納および処理するシャード化されたステートフルなバックエンド レイヤー

バックエンド レイヤーは、クライアント セッションのクライアント ID やトピック メッセージのトピック名など、さまざまなキーによってデータをパーティション分割します。 チェーン レプリケーションを使用して、各パーティション内のデータをレプリケートします。 すべてのパーティションで共有されるデータの場合、すべてのパーティションにまたがる単一のチェーンが使用されます。

アーキテクチャの目標は、次のとおりです。

  • フォールト トレランスと分離: バックエンド ノードが失敗した場合でもメッセージの発行が続行され、障害がシステムの残りの部分に伝達されないようにします
  • 障害復旧: オペレーターが介入しない自動障害復旧
  • メッセージ損失なし: 少なくとも 1 つのフロントエンド ノードと 1 つのバックエンド ノードが実行されている場合のメッセージの配信
  • エラスティック スケーリング: エッジとクラウドのデプロイをサポートするために、パブリッシュとサブスクライブのスループットを水平スケーリングします
  • 規模が大きくても一貫性のあるパフォーマンス: チェーン レプリケーションによるメッセージ待機時間のオーバーヘッドを範囲内に収めます
  • 運用の簡素化: メンテナンスと複雑さを簡素化するための外部コンポーネントへの最小限の依存

次のステップ

Azure IoT Operations Preview 拡張機能の Kubernetes クラスターへのデプロイ