ECS 튜토리얼을 보면서 시도했습니다.
ECS 개요
이 그림을 빌려 ...
ECS Getting Start
Cluster : ECS를 묶는 것, 일반적인 서버 군의 보통 Cluster를 상상하면 좋다
서비스 : ECS의 태스크 정의에서 지정된 수의 인스턴스를 시작하고 동시에 실행하고 유지합니다. 예를 들어 Task가 떨어지면 Service에서 지정한 수보다 작아지기 때문에 자동으로 하나의 태스크가 자동 시작
Task definition: Docker 이미지나 CPU 메모리, link 등을 정의하는 것
사전 작업
미리 다음 두 가지를 만들어 둡니다.
· VPC 1개
- 이번에는
10.0.0.0/16
로 만들었다· 생성 된 VPC 내에 두 개의 서브넷 (다른 AZ에서)
-
ap-northeast-1a
에 10.0.0.0/24
와 ap-northeast-1c
에 10.0.1.0/24
를 만들었습니다.Amazon ECS 클러스터 이름 설정
먼저 Amazon ECS CLI에서 사용할 Amazon ECS 클러스터 이름을 설정합니다. 이 정보는 로컬 환경 (이번에는 MAC)의
~./ecs/config
에 저장됩니다.$ ecs-cli configure --cluster ClusterA --region ap-northeast-1 --default-launch-type EC2 --config-name clustername
--config-name
는 clustername
는 나중에 사용할 것이므로 기억하십시오. 잊으면 ~./ecs/config
의 내용을 본다클러스터 만들기
【전제 조건】
· keypair는 "webkey.pem"(이것은 미리 aws console에서 작성해 두는 것)
・2대의 t2.medium를 작성한다.
$ ecs-cli up --keypair webkey.pem \
--capability-iam \
--size 2 \
--instance-type t2.medium \
--cluster-config clustername \
--vpc vpc-0fcXXXXXXXXXXXXXX \
--subnets subnet-0eef76fXXXXXXXXX,subnet-07a826YYYYYYYYYY
INFO[0000] Using recommended Amazon Linux AMI with ECS Agent 1.20.1 and Docker version 18.03.1-ce
INFO[0000] Created cluster cluster=ClusterA region=ap-northeast-1
INFO[0001] Waiting for your cluster resources to be created...
INFO[0001] Cloudformation stack status stackStatus=CREATE_IN_PROGRESS
INFO[0062] Cloudformation stack status stackStatus=CREATE_IN_PROGRESS
INFO[0122] Cloudformation stack status stackStatus=CREATE_IN_PROGRESS
Security Group created: sg-0a599d11111111111
Cluster creation succeeded.
이것은 Cloudformation에서 창조된다.
덧붙여서 상기는 1대로 만들었지만 4대로 하고 싶은 경우는,
scale
옵션으로 변경을 실시한다.scale
를 사용하여 변경할 수있는 내용은 ECS Scale을 참조하십시오.$ ecs-cli scale --size 4 --capability-iam
와 같이
scale
를 붙인다. 이 경우 처음 생성한 EC2 인스턴스는 다운되지 않고 추가 2대에서 총 4대가 됩니다.docker-compose.yml 만들기
이제 Docker 컨테이너를 만들고
docker-compose.yml
를 만듭니다.이것은 Docker에 익숙한 파일이다. 이것과
Dockerfile
를 조합해 다음번은 해 보려고 한다.version: '3'
services:
wordpress:
image: wordpress
ports:
- "80:80"
links:
- mysql
logging:
driver: awslogs
options:
awslogs-group: kumonavi-wordpress
awslogs-region: ap-northeast-1
awslogs-stream-prefix: wordpress
mysql:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: password
logging:
driver: awslogs
options:
awslogs-group: kumonavi-mysql
awslogs-region: ap-northeast-1
awslogs-stream-prefix: mysql
그런 다음
ecs-param.yml
를 만듭니다. 이것은 CPU나 메모리의 정보를 기록한 것으로 docker-compose.yml
가 Version3의 경우는 작성할 필요가 있다.version: 1
task_definition:
services:
wordpress:
cpu_shares: 100
mem_limit: 524288000
mysql:
cpu_shares: 100
mem_limit: 524288000
서비스를 만듭니다.
이번에는
docker-compose.yml
에 기재한 wordpress의 WEB+DB를 작성한다.아래의
up
명령은 create
와 start
의 조합 기술입니다. create
에서 서비스 정의를 만들고 start
에서 작업 정의에서 하나의 Amazon ECS 작업을 시작합니다.$ ecs-cli compose service up --cluster-config kumonavicluster
INFO[0000] Using ECS task definition TaskDefinition="ecs:2"
INFO[0000] Created an ECS service service=ecs taskDefinition="ecs:2"
INFO[0000] Updated ECS service successfully desiredCount=1 serviceName=ecs
INFO[0015] (service ecs) has started 1 tasks: (task AAAA-22222ー333333
-1111111111). timestamp="2018-08-15 00:52:25 +0000 UTC"
INFO[0090] Service status desiredCount=1 runningCount=1 serviceName=ecs
INFO[0090] (service ecs) has reached a steady state. timestamp="2018-08-15 00:53:42 +0000 UTC"
INFO[0090] ECS Service has reached a stable state desiredCount=1 runningCount=1 serviceName=ecs
서비스를 두 가지로 만들기
$ ecs-cli compose service scale 2
확인 작업
$ ecs-cli ps
Name State Ports TaskDefinition
485cb1ed-1e40-11111-2222-a5e47aw31253a/mysql RUNNING ecs:3
485cb1ed-1e40-11111-2222-a5e47a22223a/wordpress RUNNING 1.1.2.2:80->80/tcp ecs:3
4f4d1431-df3d-11111-2222-69f432222268/mysql RUNNING ecs:3
4f4d1431-df3d-4616-a9a8-69f43b22228/wordpress RUNNING 1.1.3.3:80->80/tcp ecs:3
청소
마지막은 청소합니다.
우선 서비스를 삭제합니다.
ecs-cli compose service rm --cluster-config cluster-name
그런 다음 클러스터를 삭제합니다.
ecs-cli down --force --cluster-config cluster-name
Reference
이 문제에 관하여(ECS 튜토리얼을 보면서 시도했습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Macaron_Suke/items/899154505acfde5b7c0e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)