次の方法で共有


Azure Stream Analytics の信頼性

Azure Stream Analytics は、複数のソースからのストリーミング データを同時に処理および分析する、回復性の高いサービスです。 Stream Analytics には、SQL に似たクエリを使用して複雑なイベント処理パイプラインを構築できる情報が用意されています。

Azure を使用する場合、 信頼性は共有責任です。 Microsoft では、回復性と回復性をサポートするさまざまな機能を提供しています。 使用するすべてのサービスでこれらの機能がどのように機能するかを理解し、ビジネス目標とアップタイムの目標を達成するために必要な機能を選択する必要があります。

この記事では、一時的な障害や可用性ゾーンの停止などの潜在的な問題に対する Stream Analytics の回復性について説明します。 また、リージョンの停止やサービス メンテナンスからミッション クリティカルなジョブを保護する方法に関するガイダンスを提供し、Stream Analytics サービス レベル アグリーメント (SLA) に関するいくつかの重要な情報を強調します。

Important

他のコンポーネントが同等の回復性を持たない場合、Stream Analytics の回復性の向上だけでは影響が限られる可能性があります。 入力や出力など、データ ソースの信頼性を考慮してください。 回復性の要件によっては、複数の領域で構成の変更が必要になる場合があります。

運用環境のデプロイに関する推奨事項

Stream Analytics を使用して運用環境で高い信頼性を確保するには、次のことをお勧めします。

  • 可用性ゾーンでリージョンを使用する: 可用性ゾーンをサポートするリージョンにストリーミング ジョブやその他のリソースをデプロイします。
  • 十分な容量をデプロイします。 予想されるスループットに基づいてストリーミング ユニットを設定し、ピーク負荷を処理するための追加の容量と、急激な増加が発生した場合のベースライン要件を超えるバッファーを設定します。
  • 正常性の監視: Azure Monitor メトリックと診断ログを使用して包括的な監視を実装し、ジョブの正常性、入力/出力イベント、リソース使用率を追跡します。 ウォーターマークの遅延や実行時エラーなどの重要なメトリックのアラートを構成して、データ処理に影響を与える前に問題を検出します。 詳細については、「 Azure Stream Analytics の監視」を参照してください。
  • ミッション クリティカルなワークロードに対して複数リージョンの冗長性を実装します 。リージョンの回復性を実現するために、同期された構成と適切なデータ ルーティングを使用して、複数のリージョンに同じ Stream Analytics ジョブをデプロイします。 Stream Analytics ではネイティブのマルチリージョン レプリケーションは提供されませんが、この方法ではフェールオーバーと継続性が有効になります。 詳細については、「 回復性のためのカスタム マルチリージョン ソリューション」を参照してください。

信頼性アーキテクチャの概要

このセクションでは、信頼性の観点から最も関連性の高いサービスのしくみの重要な側面について説明します。 このセクションでは、デプロイして使用するリソースと機能の一部を含む論理アーキテクチャについて説明します。 また、物理アーキテクチャについても説明します。このアーキテクチャでは、サービスの内部での動作について詳しく説明します。

論理アーキテクチャ

ジョブは、Stream Analytics の基本的な単位であり、ストリーム処理ロジックを定義して実行できます。 ジョブは、次の主要なコンポーネントで構成されます。

  • Azure Event Hubs、Azure IoT Hub、Azure Storage などのデータ ソースからストリーミング データを読み取る入力
  • データを処理および変換する クエリ
  • Azure SQL Database、Azure Data Lake Storage、Azure Cosmos DB、Power BI など、さまざまな宛先に結果を継続的に書き込む出力

Stream Analytics ジョブとリソース モデルの詳細については、 Azure Stream Analytics リソース モデルに関するページを参照してください。

物理アーキテクチャ

