블루 그린 배포를 aws cli로 한다.

jinwook han·2020년 9월 29일
0

이 블로그 포스트는 책 '서비스 운영이 쉬워지는 AWS 인프라 구축 가이드' 5장 실습 내용을 기반으로 합니다.

aws cli를 사용한 부분은 책의 내용이 아닙니다.

블루 그린 배포 방법:

  1. 두 가지 ami를 만든다.(블루, 그린)
  2. 두 가지 launch template을 만든다.(블루, 그린)
  3. 블루 launch template를 담은 블루 auto scaling group을 만든다.
  4. 그린 launch template를 담은 그린 auto scaling group을 만든다.
  5. 블루 auto scaling group의 capacity를 min1 max1 desire1로 바꾼다.
  6. 그린 auto scaling group의 capacity를 min1 max1 desire1로 바꾼다.
  7. 블루 auto scaling group, 그린 auto scaling group을 target group에 붙인다.(load balancer, target group은 이미 만들어져 있다고 가정한다.)
  8. 블루, 그린이 모두 응답을 load balancer에게 보내고 있는지 확인한다.
  9. 블루를 target group에서 뺀다.

aws cli를 활용한다

1. 두 가지 ami를 만든다.(블루, 그린)

ami 만드는 명령어:

https://docs.aws.amazon.com/cli/latest/reference/ec2/create-image.html

aws ec2 create-image --instance-id 블루_ami--name "blue ami" --description "blue ami"
aws ec2 create-image --instance-id 그린_ami --name "green ami" --description "green ami"

블루 ami에는 옛날 코드가 들어가 있고, 그린 ami에는 새로운 코드가 들어가 있습니다.

2. 두 가지 launch template을 만든다.(블루, 그린)

launch template을 만드는 명령어:

https://docs.aws.amazon.com/cli/latest/reference/ec2/create-launch-template.html

aws ec2 create-launch-template \
    --launch-template-name 블루_launch_template \
    --launch-template-data '{"ImageId": "블루_ami_id","SecurityGroupIds":["알맞는_security_group"],"KeyName": "ssh_접속을_위한_키_이름","InstanceType":"알맞는_인스턴스_타입"}'

3. 두 가지 auto scaling group을 만든다.(블루, 그린)

https://docs.aws.amazon.com/cli/latest/reference/autoscaling/create-auto-scaling-group.html

aws autoscaling create-auto-scaling-group --auto-scaling-group-name 블루_auto_scaling_group \
--launch-template LaunchTemplateId=블루_launch_template_id\
--min-size 0 --max-size 0 \
--availability-zones 알맞는_존(ex: ap-northeast-2c)

aws autoscaling create-auto-scaling-group --auto-scaling-group-name 그린_auto_scaling_group \
--launch-template LaunchTemplateId=그린_launch_template_id\
--min-size 0 --max-size 0 \
--availability-zones 알맞는_존(ex: ap-northeast-2c)

4. 블루 auto scaling group의 capacity를 min1 max1 desire1로 바꾼다.

https://docs.aws.amazon.com/cli/latest/reference/autoscaling/update-auto-scaling-group.html

aws autoscaling update-auto-scaling-group \
--auto-scaling-group-name 블루_auto_scaling_group \
--min-size 1 --max-size 1 --desired-capacity 1

5. 그린 auto scaling group의 capacity를 min1 max1 desire1로 바꾼다.

aws autoscaling update-auto-scaling-group \
--auto-scaling-group-name 그린_auto_scaling_group \
--min-size 1 --max-size 1 --desired-capacity 1

6. 블루 auto scaling group, 그린 auto scaling group을 target group에 붙인다.(load balancer, target group은 이미 만들어져 있다고 가정한다.)

https://docs.aws.amazon.com/cli/latest/reference/autoscaling/attach-load-balancer-target-groups.html

aws autoscaling attach-load-balancer-target-groups \
--auto-scaling-group-name 블루_auto_scaling_group  \
--target-group-arns target_group_주소

aws autoscaling attach-load-balancer-target-groups \
--auto-scaling-group-name 그린_auto_scaling_group  \
--target-group-arns target_group_주소

8. 블루, 그린이 모두 응답을 load balancer에게 보내고 있는지 확인한다.

9. 블루를 target group에서 뺀다.

https://docs.aws.amazon.com/cli/latest/reference/autoscaling/detach-load-balancer-target-groups.html

aws autoscaling detach-load-balancer-target-groups \
--auto-scaling-group-name 블루_auto_scaling_group \
--target-group-arns taget_group_주소

0개의 댓글