728x90
반응형
SMALL

도메인 연결 [1단계] : 호스팅 영역 생성

먼저 AWS에서 [Route53] -> [호스팅 영역] 으로 접근하면 밑의 이미지처럼 화면이 나타납니다.

호스팅 영역 생성 버튼을 눌러 호스팅 영역을 생성하도록 하겠습니다.

저는 호스팅영역이 이미 1개가 있어 새롭게 생성하시는 분은 저와는 조금 다른 화면이 나타날수 있습니다.

그런 다음 도메인 이름을 입력하는 입력창에 AWS에 등록되어 있는 도메인을 입력하고

호스팅 생성버튼을 눌러줍니다.

호스팅이 생성되었다면 아래와 같이 레코드가 2개 생성되었을 것입니다.

NS 유형의 값/트래픽 라우팅 대상을 보면 4개의 값이 있을 것입니다.

네임서버 값인데 이를 복사합니다.

도메인 연결 [2단계] : 등록된 도메인 네임서버 변경

자, 이제 왼쪽 메뉴바의 등록된 도메인 메뉴로 들어옵니다.

그런 다음 도메인을 클릭해보도록 하겠습니다.

도메인을 클릭하면 밑에처럼 도메인과 관련된 여러 정보가 나오는데

우리는 아까 복사해둔 네임서버를 도메인의 이름서버로 수정하여주도록 하겠습니다.

밑의 빨간색 동그랗게 쳐진 이름 서버 추가 또는 편집을 눌러

기존에 등록되어 있는 네임서버를 지우고 방금 복사해둔 네임서버로 하나씩 변경시켜줍니다.

도메인 연결 [3단계] : 라우팅을 통한 도메인과 ipv4 연결

이제 마지막 단계입니다.

다시 호스팅영역으로 돌아와서 이전에 생성한 도메인을 클릭하여 들어오면

아래처럼 화면이 나타나고 레코드 생성 버튼이 보일 것입니다.

레코드 생성버튼을 눌러 도메인과 연결할 ec2의 ipv4를 등록해보도록 하겠습니다.

레코드 생성 버튼을 누르면 아래와 같은 화면이 보일 것입니다. [다음] 버튼을 눌러줍니다.

그다음 [단순 레코드 정의] 버튼을 눌러줍니다.

첫번째 칸에 예를 들어 www를 넣어주면 www.도메인주소.com으로  로 연결이 되는 것이고

아무것도 넣지 않는다면 도메인 주소.com 으로 연결이 되는 것입니다.

저는 첫번째 칸을 비워두고 값/트래픽 라우팅 대상에 레코드 유형에 따라 ip 주소 또는 다른값을

선택하였습니다.

그리고 그 밑에 칸에는 우리가 연결할 ec2 인스턴스의 ipv4 주소를 입력해줍니다.

그리고 단순 레코드 정의 버튼을 눌러주고 생성을 완료하면 아래 화면처럼 새롭게 레코드가 추가 될 것 입니다.

저는 여기에 www를 넣어줬습니다.
도메인 주소 앞에 www.도메인주소로 쓸수 있다!

이제 도메인과 ec2 ipv4주소가 연결되었으니 도메인 주소로 접속이 가능할 것입니다.

도메인뒤에 www.도메인주소:8080으로 접속하면 접속이 된다!

728x90
반응형
LIST

'개발 > sw' 카테고리의 다른 글

AWS 로드밸런서 HTTP → HTTPS 리다이렉션  (0) 2023.03.31
도메인 주소 8080 포트번호 숨기기  (0) 2023.03.31
Codedeploy SQL 오류  (0) 2023.03.30
CodeDeploy  (0) 2023.03.30
CI/CD 구축 github action (3)  (0) 2023.03.28
728x90
반응형
SMALL

 

HikariPool-1 - Exception during pool initialization. com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure

코드 자동배포화를 하면서 생긴 오류 입니다.
이건 저의 실수이긴 한데요.. 저희는 mySQL을 사용하는데 RDS에서 ec2 서버를 연결해주지 않아서 발생한 문제였습니다.
왜 안되냐고 혼자 막.... 화냈었는데...ㅠㅠㅠㅠ허탈하옵니다.. 다음에는 꼭 확인하고 연결하기!!

+ 타임존 에러도 만났습니다. 이건 서버에 현재시간을 넣어주거나 다른 테스트 서버에서는 깃허브액션에 추가해서 해결했습니다!

728x90
반응형
LIST

'개발 > sw' 카테고리의 다른 글

