$30 off During Our Annual Pro Sale. View Details »

ECSサービス間通信に入門しよう!

umehara
July 30, 2024

 ECSサービス間通信に入門しよう!

umehara

July 30, 2024
Tweet

More Decks by umehara

Other Decks in Technology

Transcript

  1. 1 Copyright(C) NRI Netcom, Ltd. All rights reserved. ◼ 基本情報

    ⚫ 梅原 航(うめはら こう) ⚫ NRIネットコム株式会社 Webインテグレーション事業部(@大阪) ⚫ AWSを使ったシステムのインフラ開発・運用に従事 ◼ 好きなAWSサービス ◼ 所有資格 自己紹介 Amazon Elastic Container Service (Amazon ECS) #nncstudy 転載、複製、改変等、および許諾のない二次利用を禁止します
  2. 2 Copyright(C) NRI Netcom, Ltd. All rights reserved. Amazon ECSについて

    01 方法①Elastic Load Balancing 02 方法②Service Discovery 03 方法③AWS App Mesh 04 方法④Service Connect 05 まとめ 06 #nncstudy 転載、複製、改変等、および許諾のない二次利用を禁止します
  3. 3 Copyright(C) NRI Netcom, Ltd. All rights reserved. 1. Amazon

    ECSとは #nncstudy 転載、複製、改変等、および許諾のない二次利用を禁止します
  4. 4 Copyright(C) NRI Netcom, Ltd. All rights reserved. Amazon ECS

    (Elastic Container Service)とは(おさらい) ◼ AWS上で動作するコンテナオーケストレーションサービス ◼ コンピューティングサービスなので、従来のWebサーバーやAPサーバーを担う 1. Amazon ECSとは Virtual private cloud (VPC) Users Elastic Load Balancing Amazon ECS Public subnet Private subnet Amazon Relational Database Service #nncstudy 転載、複製、改変等、および許諾のない二次利用を禁止します
  5. 5 Copyright(C) NRI Netcom, Ltd. All rights reserved. ECSのコンポーネント(おさらい) ◼

    ECSは3つのコンポーネントから構成される ◼ ①タスク ⚫ 実際に動作するコンテナの実行単位 ⚫ タスク定義からインスタンス化したもの ⚫ 一つのタスクは一つのホスト実行される ◼ タスク定義 ⚫ タスクの詳細を定義したもの ⚫ どのdockerイメージを使うか ⚫ どのくらいのスペックをコンテナに割当てるか ⚫ どのポートを使用するか 1. Amazon ECSとは Task Container 1 Container 2 タスク #nncstudy 転載、複製、改変等、および許諾のない二次利用を禁止します
  6. 6 Copyright(C) NRI Netcom, Ltd. All rights reserved. ECSのコンポーネント(おさらい) ◼

    ECSは3つのコンポーネントから構成される ◼ ①タスク ◼ ②サービス ⚫ 実行中のタスクを管理する ⚫ どこのサブネットにタスクを配置するか ⚫ どのLBに紐づけるか ⚫ 何個タスクを作成するか ◼ Auto Scaleさせる場合はこのサービス単位 1. Amazon ECSとは サービス Service Task Container 1 Container 2 タスク #nncstudy 転載、複製、改変等、および許諾のない二次利用を禁止します
  7. 7 Copyright(C) NRI Netcom, Ltd. All rights reserved. ECSのコンポーネント(おさらい) ◼

    ECSは3つのコンポーネントから構成される ◼ ①タスク ◼ ②サービス ◼ ③クラスター ⚫ (ECS on Fargate)サービスを分離する論理的なグループ ⚫ (ECS on EC2)コンテナの実行基盤のEC2グループ 1. Amazon ECSとは Amazon ECS Amazon Elastic Compute Cloud AWS Fargate クラスター サービス Service Task Container 1 Container 2 タスク #nncstudy 転載、複製、改変等、および許諾のない二次利用を禁止します
  8. 8 Copyright(C) NRI Netcom, Ltd. All rights reserved. 別サービスにリクエストしたい場合 ◼

    Auto ScalingなどでECSサービスに含まれるタスクのIPが動的に変化する ◼ サービスAからサービスBに通信するときはサービスBのタスクのIPアドレスを知る方法が必要 1. Amazon ECSとは Amazon ECS クラスター サービスA Service Task Application A 10.0.1.1 Service サービスB Task Application B Task Application B 10.0.2.1 10.0.2.2 #nncstudy 転載、複製、改変等、および許諾のない二次利用を禁止します
  9. 9 Copyright(C) NRI Netcom, Ltd. All rights reserved. 2.方法①Elastic Load

    Balancing #nncstudy 転載、複製、改変等、および許諾のない二次利用を禁止します
  10. 10 Copyright(C) NRI Netcom, Ltd. All rights reserved. Elastic Load

    Balancingを使用する ◼ サービスBをELBのターゲットグループに紐づける ◼ サービスAからサービスBへはELBのエンドポイントにリクエスト ◼ タスクが増えてもターゲットグループに追加される 方法①Elastic Load Balancing Elastic Load Balancing クラスター サービスA Service Task Application A 10.0.1.1 Service サービスB Task Application B Task Application B 10.0.2.1 10.0.2.2 #nncstudy 転載、複製、改変等、および許諾のない二次利用を禁止します
  11. 11 Copyright(C) NRI Netcom, Ltd. All rights reserved. まとめ ◼

    メリット ⚫ ELBの機能を使うことができる ⚫ リクエストのメトリクスを取得可能 ⚫ ECSサービスのデプロイ方法でB/Gデプロイが選択可能 ◼ デメリット ⚫ 追加のインフラが必要になる ⚫ ELB分のコストがかかる ⚫ VPC内のIPアドレスを消費する ⚫ ELB経由のリクエストなので、タスクと直接通信に比べてレイテンシーが増加 ⚫ リトライ処理やタイムアウトなどはアプリで実装する必要あり 方法①Elastic Load Balancing #nncstudy 転載、複製、改変等、および許諾のない二次利用を禁止します
  12. 12 Copyright(C) NRI Netcom, Ltd. All rights reserved. 3.方法②Service Discovery

    #nncstudy 転載、複製、改変等、および許諾のない二次利用を禁止します
  13. 13 Copyright(C) NRI Netcom, Ltd. All rights reserved. タスク起動時にAWS Cloud

    MapがIPアドレスを登録する 方法②Service Discovery クラスター サービスA Service Task Application A 10.0.1.1 Service サービスB Task Application B Task Application B 10.0.2.1 10.0.2.2 Amazon Route 53 Virtual private cloud (VPC) AWS Cloud Map ◼ AWS Cloud MapがECSサービスとタスクのIPアドレスを紐づけて管理 ◼ Route53のプライベートホストゾーンに登録 #nncstudy 転載、複製、改変等、および許諾のない二次利用を禁止します
  14. 14 Copyright(C) NRI Netcom, Ltd. All rights reserved. サービスBへリクエスト時 方法②Service

    Discovery サービスA Service Task Application A 10.0.1.1 Service サービスB Task Application B Task Application B 10.0.2.1 10.0.2.2 ◼ サービスAからのリクエストはRoute53に名前解決 ◼ 名前解決して得られたIPアドレスに直接通信 #nncstudy 転載、複製、改変等、および許諾のない二次利用を禁止します Amazon Route 53 Virtual private cloud (VPC) AWS Cloud Map
  15. 15 Copyright(C) NRI Netcom, Ltd. All rights reserved. コンソールでの設定方法 方法②Service

    Discovery ◼ どういうドメインで名前解決するか ◼ レコードタイプ/TTLの設定 ⚫ A ⚫ AAAA ⚫ SRV #nncstudy 転載、複製、改変等、および許諾のない二次利用を禁止します
  16. 16 Copyright(C) NRI Netcom, Ltd. All rights reserved. Route53プライベートホストゾーン 方法②Service

    Discovery ◼ 「web.service-b-ns」でIPを複数管理してくれる #nncstudy 転載、複製、改変等、および許諾のない二次利用を禁止します
  17. 17 Copyright(C) NRI Netcom, Ltd. All rights reserved. まとめ ◼

    メリット ⚫ Route53のプライベートホストゾーンを使用して名前解決してるだけ ⚫ プライベートホストゾーンなので同一VPC内のリソースからも名前解決可能 ⚫ 追加のインフラも不要 ⚫ 設定方法も簡単 ◼ デメリット ⚫ 名前解決のみなので、トラフィックのメトリクスは取得できない ⚫ リトライ処理やタイムアウトはアプリ側で実装する必要あり 方法②Service Discovery #nncstudy 転載、複製、改変等、および許諾のない二次利用を禁止します
  18. 18 Copyright(C) NRI Netcom, Ltd. All rights reserved. 4.方法③AWS App

    Mesh #nncstudy 転載、複製、改変等、および許諾のない二次利用を禁止します
  19. 19 Copyright(C) NRI Netcom, Ltd. All rights reserved. サービスメッシュ/AWS App

    Meshとは ◼ サービスメッシュとは ⚫ 通信自体をenvoyプロキシが代理で行ってくれる ⚫ タイムアウトやリトライ処理もenvoyプロキシで行ってくれる ◼ AWS App Meshとは ⚫ サービスメッシュを実現するためのサービス ⚫ ECSタスクにenvoyプロキシのサイドカーコンテナがデプロイ ⚫ AWS App Meshはそのenvoyプロキシを管理してくれるコントロールプレーン ⚫ AWS App Meshに通信の制御の設定を入れておく 方法③AWS App Mesh #nncstudy 転載、複製、改変等、および許諾のない二次利用を禁止します
  20. 20 Copyright(C) NRI Netcom, Ltd. All rights reserved. タスク起動時 方法③AWS

    App Mesh クラスター AWS App Mesh AWS Cloud Map サービスA Service Task Application A Container 10.0.1.1 Service サービスB Task 10.0.2.1 Application B Container ◼ AWS App Meshに追加した設定がenvoyに反映 ◼ タスクのIPアドレスがCloud Mapに登録 #nncstudy 転載、複製、改変等、および許諾のない二次利用を禁止します
  21. 21 Copyright(C) NRI Netcom, Ltd. All rights reserved. ◼ Cloud

    MapにIPアドレスを問い合わせ ◼ 得たIPアドレスから直接通信 ◼ 通信自体を制御するのでメトリクスも出力 リクエスト時 方法③AWS App Mesh クラスター AWS App Mesh AWS Cloud Map サービスA Service Task Application A Container 10.0.1.1 Service サービスB Task 10.0.2.1 Application B Container Amazon CloudWatch #nncstudy 転載、複製、改変等、および許諾のない二次利用を禁止します
  22. 22 Copyright(C) NRI Netcom, Ltd. All rights reserved. まとめ ◼

    メリット ⚫ AWS App Meshを使用するので、トラフィック制御を柔軟に設定できる ⚫ 信頼性と可観測性の向上 ◼ デメリット ⚫ 柔軟に設定できるゆえに複雑になる ⚫ ECSに加えてApp Meshの管理も必要 ⚫ envoyプロキシ用のコンピュートリソースが必要 方法③AWS App Mesh #nncstudy 転載、複製、改変等、および許諾のない二次利用を禁止します
  23. 23 Copyright(C) NRI Netcom, Ltd. All rights reserved. 5. 方法④Service

    Connect #nncstudy 転載、複製、改変等、および許諾のない二次利用を禁止します
  24. 24 Copyright(C) NRI Netcom, Ltd. All rights reserved. Service Connect概要

    ◼ re:Invent2022に発表 ◼ これまでの3つの方法のいいとこ取り ⚫ ELBのようにメトリクス取得できる ⚫ Service Discoveryみたいにシンプルに設定できる ⚫ AWS App Meshのように信頼性がある ◼ サービスメッシュ形式でService Connectサイドカーがデプロイされる ⚫ 通信のメトリクスも出力 • リクエスト数 • 1タスクあたりのリクエスト数 • httpレスポンスコード • レスポンスタイム • アクティブコネクション数 ⚫ プロキシにはデフォルト設定が入ってる • ラウンドロビン負荷分散 • 2回リトライ • デフォルト15秒でタイムアウト(設定可能可能) • 通信のTLS暗号化 • ハズレ値検知 方法④Service Connect #nncstudy 転載、複製、改変等、および許諾のない二次利用を禁止します
  25. 25 Copyright(C) NRI Netcom, Ltd. All rights reserved. ◼ デフォルトの通信制御が入ったService

    Connectサイドカーコンテナが起動 ◼ サービスに含まれるタスクのIPアドレスがAWS Cloud Mapに登録 タスク起動時 方法④Service Connect クラスター サービスA Service Task Application A 10.0.1.1 Service サービスB Task Application B 10.0.2.1 AWS Cloud Map ECS Service Connect ECS Service Connect #nncstudy 転載、複製、改変等、および許諾のない二次利用を禁止します
  26. 26 Copyright(C) NRI Netcom, Ltd. All rights reserved. ◼ AWS

    Cloud MapにIPアドレスを問い合わせ ◼ 得たIPアドレスから直接通信 ◼ 通信自体を制御するのでメトリクスも出力 リクエスト時 方法④Service Connect サービスA Service Task Application A 10.0.1.1 Service サービスB Task Application B 10.0.2.1 AWS Cloud Map ECS Service Connect ECS Service Connect Amazon CloudWatch #nncstudy 転載、複製、改変等、および許諾のない二次利用を禁止します
  27. 27 Copyright(C) NRI Netcom, Ltd. All rights reserved. コンソールでの設定方法 方法④Service

    Connect #nncstudy 転載、複製、改変等、および許諾のない二次利用を禁止します
  28. 28 Copyright(C) NRI Netcom, Ltd. All rights reserved. コンソールでの設定方法 方法④Service

    Connect #nncstudy 転載、複製、改変等、および許諾のない二次利用を禁止します
  29. 29 Copyright(C) NRI Netcom, Ltd. All rights reserved. まとめ ◼

    メリット ⚫ 追加インフラ不要 ⚫ 信頼性と可観測性の向上 ⚫ 設定もシンプル ⚫ 他クラスターや他VPCの接続も可能 ◼ デメリット ⚫ Service Connect Agent用のコンピュートリソースが必要 ⚫ ECSサービスのデプロイ方法はローリングアップデートのみ ⚫ ECS間だけしか通信できない 方法④Service Connect #nncstudy 転載、複製、改変等、および許諾のない二次利用を禁止します
  30. 30 Copyright(C) NRI Netcom, Ltd. All rights reserved. 6.まとめ #nncstudy

    転載、複製、改変等、および許諾のない二次利用を禁止します
  31. 31 Copyright(C) NRI Netcom, Ltd. All rights reserved. まとめ ◼

    AWSのドキュメントでは「Service Connect」が推奨されている 方式\観点 可観測性 信頼性 柔軟性 手軽さ 追加リソース 追加インフラ 備考 ELB ◯ ✕ ◯ △ 不要 要 ELBの機能を使える。 BGデプロイ Service Discovery ✕ ✕ ✕ ◯ 不要 不要 同一VPCからも接続 可能 AWS App Mesh ◯ ◯ ◯ ✕ 要 不要 App Meshの管理が 必要 Service Connect ◯ ◯ △ ◯ 要 不要 他クラスターや他VPC のECSサービスからも 接続可能 #nncstudy 転載、複製、改変等、および許諾のない二次利用を禁止します