Stream Analytics は、基になるインフラストラクチャと入力および出力データ ソースの問題を軽減するために、複数の回復性レイヤーを適用することで高い信頼性を実現します。 次のコンポーネントは、ジョブの堅牢な動作を確保するために役立ちます。

  • ワーカー ノードクラスター内で実行されるワーカー ノードと呼ばれる仮想マシン (VM) 上の Stream Analytics ジョブ。 Standard または StandardV2 SKU を使用すると、ジョブは共有クラスターで実行されます。 専用 SKU を使用する場合、ジョブは独自の専用クラスターで実行されます。

    このプラットフォームでは、ワーカー ノードの作成、ワーカー ノード間のジョブの配置、正常性の監視、異常なワーカー ノードの交換が自動的に管理されるため、VM は直接表示または管理されません。

  • ストリーミング ユニット。 このプラットフォームではワーカー ノードとワーカー ノード間のジョブ分散を管理しますが、 ストリーミング ユニット (SU) を ジョブに割り当てる必要があります。 SU は、ジョブを実行するコンピューティング リソースを表します。 SU の数が多いほど、ジョブに割り当てられるコンピューティング リソースが多くなります。 詳細については、 Stream Analytics ストリーミング ユニットの理解と調整に関するページを参照してください。

  • チェックポイント。 Stream Analytics は、状態の定期的な チェックポイント処理によって ジョブの状態を維持します。 チェックポイントを使用すると、ステートフル クエリ ロジックを使用するジョブでも、障害が発生した場合に最小限のデータ再処理で迅速な復旧が可能になります。

    処理エラーが発生すると、Stream Analytics は最後のチェックポイントから自動的に再起動し、処理中に失敗したイベントを自動的に再処理します。 この保証は、ジョブ内のすべての組み込み関数とユーザー定義関数に適用されます。 ただし、エンドツーエンドの配信を 1 回だけ実現できるかどうかは、出力先の機能によって異なります。 詳細については、「 Azure Stream Analytics ジョブのチェックポイントと再生の概念」を参照してください。

Azure Stream Analytics on IoT Edge を使用すると、独自のインフラストラクチャでジョブを実行できます。 Stream Analytics on IoT Edge を使用する場合は、信頼性の要件を満たすように構成する必要があります。 Stream Analytics on IoT Edge は、この記事の範囲外です。

一時的な障害へのレジリエンス性

一時的な障害は、コンポーネントにおける短い断続的な障害です。 これらはクラウドのような分散環境で頻繁に発生し、運用の通常の範囲であり、 一時的な障害は、短時間の経過後に自分自身を修正します。 アプリケーションで一時的な障害を処理できることは重要です。通常は、影響を受ける要求を再試行します。

クラウドでホストされるすべてのアプリケーションは、クラウドでホストされている API、データベース、およびその他のコンポーネントと通信する際に、Azure の一時的な障害処理のガイダンスに従う必要があります。 詳細については、「一時的な障害を処理するための推奨事項」を参照してください。

Stream Analytics は、入力からのデータの取り込みと、組み込みの再試行メカニズムを使用した出力へのデータの書き込みの両方について、多くの一時的な障害を自動的に処理します。 ワーカー ノードの再起動またはジョブの再割り当ての後、ジョブはチェックポイントを使用して、完全に処理されていないイベントを再生し、現在の入力ストリームに到達するまで処理を続行します。

出力エラー ポリシーを構成することをお勧めします。 ただし、これらのポリシーはデータ変換エラーにのみ適用され、一時的な障害を処理するための動作には影響しません。

可用性ゾーンの障害に対する回復性

可用性ゾーン は、Azure リージョン内のデータセンターの物理的に分離されたグループです。 1 つのゾーンで障害が発生した際には、サービスを残りのゾーンのいずれかにフェールオーバーできます。

Stream Analytics は、可用性ゾーンをサポートするリージョンでは自動的にゾーン冗長になります。つまり、ジョブでは複数の可用性ゾーンが使用されます。 ゾーン冗長性により、アプリケーション ロジックに変更を加えることなく、致命的なデータセンターの停止を含む多数の障害に対するジョブの回復性が確保されます。

ゾーン対応リージョンで Stream Analytics ジョブを作成すると、サービスによってジョブのコンピューティング リソースが複数の可用性ゾーンに分散されます。

ゾーン冗長 Stream Analytics ジョブを示す図。

このゾーン冗長デプロイ モデルにより、可用性ゾーン全体が使用できなくなった場合でも、ストリーミング ジョブが引き続きデータを処理できます。 たとえば、次の図は、ゾーン 3 で障害が発生した場合にジョブが引き続き実行される方法を示しています。

ゾーンがダウンしたときに引き続き実行されるゾーン冗長 Stream Analytics ジョブを示す図。