도메인 주소 8080 포트번호 숨기기  (0) 2023.03.31
인스턴스IP 도메인 연결  (0) 2023.03.31
CodeDeploy  (0) 2023.03.30
CI/CD 구축 github action (3)  (0) 2023.03.28
CI/CD 구축 github action (2)  (0) 2023.03.28
728x90
반응형
SMALL

AWS CodeDeploy는 EC2 / on-premises 인스턴스들, ECS, serverless lambda function 등 여러 서비스 애플리케이션 배포를 자동화하는 서비스입니다. 자세한 설명은 공식 문서에 정리되어있습니다.

 

해당 2분짜리 영상을 보시면 빠르게 컨셉을 이해할 수 있습니다.

AWS CodeDeploy는 여러 장점이 있지만, 크게 4가지 설명을 할 수 있을 것 같습니다.

 

1. 배포 진행 상황을 모니터링 할 수 있습니다. 저는 인프라 초보이기 때문에 수행하는 과정에서 발생하는 많은 오류에 대한 로그가 필요했고, CodeDeploy에서 제공하는 console 이 큰 도움이 됐습니다. 이와 관련해 본문에서 설명하도록 하겠습니다.

2. (거의) 무료다!! 우리는 EC2에서 CodeDeploy를 사용할 것이므로 배포를 하는데 추가 비용이 들지 않습니다. 다만 저희의 배포 과정에서는 하나의 파일을 S3에 업로드 하고 이에 따른 비용을 지불해야 하는데, 이와 관련한 약간의 비용이 나갈 수는 있겠네요 :)

 

3. 가동 중지 시간을 최소화 시킬 수 있습니다. 공식 문서에 따르면 blue / green 배포 과정에서 거의 즉시 트래픽을 리다이렉션 시켜준다고 합니다. 즉, 새 애플리케이션 버전 변경으로 인한 중단을 최소화합니다. 자동 배포 과정에서 잠깐이나마 서비스가 죽는 것을 원하지 않는다면, CodeDeploy에서 blue / green 배포 설정을 해줄 수 있습니다.

 

4. 동시 배포를 할 수 있습니다. 하나 이상의 EC2 컴퓨팅 플랫폼을 사용하는 애플리케이션에 배포가 필요할 경우, CodeDeploy를 사용하면 큰 효과를 보실 것으로 예상됩니다! 

Blue-Green?

 

 

Blue-Green deployment는 배포 전략 중 하나입니다. 라이브 환경을 Blue 라고 지칭하며 새로운 환경은 Green 이라고 지칭합니다. 새로운 배포는 Green 환경에서 수행되며, 에러 검출이 되지 않을 경우 traffic을 Green 으로 옮깁니다.

 

가장 큰 장점은 downtime이 없다는 것입니다!! 배포 중에도 애플리케이션이 실행중이므로 사용자는 배포가 진행되었다는 사실을 거의 알 수 없습니다.

 

설명은 여기까지하고, 자동 배포를 위해 작업했던 순서에 대해 설명하겠습니다 :)


작업 순서

수행할 작업의 순서는 아래와 같습니다.

 

1. CodeDeploy 사용을 위한 EC2 IAM 인스턴스 프로파일 생성

2. EC2에 CodeDeploy agent 설치

3. CodeDeploy 애플리케이션 생성

4. Github Action workflow 를 위한 yml 파일 생성 

5. CodeDeploy Action을 위한 appspec.yml, script 파일 추가

 

 

1. CodeDeploy 사용을 위한 EC2 IAM 인스턴스 프로파일 생성

우리는 배포 대상이 될 EC2 인스턴스가 CodeDeploy를 사용할 수 있도록 권한을 부여해야 합니다!!

 

우선, AWS IAM에 들어오셔서 역할 만들기를 클릭합니다.

 

EC2를 클릭하시고 S3, CodeDeploy 모든 권한을 넣어주고, 네이밍을 붙여 역할을 만들어줍니다.

우리는 배포 코드를 압축해서 s3에 업로드하고, 해당 빌드 파일을 CodeDeploy를 통해 EC2로 배포할 것이기 때문에 두 권한을 부여하는 것입니다. 자세한 설명은 아래에서 하도록 할게요!

 

이제 만든 IAM Role을 우리의 인스턴스에 붙여줘야 합니다. 인스턴스 목록에서 체크하시고 작업, 보안 탭을 들어가시면 IAM 역할을 수정해주시면 우리의 EC2는 S3, CodeDeploy 에 대한 접근 권한을 부여받게 됩니다.

 

 

 

2. EC2 에 CodeDeploy agent 설치

