본문 바로가기
개발/AWS

AWS ALB, AutoScalingGroup 활용해서 Blue-Green 배포 테스트

by 궁즉변 변즉통 통즉구 2022. 3. 9.
반응형

Blue-Green 배포

  • 대체 환경을 생성하여 점진적으로 트래픽을 전환하는 방식
  • 로드밸런서의 설정(등록/해제) 변경으로 롤백이 빠름
  • 배포 과정에서 요청량을 처리하는 인스턴스 개수가 줄지 않음
  • 배포 과정에서 인스턴스의 수를 2배로 늘려야 함으로 배포준비 시간이 오래 걸림

 

Blue/Green 배포를 위해 일단 기존 환경인 Blue환경을 확인한 후 신규 버전인 Green 환경 구성하여 로드밸런서 설정을 진행한다.

 

기존 Blue환경 구성 확인

* 기존 환경 구성 참조: https://happy-jjang-a.tistory.com/70

- ASG에 "mytest-nginx-asg" 그룹과 로드밸런서에 대상 그룹 설정되어 있음

- 로드밸런서 설정: 리스너 HTTP:80 대상그룹

- 로드밸런서를 통한 기존 환경 접속 확인

 

신규 Green환경 구성 

1. 신규 AMI 생성

- 기존 nginx가 실행된 EC2에 접속하여 index.html 파일 수정

cd /usr/share/nginx/html
vi index.html

- "Welcome to nginx! - web 2"로 수정(기존 Blue환경은 "1"이 었음)

- 위의 EC2 '중지'하고 '이미지 및 템플릿 > 이미지 생성' 실행

- 이미지 이름설명 입력하고 생성

 

2. 시작템플릿 생성 

- 시작템플릿으로 가서 기존Blue환경에서 사용하던 템플릿 선택 후 '작업 > 템플릿 수정(새 버전 생성)' 선택, 템플릿 수정없이 새로운 시작 템플릿을 생성해도 상관없음

- [시작 템플릿 콘텐츠] 영역에서 위에서 신규로 생성한 AMI 선택 후 생성

- 최신버전이 1 올라감(기존 버전이 4였어서 최신버전이 5가 되었음)

 

3. 대상그룹 생성 

- '대상그룹 생성' 클릭

- '인스턴스' 유형에 대상 그룹 이름 "my-test-TG-web2"으로 생성(인스턴스 등록은 불필요)

 

4. ASG(Auto Scaling Group) 생성 

- ASG 생성 클릭

- ASG 그룹 이름 입력, 시작 템플릿 선택 시 위에서 생성한 시작템플릿 및 버전 선택

- 네트워크 설정은 기존  Blue환경과 동일하게 설정

- '기존 로드밸런서에 연결' 선택 후 위에서 생성한 대상그룹 선택 후 나머지는 모두 '다음'으로 넘기고 ASG 생성 완료 시킴 

- ASG 2개 생성 됨

 

5. 로드밸런서 설정

- 로드밸런서 리스너 HTTP: 80 체크 후 '편집' 클릭

- 대상그룹 "my-test-TG-web2" 추가 후 저장

- 로드밸런서로 접속하면 기존 버전(Blue)과 신규 버전(Green) 번갈아 가면서 실행됨(로드밸런서 기반 Blue-Green 트래픽 가중치 50%씩 동작)

- 신규 버전 잘 반영되는 거 확인됐으니 로드밸런서에서 기존 Blue 버전 제거, 로드밸런서 리스너 HTTP: 80 체크 후 '편집' 클릭 후 기존 대상그룹 삭제

- 나머지 Blue 환경쪽 ASG, 대상그룹 삭제하면 Green환경만 남음

반응형

댓글