티스토리 뷰

이전 글에서는 하나의 EC2에 CodeDeploy를 통해 node 프로젝트를 자동으로 배포하였습니다. 하지만 이후 로드 밸런서를 추가하면서 EC2가 다른 가용영역에 하나 더 생성되었기 때문에 두개의 EC2에 같은 소스를 자동으로 배포하는 방법을 알아보겠습니다.

 

먼저 기존 EC2에는 자동 배포 설정이 되어 있다고 가정하고 그 이후부터 설명하겠습니다. 하나의 EC2에 자동 배포하는 방법은 아래 글을 참고하시기 바랍니다.

https://developerbee.tistory.com/211

 

1. 새로 만든 EC2에 IAM 역할 수정

CodePipeline을 사용하는 경우 CodeCommit의 소스 아티팩트나 CodeBuild의 빌드 아티팩트를 S3에 저장하고 CodeDeploy 실행 시 EC2에서 해당 S3에 접근하여 아티팩트를 사용합니다. 따라서 기존 EC2에 적용된 S3에 접근할 수 있는 역할을 새로 생성한 EC2에도 적용해줍니다. (IAM 역할 생성 또한 위 링크를 참고하세요.)

 

2. EC2 내 codedeploy-agent 확인

현재 새로 생성된 EC2의 경우 기존 EC2를 이미지화 하여 똑같이 생성한 것입니다. 따라서 이미 codedeploy-agent가 설치되어 있을 것입니다. 새로 생성된 EC2에 ssh로 접속하여 아래 명령어를 통해 codedeploy-agent가 제대로 동작하고 있는지 확인합니다.

 

$ sudo service codedeploy-agent status

 

만약 이미지를 통해 생성한 EC2가 아니라 codedeploy-agent가 설치되지 않았다면 아래 명령어를 통해 codedeploy를 설치하고 실행합니다.

 

$ sudo yum update
$ sudo yum install ruby
$ wget https://aws-codedeploy-ap-northeast-2.s3.ap-northeast-2.amazonaws.com/latest/install
$ chmod +x ./install
$ sudo ./install auto

 

3. CodeDeploy 배포 그룹 수정

"CodeDeploy > 애플리케이션"에서 해당 애플리케이션을 찾아 배포 그룹을 선택하고 편집을 누릅니다. 이후 환경 구성에서 새로운 EC2의 Name 태그를 추가합니다.

 

만약 기존 EC2와 새로운 EC2의 Name 태그를 동일하게 맞추었다면 위 부분을 수정할 필요 없이 기존 Name 태그만 그대로 유지하면 됩니다.

 

다음으로 하단 로드 밸런서를 활성화 시키고 두 EC2를 포함하고 있는 대상 그룹을 선택합니다. 로드 밸런서를 활성화하면 배포가 진행되는 동안 트래픽을 차단했다가 배포 후 트래픽을 허용하도록 할 수 있습니다.

 

 

위와 같은 작업을 한 뒤, api 소스의 CodePipeline을 실행하면 두 개의 EC2에 정상적으로 변경된 소스가 배포되는 것을 확인할 수 있습니다.

 

 

배포가 성공한 뒤 각 EC2에 ssh로 접속하여 아래 명령어를 통해 node 서버가 잘 실행되고 있는지 확인합니다.

 

$ netstat -lntp | grep 9090

 

브라우저에서 http://CloudFront_배포_도메인_이름/index.html 로 접속하면 기존에 정상적으로 작동하던 웹 서비스를 확인할 수 있습니다.


지금까지 내용을 구조화하여 살펴보면 다음과 같습니다.

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함