運用環境デプロイのガイドライン

セキュリティとスケーラビリティは、Azure IoT Operationsをデプロイするための優先順位です。 この記事では、運用環境のAzure IoT Operationsを設定するときに考慮する必要があるガイドラインについて説明します。

適切な構成を検討する前に、Azure IoT Operationsを単一ノードクラスターとマルチノード クラスターのどちらにデプロイするかを決定します。 この記事のガイドラインの多くは、クラスターの種類に関係なく適用されますが、違いがある場合は特に呼び出されます。

プラットフォーム

本番環境にAzure IoT Operationsをデプロイする場合は、サポートされている環境を使用します。

クラスターのセットアップ

ハードウェアのセットアップが目的のシナリオに十分であり、セキュリティで保護された環境を使用して始める必要があることを確認します。

システム構成

システム要件を満たす Arc 対応クラスターを作成します。

  • Azure IoT Operationsに対応した環境を使用してください。
  • ドキュメントに従ってクラスターを構成します。
  • クラスターの断続的な接続が予想される場合は、クラスターがオフラインの間にクラスター キャッシュ データとメッセージに十分なディスク領域を割り当てられるようにします。 Azure IoT Operationsは最大 72 時間オフラインで動作できます。
  • 可能であれば、プライマリ運用クラスターにデプロイする前に、新しい変更をテストするためのステージング領域として、2 つ目のクラスターを用意します。
  • Azure Arc新しい更新プログラムがクラスターに適用されるタイミングを完全に制御します。 代わりに、必要に応じてエージェントを手動でアップグレードします。
  • マルチノードクラスタの場合: エッジボリュームを備えたクラスタを設定し 、展開時にフォールトトレランスを有効にする準備をしてください。
  • 規制された環境や切断された環境にあるクラスターの場合: ミラーデプロイメントイメージの手順に従ってプライベートレジストリに移行 し、必要なすべてのイメージが環境で利用可能であることを確認しましょう。

セキュリティ

デプロイ前にクラスターのセットアップがセキュリティで保護されていることを確認するには、次の対策を検討します。

AKS でセキュリティで保護された設定でAzure IoT Operationsをデプロイする場合、Microsoftでは、Azure インスタンス メタデータ サービス エンドポイントへのポッド アクセスをブロックすることをお勧めします。 この機能を有効にする方法については、「Block ポッドから Azure Instance Metadata Service (IMDS) エンドポイントへのアクセスをブロックするを参照してください。

ネットワーク

エンタープライズ ファイアウォールまたはプロキシを使用する場合は、許可リストに Azure IoT Operations エンドポイントを追加します。

可観測性

運用環境のデプロイでは、Azure IoT Operationsをデプロイする前に、クラスターに監視リソースをデプロイします。 Azure Monitor で Prometheus アラートを設定することもお勧めします。

デプロイ

運用環境に対応したデプロイの場合は、Azure IoT Operations展開中に次の構成を含めます。

MQTT ブローカー

Azure ポータルのデプロイ ウィザードでは、ブローカー リソースが Configuration タブで設定されます。

カーディナリティ設定を直接指定するには、Azure CLI フラグまたはブローカー構成ファイルを使用します。

CLI フラグを使用する

az iot ops create コマンドを使用して IoT Operations をデプロイする場合は、次のパラメーターを使用してブローカーのカーディナリティを直接指定します。

az iot ops create ... --broker-frontend-replicas 3 --broker-frontend-workers 4 --broker-backend-part 3 --broker-backend-workers 4 --broker-backend-rf 2

構成ファイルを使用する

または、 --broker-config-file フラグを使用して、カーディナリティ設定を含む JSON ファイルを指定します。

{
  "cardinality": {
    "frontend": {
      "replicas": 3,
      "workers": 4
    },
    "backendChain": {
      "partitions": 3,
      "redundancyFactor": 2,
      "workers": 4
    }
  }
}

