정리 목적

이번에 AWS에 배포 테스트를 하며 UI가 변경된 부분도 좀 있었고 이전에는 도메인 구매 후 접근 테스트만 해본 반면 이번에는 여러 환경을 설정하고 처리했기 때문에 이전 정리 내용을 지우고 새로 다시 정리.

 

처리 환경 정리

Project

  • BackEnd - Spring Boot 3
  • FrontEnd - React
  • 빌드 방식 - 통합빌드

AWS

  • EC2 t2.micro
    • ubuntu 22.0.4
  • Application Load Balancer
  • AWS Certificate Manager(ACM)
  • Route53
  • S3
  • RDS(MySQL)
  • ElastiCache(Redis)

CI / CD

  • Jenkins
  • Git Webhook

WebServer

  • Nginx

Domain Register

  • Gabia

 

정리 순서

  1. S3 Bucket 생성 후 Local에서 테스트
  2. RDS MySQL Database Instance 생성 후 Local Workbench와 연결 테스트 및 프로젝트 연결 테스트
  3. EC2 Instance 생성 후 설정
    1. swap 메모리 설정
    2. JDK 17 설치
    3. nvm 설치 및 node 21.7.1 설치
    4. Nginx 설치 및 설정
    5. Jenkins 설치 및 빌드 Job 설정을 제외한 나머지 처리
    6. ElasiCache Redis OSS Cache 생성 및 Redis 설치
  4. Gabia 도메인 구매 후 Route53, ACM 처리
  5. Load Balancer 대상 그룹 생성 및 ALB 생성 후 대상 그룹 설정
  6. A레코드 생성 및 도메인 접근 테스트
  7. git clone을 통해 사전 테스트 이후 Jenkins Job 설정과 Build 테스트
  8. Git Webhook 연동 및 테스트

Application Load Balancer(ALB) 대상그룹 생성

이번에는 ALB와 그 대상 그룹 생성에 대해 정리한다.

먼저 대상그룹을 생성한다.

 

EC2 페이지에서 로드밸런싱 하위의 대상그룹으로 이동.

대상그룹 생성 버튼을 클릭한다.

 

대상 유형은 인스턴스로 선택하고 대상 그룹 이름을 작성해준다.

이후 다른건 건드리지 않는다.

 

아래 이미지에서 상태검사 경로를 /health로 작성했다.

기본 경로는 / 로 설정해도 된다.

하지만 이번 테스트 과정에서 / 로 처리하는 경우 대상 그룹의 health check가 정상적으로 처리되지 않아 불가피하게 nginx 설정에 /health 경로로 응답을 200으로 처리하도록 작성했다.

그렇기 때문에 안되는 경우 이렇게 처리하는 방법이 있다~ 라고 생각하면 된다.

 

여기까지 처리했다면 다음 클릭!

 

다음 페이지에서는 라우팅 대상을 등록해야 한다.

적용할 인스턴스의 체크박스를 체크하고 아래에 보류 중인 것으로 포함 버튼을 누르면 대상으로 해당 인스턴스가 추가될 것이다.

그럼 대상 그룹 생성 버튼 클릭

 

대상 그룹 생성이 완료되었다면 상태 검사를 수행하게 된다.

대상 그룹을 선택하고 하단 탭에서 대상 탭으로 이동하면 상태검사를 확인할 수 있다.

아래 이미지처럼 Healthy로 나와야 정상이다.

UnHealthy로 나온다면 nginx 설정 또는 네트워크 문제일 가능성이 있다.

혹은 경로를 잘못 설정한 경우에도 문제가 발생한다.

 

뭘 해도 안된다면 이 테스트 과정 포스팅 3번째 단계인 EC2 인스턴스에 대한 정리 중에 nginx 정리한 부분을 확인해 /health 요청에 대한 설정을 처리하도록 하고 대상 그룹 상태검사 경로도 /health로 바꾼 뒤 다시 확인하는 방법도 있다.

 

대상 그룹의 상태 검사까지 모두 완료 했다면 Load Balancer를 생성한다.

로드밸런싱 하위의 로드밸런서로 이동해 오른쪽 상단의 로드밸런서 생성 버튼을 클릭해준다.

그럼 아래 이미지와 같은 페이지가 나올텐데 Application Load Balancer를 선택해준다.

 

로드밸런서 이름을 입력해주고 네트워크 매핑에 자신의 리전이 몇가지 나올텐데 선택해준다.

이때, 리전은 2개 이상을 선택해야 한다.

선택하게 되면 서브넷이 나오게 될텐데 알아서 설정되므로 그대로 두면 된다.

 

다음으로는 보안그룹을 선택하게 되는데 최초 생성해두었던 보안그룹을 그대로 선택해준다.

리스너 및 라우팅 탭에서는 기본적으로 80 포트가 추가된 상태일 것이다.

기본 작업에서는 좀전에 만들었던 대상그룹을 선택해주면 된다.

이후 리스터 추가 버튼을 눌러 HTTPS 443 포트를 추가해주고 대상그룹은 동일하게 방금 생성한 대상 그룹을 선택해준다.

 

보안 리스터 설정에서의 보안 정책은 기본적으로 ELBSecurityPolisy가 선택되어 있다.

권장사항이기 때문에 따로 건드리지 않고 넘겼다.

기본 SSL/TLS 서버 인증서는 ACM에서 인증서를 요청해 발급 받았으므로 ACM을 선택하고 인증서 선택을 누르면 발급받은 인증서가 존재할 것이다. 선택!

만약 ACM이 아닌 다른 방식으로 인증서를 받았다면 인증서 가져오기를 선택해서 처리할 수 있다.

 

그럼 모든 처리가 끝났으므로 하단의 로드밸런서 생성 버튼을 클릭해 생성해준다.

 

생성된 ALB는 프로비저닝이 모두 끝나고 상태가 활성으로 변하게 될 것이다.

이 과정을 조금 기다려주고 이후 설정해 줄 것이 하나 있다.

HTTP 포트인 80 포트로 접근했을 때 443으로 Redirect 시켜주도록 처리할 것이다.

 

ALB 세부 정보 하단의 리스너 및 규칙 탭에서 HTTP 규칙을 선택한다.

이미지에서는 이미 수정한 상태이기 때문에 리디렉션 대상 이라고 뜨지만 정상적으로 처리했다면 HTTPS와 동일하게 기본 작업이 출력되는게 정상이다.

 

HTTP:80 을 클릭하고 나면 나오는 페이지에서 오른쪽 상단의 작업 탭을 클릭하고 리스터 편집을 클릭!

 

기본 작업탭에서의 라우팅 액션에서 URL로 리디렉션을 선택해준다.

그리고 URI 부분을 선택하고 프로토콜을 HTTPS로 바꿔준 뒤 443 포트로 수정해준다.

상태코드는 기본 설정인 301을 유지. 변경 내용 저장 버튼을 클릭해 수정해준다.

 

 

그럼 ALB 생성까지 끝!

+ Recent posts