Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Amazon ECS事始め

1,018 views

Published on

AmazonECS使ってみたので、共有です!

Published in: Technology
  • Be the first to comment

Amazon ECS事始め

  1. 1. Amazon ECS事始め - Amazon EC2 Container Service - — Author: Junya Nakazato © CA Advance, Inc. All Rights Reserved 1
  2. 2. 自己紹介 • 株式会社シーエーアドバンス • 仲里 淳矢 業務内容 • アメーバサービスの監視システム構築 • 監視対象・オペレータの分析レポート © CA Advance, Inc. All Rights Reserved 2
  3. 3. 目次 • Amazon ECSとは • ECS構成要素 • 事例紹介(成果物) • Blue-Greenデプロイ • 苦労した点・まとめ © CA Advance, Inc. All Rights Reserved 3
  4. 4. Amazon ECSとは • Aamazon EC2 Container Serviceの略 • Dockerのコンテナを管理サービス • ECSに登録したEC2上でコンテナを起動してくれる • リソーススケジューラー機能搭載 • docker-compose+docker-swarmっぽい • ELB, AutoScaling, RDS, IAM等と連携すると素敵 © CA Advance, Inc. All Rights Reserved 4
  5. 5. ECS構成要素 • Container Instance(EC2) • Cluster • Task/Task Definitions • Container: Dockerコンテナ © CA Advance, Inc. All Rights Reserved 5
  6. 6. Container Instance dockerが動くサーバ • EC2(VPC) • Docker • ECS Agent(dockerコンテナ) © CA Advance, Inc. All Rights Reserved 6
  7. 7. Cluster Container Instance群 • ECSのリソース源 • リージョンに閉じてる • Container Instanceの集合体 © CA Advance, Inc. All Rights Reserved 7
  8. 8. Cluster設定 EC2のユーザーデータにコマンドを設定 /etc/ecs/ecs.configに変数を叩きこめばOK © CA Advance, Inc. All Rights Reserved 8
  9. 9. © CA Advance, Inc. All Rights Reserved 9
  10. 10. © CA Advance, Inc. All Rights Reserved 10
  11. 11. © CA Advance, Inc. All Rights Reserved 11
  12. 12. Task アプリで利用するコンテナの集合 • 1Task=1App • Task Definition • docker-composeみたいなやつ • json © CA Advance, Inc. All Rights Reserved 12
  13. 13. Task Definitions設定 • イメージ(ubuntu, ruby, nginx等)指定 • Docker Hub, docker-registryから選択 • 環境変数, ボリューム, ネットワーク • コンテナに割り当てるリソース(memory, CPU) © CA Advance, Inc. All Rights Reserved 13
  14. 14. © CA Advance, Inc. All Rights Reserved 14
  15. 15. © CA Advance, Inc. All Rights Reserved 15
  16. 16. 事例紹介(成果物) • ECSで管理されたrailsアプリの構築 • Jenkins • railsアプリのデプロイ © CA Advance, Inc. All Rights Reserved 16
  17. 17. © CA Advance, Inc. All Rights Reserved 17
  18. 18. Webアプリをデプロイする流れ • アプリ(Service)の設定をTask Definitionsに定義 • Clusterを作成 • ClusterにEC2を登録(CloudFormation/手作業) • ClusterにServiceを登録 • ELBにTaskを紐付け © CA Advance, Inc. All Rights Reserved 18
  19. 19. やったこと(AWS) • Cloudformationリソース自動生成 • AutoScaleGroup(ASG), EC2, ELB, SecurityGroup • AZ別でサーバーを構築し、冗長性担保 • EC2 AutoScaling対応 • S3に画像などのリソースをバックアップ • CloudFrontでassetsを配信 © CA Advance, Inc. All Rights Reserved 19
  20. 20. やったこと(Jenkins) • CI環境 • masterへのpushをフックし、dockerイメージビルド • 環境ごと差し替えるBlue-Green Deployを採用 • バックアップ体制 • Jenkins_homeをS3へバックアップ • アプリ側のリソースをS3へ © CA Advance, Inc. All Rights Reserved 20
  21. 21. Blue-Green Deploy © CA Advance, Inc. All Rights Reserved 21
  22. 22. Phase1:通常構成 © CA Advance, Inc. All Rights Reserved 22
  23. 23. Phase2:デプロイ検知 ASG+ECSで新環境を構築 新環境もELBに接続 © CA Advance, Inc. All Rights Reserved 23
  24. 24. Phase3:通常構成へ移行 旧環境を破棄 © CA Advance, Inc. All Rights Reserved 24
  25. 25. 苦労した点 • 自分がAWS初心者だった • 手作業排除方法の調査(Cloudformation, ECS, ASG) • 閉じた環境によるDockerデプロイ環境の構築 • Blue-Green Deployの概念・実装方法の理解 • Jenkinsもdockerで用意したところ、job実行者がdocker上の Jenkinsユーザーなので権限周りで激ハマり © CA Advance, Inc. All Rights Reserved 25
  26. 26. 所感・まとめ • 念願のAWS入門ができた • Cloudformation, ECS, ASGを利用したWebAppの構築 • dockerによるJenkinsセットアップ • JenkinsでECS, ASGを利用し、Blue-Greenデプロイ • バックアップ体制: Jenkinsデータ, Appのリソース系, RDS © CA Advance, Inc. All Rights Reserved 26
  27. 27. docker ❤ ENJOY!© CA Advance, Inc. All Rights Reserved 27

×