ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [AWS] 블루/그린(Blue/Green) 방식으로 무중단 배포하기
    Cloud/AWS 2021. 4. 13. 14:57
    728x90
    반응형

    AWS Blue/Green 배포 실습하기

    블루/그린(Blue/Green) 방식이 무엇인지 잘 모르겠다면 여기 를 먼저 읽고 오는 것을 추천합니다.

     

    그럼 바로 실습을 진행해보겠습니다. 먼저 Auto Scaling Group을 만들겠습니다. (먼저 블루 그룹을 만드는 것입니다.)

     

    스크린샷 2021-04-09 오후 4 37 52스크린샷 2021-04-09 오후 4 39 56

     

    스크린샷 2021-04-09 오후 4 40 44

     

    시작 템플릿을 통해서 이미지와 인스턴스 유형을 등록해주면 Auto-Scaling을 통해서 템플릿 스펙에 맞게 인스턴스가 생성됩니다. 

     

     

    스크린샷 2021-04-09 오후 4 42 14

     

     

     

    Auto-Scaling 그룹 만들기

     

    스크린샷 2021-04-09 오후 4 45 21

     

    그리고 위와 같이 만든 시작 템플릿을 등록하겠습니다.

     

     

    스크린샷 2021-04-09 오후 4 48 17

     

    그리고 위와 같이 가용영역 두 개를 지정하겠습니다. 이렇게 두개를 지정하면 Auto Scaling을 통해 인스턴스를 만들 때 가용영역을 번갈아 가면서 만들기 때문에 하나의 가용영역에 문제가 생겨도 상대적으로 영향을 덜 받을 수 있게 됩니다.

     

     

    스크린샷 2021-04-09 오후 4 53 01

     

    기존에 만들었던 로드 밸런서를 연결하겠습니다.

     

     

    스크린샷 2021-04-12 오전 11 09 15

     

    그 외에 설정은 Default로 두고 다음을 누르겠습니다.

     

     

    스크린샷 2021-04-09 오후 5 03 06

     

    Auto Scaling 그룹의 크기를 구성하려면최소, 최대 및 원하는 용량을 설정합니다. 원하는 용량은 그룹의 최소 크기보다 크거나 같고 그룹의 최대 크기보다 작거나 같아야 합니다.(용량 설정은 지금 실습에서는 모두 1로 해도 될 거 같습니다.)

    • 원하는 용량: 그룹 내 목표로 하는 인스턴스 수, 평상시에 유지하고 있을 인스턴스 수
    • 최소 용량: 그룹 내 최소 유지할 인스턴스 수 예를들어 최소가 2이면 자동조정 정책이나 사람에 의해 인스턴스 수를 2개 미만으로 줄일 수 없습니다.
    • 최대 용량: 그룹 내 최대 유지할 인스턴스 수

     

     

     

    스크린샷 2021-04-09 오후 5 06 11

     

    저는 평균 CPU 사용률을 사용하겠습니다. 즉, 위와 같이 50이라고 지정했으면 평균 CPU 사용량이 50이 넘을 때 Auto Scaling이 일어나는 것입니다.

     

     

    스크린샷 2021-04-09 오후 5 08 27스크린샷 2021-04-09 오후 5 10 56스크린샷 2021-04-13 오후 1 59 11

     

    그리고 위와 같이 로드밸런서의 DNS 주소로 접속했을 때 AMI 이미지를 만들 때 쓰였던 EC2와 같은 결과가 나온다면 잘 연결된 것입니다.

     

     

     

    새로운 버전의 코드를 적용한 AMI와 시작 템플릿 생성

    이제 코드를 새로운 것으로 업데이트 한 후에 Blue/Green 배포 방식을 사용해서 진행해보겠습니다.

     

    스크린샷 2021-04-13 오후 2 03 14

     

    위와 같이 약간의 소스 코드를 수정한 후에 새로운 AMI를 만들어 시작 템플릿에 적용한 후에 배포를 해보겠습니다.

     

     

    스크린샷 2021-04-13 오후 2 05 30

     

    먼저 새로운 버전의 AMI를 만들기 위해서 소스 코드 변경이 일어난 인스턴스의 AMI를 생성하겠습니다. 그리고 이미지 이름만 지정하고 나머지는 그대로 두고 이미지를 생성하겠습니다.

     

     

    스크린샷 2021-04-13 오후 2 08 13

     

    그러면 위와 같이 새로운 버전의 코드를 담고 있는 이미지가 만들어진 것을 볼 수 있습니다. 그리고 시간이 좀 지나면 이미지가 available 상태가 될 것입니다. (이미지를 만드는 최신화가 되는 소스 코드를 갖고 있는 EC2는 중지 상태로 해놓다가 AMI를 새로 만들어야 할 때만 시작해도 좋습니다.)

     

    스크린샷 2021-04-13 오후 2 13 33

     

    그리고 시작 템플릿으로 가서 새로운 AMI를 등록하면서 시작 템플릿을 만들겠습니다.

     

    스크린샷 2021-04-13 오후 2 14 56스크린샷 2021-04-13 오후 2 15 31

     

    여기서는 위에서 만들었던 시작 템플릿과는 다르게 새로운 AMI 이미지를 등록하는 것을 볼 수 있습니다. 

     

    스크린샷 2021-04-13 오후 2 36 09

     

    위와 같이 새로운 이미지를 등록하고 인스턴스 유형에는 프리티어로 사용할 수 있는 t2.micro를 선택하고 시작 템플릿을 만들겠습니다. 보안그룹은 새로 만들어도 되고 기존에 본인이 쓰던 것으로 만들어도 됩니다. (22, 80번 포트가 열려있는 보안그룹이면 아무거나 상관 없습니다.)

     

    스크린샷 2021-04-13 오후 2 17 42

     

    그러면 위와 같이 현재 배포 중인 시작 템플릿업데이트 하고자 하는 시작 템플릿이 존재합니다.

     

     

     

    새로운 시작 템플릿을 적용한 그린 그룹을 생성하기

    스크린샷 2021-04-13 오후 2 20 24

     

    이와 같이 시작 템플릿만 새로운 것으로 교체하고 뒤에서 하는 설정들은 위에서 만들었던 것과 똑같이 한 후에 다시 한번 만들겠습니다.

    그리고 Auto Scaling Group을 만들었으면 EC2 하나가 생성될 것이고 조금 기다렸다가 로드밸런서-대상그룹을 확인해보면 아래와 같이 healthy 상태인 것을 볼 수 있습니다.

     

    스크린샷 2021-04-13 오후 2 39 37

     

     

    로드 밸런서로 확인해보기

    스크린샷 2021-04-13 오후 2 42 13스크린샷 2021-04-13 오후 2 43 41

     

    그래서 위와 같이 로드밸런서 DNS로 접속해보면 Blue/Green 그룹이 번갈아가면서 출력되는 것을 볼 수 있습니다. 이와 같이 잠시 동안 배포 서버, 업데이트 된 서버가 동시에 트래픽을 받고 있습니다. 잘 작동하는 것을 확인했기 때문에
    Blue Group 서버는 제거해야 합니다.

     

    스크린샷 2021-04-13 오후 2 47 18

     

    위와 같이 Blue Group에 속하는 인스턴스를 등록 취소 하겠습니다.

     

     

    스크린샷 2021-04-13 오후 2 50 39

     

    그러면 위와 같이 새로 소스 코드가 업데이트 된 Green Group 인스턴스만 계속 트래픽을 받는 것을 볼 수 있습니다. 그리고 현재 서버에 문제가 없다는 것을 확신해서 Blue Group으로 롤백 할 일이 없다면 기존의 Auto Scaling Group과 EC2 인스턴스는 종료 및 삭제해도 됩니다.

     

    이렇게 블루/그린(Blue/Green) 무중단 배포 과정에 대해서 알아보았습니다. 하지만 소스 코드 변경이 일어날 때마다 매 번 EC2 AMI를 만들고 수작업을 하는 것은 쉽지 않을 것입니다. 그래서 다음 글에서는 CodeDeploy를 사용하여 자동화 배포를 하는 과정에 대해서 다뤄보겠습니다.

    반응형

    댓글

Designed by Tistory.