有一天路過 AWS ECS

架構

ECS(Elastic Container Service) 是 AWS 上的容器管理服務,架構上可以簡單分成幾層:

  • Cluster 一個群集 :)
  • Service 可以把它當作 “執行企劃”,就像是一個 docker-compose 將多個 docker 服務包裝起來
  • Task 由 Service 產生的工作任務,負責維護 Container 的部署,在 EC2 模式就是他負責部署服務到機器上的
  • Container 你的 AP 在這裡,他就是最底層的容器服務啦

分成兩種模式,差別在底層的機器是否需要自己管理, 無論是哪種都可以做 Auto Scaling 來確保服務的可用性

  • Fargate mode ECS 的預設選擇模式,是比較後來才出來的功能。 不需要自己來管理底層的機器(EC2),還會幫忙處理掉 Auto Scaling 和 loading balance,讓開發人員可以專注在服務、網路層級,推薦使用
  • EC2 mode 底層的機器是自己分配的 EC2 instance,也可以設定 Spot 模式在不需要的時候是關機的,價格低非常多

按照官方教的走

https://docs.aws.amazon.com/zh_tw/AmazonECS/latest/developerguide/ecs-cli-tutorial-fargate.html

# 一個新的 ECS Cluster
ecs-cli configure --cluster silkrode --default-launch-type FARGATE --config-name tutorial --region ap-northeast-1
ecs-cli configure profile --access-key AKIAW5********SDNHKT --secret-key YFFP36xe+b********pnOSlVT1+JLs7Ck07kGYJS --profile-name tutorial-profile
ecs-cli up --cluster-config tutorial --ecs-profile tutorial-profile
aws ec2 describe-security-groups --filters Name=vpc-id,Values=vpc-0d0b9a2b847dd6eaf --region ap-northeast-1
aws ec2 authorize-security-group-ingress --group-id sg-0a8d7d69bd7302908 --protocol tcp --port 8000 --cidr 0.0.0.0/0 --region ap-northeast-1

docke-compose.yml

version: '3'
services:
  web:
    image: xiao4011/toolbox
    ports:
      - "8000:8000"
    depends_on:
      - "redis"
    logging:
      driver: awslogs
      options:
        awslogs-group: tutorial
        awslogs-region: ap-northeast-1
        awslogs-stream-prefix: web
  redis:
    image: redis

ecs-params.yml

version: 1
task_definition:
  task_execution_role: ecsTaskExecutionRole
  ecs_network_mode: awsvpc
  task_size:
    mem_limit: 0.5GB
    cpu_limit: 256
run_params:
  network_configuration:
    awsvpc_configuration:
      subnets:
        - subnet-007b5172614cc7c27
      security_groups:
        - sg-0a8d7d69bd7302908
      assign_public_ip: ENABLED
ecs-cli compose --project-name tutorial service up --create-log-groups --cluster-config tutorial --ecs-profile tutorial-profile

服務開完就關掉惹 XDD

Ref

AWS ECS vs Kubernetes: https://cloud.netapp.com/blog/aws-ecs-vs-kubernetes-an-unfair-comparison ECS介紹 (EC2 mode & Fargate mode) https://youtu.be/22IsSW3YD0A https://docs.aws.amazon.com/AmazonECS/latest/developerguide/clusters.html