AWS App Mesh とは? - AWS App Mesh

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS App Mesh とは?

AWS App Mesh は、サービスのモニタリングとコントロールを容易にするサービスメッシュです。サービスメッシュは、サービス間通信の処理専用のインフラストラクチャレイヤーであり、通常、アプリケーションコードと一緒にデプロイされる一連の軽量ネットワークプロキシを介して行われます。App Mesh は、サービスの通信方法を標準化し、エンドツーエンドの可視性を提供して、アプリケーションの高可用性を確保するのに役立ちます。App Mesh を使用すると、アプリケーション内のすべてのサービスについて一貫した可視性とネットワークトラフィックコントロールを実現できます。

App Mesh をサンプルアプリケーションに追加する

App Mesh を使用しない、次の簡単なアプリケーション例を考えてみましょう。2つのサービスは、AWS Fargate、Amazon Elastic Container Service (Amazon ECS)、Amazon Elastic Kubernetes Service (Amazon EKS)、Amazon Elastic Compute Cloud (Amazon EC2) インスタンス上のKubernetes、または Docker を使用する AmazonEC2 インスタンスで実行できます。

この図では、serviceAserviceB の両方が apps.local 名前空間を介して検出可能です。例えば servicebv2.apps.local という名前の serviceb.apps.local の新しいバージョンをデプロイすることにしたとします。次に、servicea.apps.local からのトラフィックの何パーセントかを serviceb.apps.local に、何パーセントかを servicebv2.apps.local に誘導したいとします。servicebv2 が順調に実行されていることが確認できたら、そこに 100 パーセントのトラフィックを送ります。

App Mesh は、アプリケーションコードや登録されたサービス名を変更することなく、これを行うのに役立ちます。このサンプルアプリケーションで App Mesh を使用すると、メッシュは、次の図のようになります。

この設定では、サービスは、相互に直接通信しなくなります。代わりに、プロキシを介して相互に通信します。servicea.apps.local サービスとともにデプロイされたプロキシは、App Mesh 設定を読み取り、設定に基づいて、トラフィックを serviceb.apps.local または servicebv2.apps.local に送信します。

App Mesh のコンポーネント

App Mesh は、前の例に示すように、次のコンポーネントで設定されています。

  • サービスメッシュ - サービスメッシュは、その中に存在するサービス間のネットワークトラフィックの論理的な境界です この例では、メッシュは apps という名前で、メッシュの他のすべてのリソースが含まれています。詳細については、「サービスメッシュ」を参照してください。

  • 仮想サービス - 仮想サービスは、実際のサービスを抽象化したもので、仮想ノードが直接または間接的に仮想ルーターによって提供するものです。図では、2 つの仮想サービスが 2 つの実際のサービスを表しています。仮想サービスの名前は、実際のサービスの検出可能な名前です。仮想サービスと実際のサービスの名前が同じ場合、複数のサービスは、AppMesh が実装される前に使用していたのと同じ名前を使用して相互に通信できます。詳細については、「仮想サービス」を参照してください。

  • 仮想ノード — 仮想ノードは、Amazon ECS や Kubernetes サービスなどの検出可能なサービスへの論理ポインタとして機能します。仮想サービスごとに、少なくとも 1 つの仮想ノードがあります。図では、servicea.apps.local 仮想サービスは、serviceA という名前の仮想ノードの設定情報を取得します。serviceA 仮想ノードは、サービス検出用の servicea.apps.local という名前で設定されます。serviceb.apps.local 仮想サービスは、serviceB という仮想ルーターを経由して serviceBserviceBv2 の仮想ノードにトラフィックをルーティングするように設定されています。詳細については、「仮想ノード」を参照してください。

  • 仮想ルーターとルート – 仮想ルーターは、メッシュ内の 1 つ以上の仮想サービスのトラフィックを処理します。ルートは仮想ルータに関連付けられます。仮想ルーターとルート - 仮想ルーターは、メッシュ内の1つまたは複数の仮想サービス用のトラフィックを処理します。先ほどの図では、serviceB 仮想ルーターは、トラフィックの何割かを serviceB 仮想ノードに、何割かを serviceBv2 仮想ノードに向ける経路を持っています。特定の仮想ノードにルーティングされるトラフィックの割合を設定し、時間経過とともに変化させることができます。HTTP ヘッダー、URL パス、または gRPC サービス、メソッド名などの条件に基づいてトラフィックをルーティングできます。応答にエラーがある場合に、接続を再試行するように再試行ポリシーを設定できます。例えば、図の例では、ルートの再試行ポリシーで、serviceb.apps.local が特定のタイプのエラーを返した場合に、serviceb.apps.local への接続を5回再試行し、再試行の間隔を10秒にするように指定できます。詳細については、「仮想ルーター」と「ルート」を参照してください。

  • プロキシ — メッシュとそのリソースを作成した後、プロキシを使用するようにサービスを設定します。プロキシは App Mesh 設定を読み取り、トラフィックを適切に転送します。図では、servicea.apps.local から serviceb.apps.local へのすべてのコミュニケーションは、各サービスとともにデプロイされたプロキシを経由します。サービスは、App Mesh を導入する前に使用したものと同じサービスディスカバリ名を使用して相互に通信します。プロキシは App Mesh 設定を読み取るため、2 つのサービスが相互に通信する方法を制御できます。App Mesh の設定を変更する場合は、サービス自体またはプロキシを変更または再デプロイする必要はありません。詳細については、「Envoy イメージ」を参照してください。

開始方法

App Mesh を使用するには、AWS Fargate、Amazon ECS、Amazon EKS、Kubernetes on Amazon EC2、または Amazon EC2 with Docker で既存のサービスが実行されている必要があります。

App Mesh の使用を開始するには、次のいずれかのガイドを参照してください。

App Mesh にアクセスする

次の方法で App Mesh を使用できます。

AWS Management Console

コンソールは、AppMeshリソースの管理に使用できるブラウザベースのインターフェイスです。App Mesh コンソールは、https://console.aws.amazon.com/appmesh/ で開くことができます。

AWS CLI

一連のさまざまな AWS 製品用のコマンドを提供し、Windows、Mac、および Linux でサポートされています。開始するには、「AWS Command Line Interface ユーザーガイド」を参照してください。App Mesh の詳細については、「AWS CLI コマンドリファレンス」の appmesh を参照してください。

AWS Tools for Windows PowerShell

PowerShell 環境でスクリプトを作成するユーザー向けに、さまざまな AWS 製品用のコマンドが用意されています。開始するには、「AWS Tools for Windows PowerShell ユーザーガイド」を参照してください。App Mesh の cmdlets に関する詳細は、「AWS Tools for PowerShell Cmdlet リファレンス」の「App Mesh」を参照してください。

AWS CloudFormation

必要なすべての AWS リソースを記述するテンプレートを作成できます。テンプレートを使用して、AWS CloudFormation は、リソースをプロビジョニングおよび設定します。開始するには、「AWS CloudFormation ユーザーガイド」を参照してください。App Mesh リソースタイプの詳細については、「App Mesh リソースタイプ」の「AWS CloudFormation テンプレートリファレンス」を参照してください。

AWS SDK

また、さまざまなプログラミング言語から AppMesh にアクセスできるSDKも提供しています。SDK は、自動的に、次のようなタスクを処理します。

  • サービスリクエストに暗号署名する

  • リクエストを再試行する

  • エラーレスポンスの処理をする

利用可能なSDKの詳細については、「アマゾンウェブサービス用のツール」を参照してください。

App Mesh API の詳細については、「AWS App MeshAPI リファレンス」を参照してください。