次の方法で共有


マイクロサービスのコンテナー オーケストレーション

Azure Kubernetes Service (AKS)
Azure Service Fabric
Azure Container Instances

マイクロサービス アーキテクチャは、通常、各マイクロサービス インスタンスを 1 つのコンテナー内にパッケージ化してデプロイします。 マイクロサービスの多くのインスタンスは、それぞれ別個のコンテナーで実行されている可能性があります。 コンテナーは軽量で有効期間が短いため、作成と破棄は簡単ですが、調整と通信は困難です。

この記事では、コンテナー化されたマイクロサービス アーキテクチャを運用環境で実行する際の課題と、コンテナー オーケストレーションがどのように役立つかについて説明します。 この記事では、いくつかの Azure コンテナー オーケストレーション オプションについて説明します。

コンテナー化されたマイクロサービス アーキテクチャ

この単純なコンテナー化された Azure Kubernetes Service (AKS) クラスターでは、次の操作を行います。

  • 1 つのマイクロサービス A インスタンスがノード 1 で実行され、別のインスタンスがノード 2 で実行され、3 番目のインスタンスがノード 3 で実行されています。
  • マイクロサービス B の 1 つのインスタンスがノード 1 で実行され、もう 1 つのインスタンスがノード 3 で実行されています。
  • コンテナー化された リバース プロキシ サーバー は、トラフィックを分散するためにノード 1 とノード 2 で実行されています。

単純なコンテナー化されたマイクロサービス アーキテクチャの概念図。

クラスターを管理するには、DevOps チームは次の手順を実行する必要があります。

  • 各ノードで複数のコンテナー インスタンスを実行します。
  • インスタンス間のトラフィックを負荷分散します。
  • 個別のノード内の依存インスタンス間の通信を管理します。
  • 必要な AKS クラスターの状態を維持します。

コンテナー オーケストレーションを使用すると、DevOps チームはクラスターの望ましい状態を構成として表すことができます。 コンテナー オーケストレーション エンジンは、必要な構成を適用し、すべての管理タスクを自動化します。

単純な 3 層 Web アプリケーションをコンテナー化することを検討してください。

  • コンテナーは、フロントエンド コンポーネントをホストします。
  • 別のコンテナーが中間層または REST API レイヤーをホストします。
  • 中間層レイヤーは、グローバル分散データベースと通信します。

これらのコンテナーを 1 台の開発マシンで実行するのは難しくない場合があります。 ただし、運用クラスターで大規模な高可用性モードでアプリケーションを実行することは、すぐに困難になります。 コンテナー オーケストレーションは、大規模で動的な運用環境にとって非常に重要です。

コンテナー オーケストレーションの利点

次の例は、コンテナー オーケストレーションがクラスターのデプロイ、ネットワーク、スケーリングの管理にどのように役立つかを示しています。

コンテナー オーケストレーター のシナリオを示すマイクロサービス クラスターの例の図。

コンテナー オーケストレーター:

  • トラフィックまたはリソースの使用率に基づいて、マイクロサービス インスタンスの数を自動的にスケーリングします。 この例では、オーケストレーターは、トラフィックの増加に応じて、別のマイクロサービス A インスタンスを自動的に追加します。

  • 構成済みの望ましい状態を反映するようにコンテナーを管理します。 この例では、マイクロサービス B は 2 つのインスタンスを持つよう構成されています。 1 つのインスタンスが異常になったため、オーケストレーターは別のインスタンスを作成することで目的の状態を維持します。

  • 各マイクロサービスのコンテナーを単純なサービス レイヤーでラップします。 サービス レイヤー:

    • IP アドレス、ポート、インスタンス数などの複雑さを抽象化します。
    • マイクロサービス インスタンス間でトラフィックを負荷分散します。
    • 依存マイクロサービス インスタンス間の簡単な通信をサポートします。

コンテナー オーケストレーターは、次の操作に対する柔軟性とトラフィック制御も提供します。

  • ダウンタイムなしで、新しいバージョンをリリースするか、以前のバージョンのマイクロサービスまたはマイクロサービス のセットにロールバックします。
  • さまざまなマイクロサービス バージョンのサイド バイ サイド テストを有効にします。

Azure コンテナー オーケストレーターを選択する

Azure でマイクロサービス コンテナー オーケストレーションを実装するためのオプションを次に示します。

  • Azure Kubernetes Service (AKS) は、コンテナー化されたアプリケーションのデプロイと管理を簡略化する、Azure での Kubernetes コンテナー オーケストレーション サービスのフル マネージド です。 AKS では、エラスティック プロビジョニング、迅速なエンド ツー エンドデプロイ、高度な ID とアクセス管理が提供されます。

  • azure Service Fabric は、マシンのクラスター全体にマイクロサービスをデプロイおよび管理するためのコンテナー オーケストレーターです。 軽量 Service Fabric ランタイムは、ステートレスおよびステートフル マイクロサービスの構築をサポートします。

    Service Fabric の主な差別化要因は、ステートフル サービスを構築するための堅牢なサポートです。 組み込みのステートフル サービス プログラミング モデルを使用することも、任意の言語またはコードで記述されたコンテナー化されたステートフル サービスを実行することもできます。

  • Azure Container Instances (ACI) は、Azure でコンテナーを実行する最も簡単で簡単な方法です。 ACI を使用すると、仮想マシンを管理したり、上位レベルのサービスを調整したりする必要はありません。

    単純なオーケストレーション シナリオでは、Docker Compose を使用して、マルチコンテナー アプリケーションをローカルで定義して実行できます。 次に、Docker コンテナーを ACI コンテナー グループとして、管理されたサーバーレス Azure 環境にデプロイします。 完全なコンテナー オーケストレーション シナリオでは、ACI を AKS と統合して、AKS オーケストレーション用の仮想ノードを作成できます。

  • Azure Spring Apps は、Spring Boot アプリ向けのエンタープライズ対応のフル マネージド サービスです。 Spring Apps を使用すると、インフラストラクチャを管理することなく、アプリの構築と実行に集中できます。 Spring Apps には、組み込みのライフサイクルとオーケストレーション管理、監視の容易さ、Azure との完全な統合が付属しています。

  • Azure Red Hat OpenShift (ARO) では、Azure でのフル マネージド OpenShift クラスターのデプロイがサポートされます。 Kubernetes 実稼働コンテナーを実行するには、イメージ レジストリ、ストレージ管理、監視、DevOps などのフレームワークやツールとの統合が必要です。 ARO は、これらのコンポーネントをサービスとしての単一のコンテナー プラットフォーム (PaaS) に結合することで Kubernetes を拡張します。

貢献

この記事は Microsoft によって管理されています。 もともとは次の共同作成者によって作成されました。

プリンシパルの作成者:

非公開の LinkedIn プロファイルを表示するには、LinkedIn にサインインします。

次の手順