ゾーン冗長性は、クエリ処理、チェックポイント処理、ジョブ管理操作を含むすべての Stream Analytics 機能に適用されます。 Stream Analytics は、ジョブの状態とチェックポイント データを可用性ゾーン間で自動的にレプリケートし、データ損失を防ぎ、ゾーン障害時のダウンタイムをほぼゼロにします。

Requirements

  • リージョンのサポート: Stream Analytics リソースのゾーン冗長性は、可用性ゾーンをサポートするすべてのリージョンでサポートされます。 可用性ゾーンをサポートするリージョンの完全な一覧については、可用性ゾーン を持つ Azure リージョンを参照してください。
  • Sku: ゾーン冗長性は、すべての Stream Analytics SKU で使用できます。

費用

Stream Analytics のゾーン冗長では、追加料金は発生しません。 ジョブがゾーン冗長構成で実行されるかどうかにかかわらず、ストリーミング ユニットに対しても同じ料金が課金されます。 詳細については、 Azure Stream Analytics の価格に関するページを参照してください。

可用性ゾーンのサポートを設定する

すべてのゾーンが正常な場合の動作

このセクションでは、可用性ゾーンのサポートを使用して Stream Analytics ジョブを構成し、すべての可用性ゾーンが運用可能な場合に想定される内容について説明します。

  • ゾーン間のトラフィック ルーティング。 Stream Analytics は、ワーカー ノードで各ジョブを実行します。 受信ストリーミング データは、任意のゾーンのワーカーによって処理される場合があります。 このサービスでは、内部負荷分散を使用して、処理タスクを複数のゾーンに分散します。

  • ゾーン間のデータ レプリケーション。 Stream Analytics は、ジョブの状態とチェックポイント データを可用性ゾーン間で同期的にレプリケートします。 ジョブがイベントを処理してその状態を更新すると、Stream Analytics は、それらの変更を確認する前に複数の可用性ゾーンに書き込みます。 この同期レプリケーションにより、ゾーン全体が使用できなくなった場合でも、データ損失がゼロになります。 レプリケーション プロセスはアプリケーションに対して透過的であり、通常の条件下での処理待機時間には影響しません。

ゾーン障害時の動作

このセクションでは、可用性ゾーンのサポートを使用して Stream Analytics ジョブを構成し、可用性ゾーンが停止した場合に想定される内容について説明します。

  • 検出と応答: Stream Analytics プラットフォームは、可用性ゾーンでの障害の検出と応答を担当します。 Stream Analytics は、障害が発生したゾーン内のワーカーを異常としてマークし、それらのワーカーで実行されているジョブは、残りの正常なゾーンのワーカーに自動的に再配布されます。 ゾーンのフェールオーバーを開始するために何もする必要はありません。
  • アクティブな要求: 実行中のジョブは、正常な可用性ゾーン内の別のワーカーに移行されます。

    Stream Analytics では、チェックポイント処理を使用して処理状態を維持します。 ゾーン障害が発生した場合、障害が発生したゾーンのワーカーによって処理中のイベントは、正常なゾーンのワーカーによって最後のチェックポイントから自動的に再処理されます。

  • 予期されるデータ損失: ジョブチェックポイントシステムは、データ損失を保証しません。

  • 予期されるダウンタイム: 進行中のジョブは、プラットフォームによって正常なワーカーに移動された後、自動的に再開されます。

  • トラフィックの再ルーティング: サービスは、すべての新しい入力データを正常なゾーンのワーカーに自動的にリダイレクトします。 入力ソースからの既存の接続は、運用ゾーンのワーカーと共に再確立されます。 出力接続も同様に再確立され、ストリーミング パイプラインを通じて継続的なデータ フローが保証されます。

ゾーンの回復

障害が発生した可用性ゾーンが復旧すると、Stream Analytics によって自動的にアクティブな処理プールに再割り当てされます。 ジョブは、回復されたインフラストラクチャの使用を開始します。

プラットフォームは、状態の同期やワークロードの再配布を含むゾーン回復操作のすべての側面を処理するため、ゾーンの回復に対するアクションは実行しません。

ゾーンエラーのテスト

Stream Analytics プラットフォームはトラフィック ルーティング、フェールオーバー、ゾーンの復旧を管理するため、可用性ゾーンの障害プロセスを開始または検証する必要はありません。

