Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.
Avatar for umehara umehara
July 30, 2024

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

Avatar for umehara

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 転載、複製、改変等、および許諾のない二次利用を禁止します