배포를 원하는 인스턴스에 CodeDeploy agent를 설치하여 해당 인스턴스를 배포에서 사용할 수 있도록 설정해야 합니다!!

 

해당 명령어를 입력해주세요.

**Codedeploy agent 설치
**1. ruby 설치:** Codedeploy agent는 ruby로 작성되었으므로 이를 설치한다.

$ sudo apt-get install ruby  // (ubuntu 16.04)

**2. wget 설치** (agent 설치파일을 들고오기 위해 쓰인다)

$ sudo apt-get install wget

**3. Codedeploy Agent 설치**

*#* ubuntu 계정을 사용한다면 /home/ubuntu로 가면 된다.*

$ cd /home/jane

***#* 설치파일 **다운로드 *(Seoul region)***

$ wget [<https://aws-codedeploy-ap-northeast-2.s3.ap-northeast-2.amazonaws.com/latest/install>](<https://aws-codedeploy-ap-northeast-2.s3.ap-northeast-2.amazonaws.com/latest/install>)**
wget <https://aws=codedeploy-ap-northeast-2.s3.ap-northeast-2.amazonaws.com/latest/install>
****# 실행권한 추가 및 설치**

$ chmod +x ./install

$ sudo ./install auto

하다가 막힌다면 아래 aws docs를 참고한다.

[<https://docs.aws.amazon.com/ko_kr/codedeploy/latest/userguide/codedeploy-agent-operations-install-ubuntu.html>](<https://docs.aws.amazon.com/ko_kr/codedeploy/latest/userguide/codedeploy-agent-operations-install-ubuntu.html>)**

저는 아래의 있는 링크를 넣었습니다.

sudo wget https://aws-codedeploy-ap-northeast-2.s3.ap-northeast-2.amazonaws.com/latest/install

chmod +x ./install 가 통하지 않는 다면.
sudo chmod +x ./install
입력해 주면 적용이 됩니다!

그 후에 명령어가 

sudo service codedeploy-agent status 명령을 입력하여 에이전트가 실행 중인지 확인할 수 있습니다.

 

3. CodeDeploy 애플리케이션 생성

 

자동 배포를 위한 메인 서비스인 CodeDeploy 애플리케이션을 만들어줘야 합니다!!

 

CodeDeploy에서는 배포 EC2 인스턴스를 식별하기 위한 EC2 식별자와, CodeDeploy 권한이 있는 IAM 인스턴스 프로파일이 필요합니다. 각 설정을 해주고 옵니다.

 

EC2 Name 태깅을 하고, IAM CodeDeploy 사용 사례를 선택하여 IAM 인스턴스 프로파일을 만듭니다.

-> 여기서 test-key는 iam 역할입니다! 
-> 저의 경우 둘다 입력을 하지 않으면 실행이 되지 않더군요!

이제 CodeDeploy 애플리케이션 설정을 해보죠! 우리는 EC2를 사용하는 CodeDeploy를 하게 되므로, 컴퓨팅 플랫폼을 EC2/온프레미스로 지정합니다. 컴퓨팅 플랫폼에 대한 자세한 설명은 해당 링크를 참조해주세요.

 

배포를 위해서 우리는 배포 그룹을 생성해야 합니다.

배포 그룹에는 배포 대상 인스턴스를 포함하게 되며, 해당 그룹 내에서 우리의 배포 작업이 실행되게 됩니다.

 

배포 그룹 이름을 만드시고, 서비스 역할에 조금 전 만든 CodeDeploy 권한이 있는 IAM 인스턴스를 연결해줍니다.

저희 팀은 배포 유형을 현재 위치로 설정하였지만, 배포 간에 발생할 수 있는 downtime을 원하시지 않는다면 블루/그린 설정을 하시면 됩니다.

환경 구성 탭에서 우리가 태깅했던 EC2 인스턴스를 추가해주고,

저희 팀은 여러 인스턴스를 사용하지 않기 때문에 배포 설정은 OneAtATime으로 하였습니다. 배포 설정 관련한 자세한 설명은 해당 링크를 참고바랍니다.

마지막으로 저희 팀은 로드 밸런서를 사용하지 않기 때문에 해당 옵션을 꺼줬습니다.

 

728x90
반응형
LIST

'개발 > sw' 카테고리의 다른 글

인스턴스IP 도메인 연결  (0) 2023.03.31
Codedeploy SQL 오류  (0) 2023.03.30
CI/CD 구축 github action (3)  (0) 2023.03.28
CI/CD 구축 github action (2)  (0) 2023.03.28
CI/CD 구축 github action (1)  (0) 2023.03.28

+ Recent posts