リージョン全体の障害に対する回復性

Stream Analytics は、リソースを 1 つの Azure リージョンにデプロイします。 リージョンが使用できなくなった場合、ジョブ (および該当する場合は専用クラスター) も使用できなくなります。

回復性のためのカスタム マルチリージョン ソリューション

ストリーミング ワークロードの複数リージョンの回復性を実現するには、複数のリージョンに個別のジョブをデプロイすることを検討してください。 その場合は、ジョブのデプロイと管理、および適切なデータ ルーティングと同期戦略の構成を行う必要があります。 Stream Analytics ジョブは、2 つの独立したエンティティです。 リージョンの入力の両方に入力データを送信し、リージョンの出力を調整するのは、アプリケーションの責任です。 この方法の詳細については、「 Stream Analytics ジョブの geo 冗長性を実現する」を参照してください。

バックアップと復元

Stream Analytics には、組み込みのバックアップと復元機能はありません。

ただし、ジョブの定義と構成を移動、コピー、またはバックアップする場合は、Visual Studio Code の Stream Analytics 拡張機能を使用して、Azure クラウド内の既存のジョブをローカル コンピューターにエクスポートできます。 Stream Analytics ジョブの構成全体をローカルに保存したら、同じまたは別の Azure リージョンにデプロイできます。 Stream Analytics ジョブをコピー、バックアップ、移動する方法については、「 Azure Stream Analytics ジョブのコピー、バックアップ、移動」を参照してください。

サービス メンテナンスに対する回復性

Stream Analytics は、プラットフォームの自動メンテナンスを実行して、セキュリティ更新プログラムを適用し、新機能をデプロイし、サービスの信頼性を向上させます。 その結果、Stream Analytics では、サービス更新プログラムを毎週 (またはより頻繁に) デプロイできます。 Stream Analytics サービスは、新しい更新プログラムが厳格な内部リングを通過して最高の品質を得られるようにします。

サービス メンテナンス アクティビティに対するジョブの回復性を確保するために、次のポイントを考慮してください。

  • 再生に対する回復性が高いジョブを構成します。 チェックポイントは、通常、サービスメンテナンス後にデータを復元するために使用されます。 ただし、場合によっては、チェックポイントの代わりに再生手法を使用する必要があります。 詳細および入力データ ソースを構成して、リプレイによって出力に誤った結果や部分的な結果が生じないようにする方法については、「 サービスアップグレードからのジョブの復旧」を参照してください。

  • 同じジョブをデプロイして、バグのリスクを軽減することを検討してください 。このサービスは、各バッチにデプロイした後に多くのシグナルを事前に検索して、バグが導入されていないことをより確実にします。 ただし、どの程度のテストが行われても、メンテナンスによって発生する問題の導入により、既存の実行中のジョブが中断するリスクがあります。 ミッション クリティカルなジョブを実行する場合は、このリスクを回避するための手順を実行する必要があります。

    同じジョブを 2 つの Azure リージョンにデプロイすることで、ワークロードに影響するバグのリスクを軽減できます。 その後、予期しない事態が発生した場合に通知を受け取るために 、これらのジョブを監視 する必要があります。 Stream Analytics サービスの更新後にこれらのジョブのいずれかが 失敗状態 になった場合は、次の操作を行う必要があります。

    セカンダリ ジョブに使用する Azure リージョンを選択する場合は、リージョンに ペアのリージョンがあるかどうかを検討します。 Azure リージョンのリストには、ペアになっているリージョンに関する最新の情報が含まれています。 Stream Analytics では、ペアになっているリージョンのインフラストラクチャが異なる時間に更新されることを保証します。 Stream Analytics への更新プログラムのデプロイは、ペアになっている一連のリージョンでは同時に発生しません。 その結果、潜在的な問題を特定して修復するために、更新プログラム間に十分な時間差があります。

サービス水準合意書

Azure サービスのサービス レベル アグリーメント (SLA) には、各サービスの期待される可用性と、その可用性の期待を達成するためにソリューションが満たす必要がある条件について記載されています。 詳細については、 オンライン サービスの SLA を参照してください。

Stream Analytics では、ジョブを管理するための API 呼び出しとジョブの操作に個別の可用性 SLA が提供されます。