次にデプロイします (簡潔にするために他のパラメーターは省略されます)。

az iot ops create ... --broker-config-file <FILE>.json

マルチノードのアンチアフィニティ

マルチノードデプロイの場合、MQTT ブローカーはバックエンド ポッド のアンチアフィニティ ルール を自動的に設定します。 同じパーティションのバックエンド ポッドは互いにアンチアフィニティを持ち、ノード間で負荷を分散し、ノードの障害に対する回復性を提供します。

これらのルールはあらかじめ定義されており、変更できません。

バックエンド ポッドのアンチアフィニティ設定を確認するには、次のコマンドを使用します。

kubectl get pod aio-broker-backend-1-0 -n azure-iot-operations -o yaml | grep affinity -A 15

出力には、次のようなアンチアフィニティ構成が表示されます。

affinity:
  podAntiAffinity:
    preferredDuringSchedulingIgnoredDuringExecution:
    - podAffinityTerm:
        labelSelector:
          matchExpressions:
          - key: chain-number
            operator: In
            values:
            - "1"
        topologyKey: kubernetes.io/hostname
      weight: 100

スキーマ レジストリとストレージ

Azure ポータルの展開ウィザードでは、スキーマ レジストリとその必要なストレージ アカウントが Dependency management タブで設定されます。

  • ストレージ アカウントの階層型名前空間が有効になっている必要があります。
  • スキーマ レジストリのマネージド ID には、ストレージ アカウントの共同作成者アクセス許可が必要です。
  • 運用環境のデプロイでは、ストレージ アカウントのパブリック ネットワーク アクセスのスコープを設定して、信頼されたAzure サービスからのトラフィックのみを許可します。 例えば:
    1. Azure ポータルで、スキーマ レジストリが使用するストレージ アカウントに移動します。
    2. ナビゲーション メニューから [ セキュリティとネットワーク > ネットワーク ] を選択します。
    3. パブリック ネットワーク アクセス設定で、 選択した仮想ネットワークと IP アドレスから [有効] を選択します。
    4. ネットワーク ページの Exceptions セクションで、信頼された Microsoft サービスがこのリソースにアクセスすることを許可する オプションが選択されていることを確認します。
    5. [保存] をクリックして変更を適用します。

詳細については、「ファイアウォールと仮想ネットワークAzure Storage構成」> 信頼されたAzure サービスへのアクセスを許可するを参照してください。

フォールト トレランス

マルチノード クラスター: フォールト トレランスは、Azure ポータル展開ウィザードの Dependency management タブで有効にすることができます。 これはマルチノード クラスターでのみサポートされ、運用環境デプロイに推奨されます。

セキュリティで保護された設定

デプロイ中に、テスト設定またはセキュリティで保護された設定を使用するオプションが用意されています。 運用環境デプロイの場合は、セキュリティで保護された設定を選択します。 運用環境の既存のテスト設定のデプロイをアップグレードする場合は、「セキュリティで保護された設定を有効にする」の手順に従ってください。

デプロイ後

Azure IoT Operationsをデプロイした後、運用シナリオに対して次の構成を行います。

MQTT ブローカー

デプロイ後、BrokerListener リソースを編集できます。

BrokerAuthentication リソースを編集することもできます。

新しいリソースを作成するときに、その認可を管理します。

OPC UA 用コネクタ

運用環境で資産に接続するには、OPC UA 認証を構成します。

  • 認証なしは使用しないでください。OPC UA サーバーへの接続は、認証なしではサポートされていません。
  • OPC UA サーバーへのセキュリティで保護された接続を設定します。 運用環境 PKI を使用し、アプリケーション証明書と信頼リストを構成します。
  • 運用環境 (、minimumCertificateKeySize=2048) の既定の rejectSha1SignedCertificates=trueをそのまま使用します。 これらの設定は、テスト環境または QA 環境でのみ緩和します。

データ フロー

運用環境でデータ フローを使用するときは、次の手順を実行します。