웹 페이지를 호스팅 할 때 HTTPS를 적용하려면 주로 Nginx 등을 사용하여 SSL/TLS 인증서를 적용합니다.
만일, 클라우드 서비스를 사용하고 있다면 간편하게 인증서를 적용하는 방법이 있습니다.
<순서>
1. ACM발급하기
2. 대상그룹 생성하기
3. 로드밸런서 세팅하기
4. Route53 레코드 생성하기
5. +@
1. ACM 발급하기
- 이 부분은 인증서 기관에서 발급하거나, 인증서 키 파일을 등록하는 방식으로 진행하나 이 글에서는 생략하겠습니다.
2. 대상 그룹 생성하기
로드밸런서로 들어오는 트래픽을 전달할 '대상'을 지정하는 역할입니다.
인스턴스, Lambda 등 원하는 목적지를 설정할 수 있습니다.
2-1) AWS - EC2 - (좌측 사이드바)로드 밸런신 - 대상 그룹 접속 - 대상 그룹 생성
2-2) 대상 그룹 생성하기
- 대상 유형 선택 :
클라이언트의 요청을 보내줄 목적지를 지정합니다.
EC2 인스턴스에 호스팅된 웹 서비스로 요청을 보내기 위하여 '인스턴스'로 지정하여 진행합니다.
- 프로토콜 :
클라이언트가 요청하는 프로토콜을 지정합니다.본 포스팅의 목적은 인증서 적용을 통한 HTTPS 접속이므로 HTTPS를 선택합니다.
웹 서비스에 요청을 직접적으로 보내는 것이므로 HTTP 프로토콜로 요청을 보냅니다.
- VPC, 프로토콜 버전 :
ALB는 VPC내에서 하나의 네트워크 노드처럼 작동하므로 대상그룹 VPC는 목적지 인스턴스와 같은 VPC를 설정합니다.
프로토콜 버전은... 잘은 모릅니다... - 상태검사
흔히 JAVA 프레임워크에서 진행하는 Health Check 엔드포인트를 작성해주시면 됩니다.
2-3) 대상 등록
- 사용 가능한 인스턴스
웹 서비스가 호스팅 되고 있는 인스턴스를 선택합니다. - 선택한 인스턴스를 위한 포트
웹 서비스가 호스팅 되고 있는 포트를 입력합니다. (ex. Springboot 8080 등등) - 아래에 보류 중인 것으로 포함 : 클릭
2-4) 대상 그룹 생성을 하게 되면 해당 인스턴스 포트와 통신이 되는지 대상 그룹에서 자체적으로 체크하게 됩니다.
3. 로드밸런서 세팅하기
클라이언트의 요청을 설정한 대상으로 트래픽을 분산하거나, 전달하는 역할을 합니다.
로드밸런서에는 ALB, NLB, CLB가 존재합니다.
이 중 웹 서비스(HTTP(s))는 ALB가 사용됩니다.
3-1) 로드밸런서 생성하기
AWS - EC2 - (좌측 사이드바)로드 밸런싱 - 로드밸런서 - 로드 밸런서 생성 - Application Load Balancer
3-2) 기본 구성
체계 : 퍼블릭 통신 (클라이언트 요청)이 목적이므로 '인터넷 경계'를 선택
(VPC내부에서 통신 시 (like ubuntu hostname / docker container name 설정) '내부'를 선택)
3-3) 네트워크 매핑
- VPC : 2)에서 설정한 대상그룹과 같은 VPC로 설정합니다.
- IP풀 : IP를 직접적으로 관리한다면 사용한다고는 합니다... (잘... 몰라요...)
- 가용 영역 및 서브넷
가용 영역 : 최소 2개 이상의 가용 영역을 선택합니다. 로드밸런서의 트래픽 처리 기술의 원리라고 알고 있습니다.
서브넷 : 서브넷 지정 시, IGW가 연결된 서브넷을 선택하는걸 권장드립니다. Private 서브넷을 지정하면 해당 서브넷으로도 트래픽 요청이 가는건지... 다소 느려지므로
되도록이면 IGW가 연결된 Public Subnet을 지정합니다.
- 보안그룹 & 리스너
리스너 : 일반적인 HTTPS 접속을 처리하려면 443포트를 지정하고, 2)에서 만든 대상그룹을 지정합니다.
*1)보안그룹 : 리스너에 지정한 프로토콜(ex. HTTPS(443))이 인바운드 허용된 보안 그룹을 설정합니다.
인스턴스에 지정된 보안그룹에 유의해야합니다. 아래에 후술.
- 보안 리스너 설정
HTTPS 리스너를 통해 암호화된 트래픽 처리를 위하여 인증서를 선택합니다.
ACM의 인증서를 선택 시. 해당 인증서가 와일드카드 인증서(*.example.com)인지 확인하여 Route53 서브 도메인 레코드 생성이 가능한지 확인합니다.
- 로드밸런서 생성 버튼 클릭
3-4) 로드밸런서 정보 확인하기
- 리소스 맵
리소스맵을 보면 트래픽이 어떤 식으로 처리되는지 시각적으로 확인 가능합니다.
리소스맵의 '대상' 부분에 초기 세팅이 완료되면 Health 체크 결과를 보여주게 됩니다. - DNS 이름 (=임시 DNS)
정상적으로 연결되었는지 체크하려면 DNS이름을 복사하여 웹브라우저 주소창에 입력 후 접속시도해보면 됩니다.
4. Route53 레코드 생성하기
~3 까지 세팅한 로드밸런서(ALB)를 이제 도메인 레코드를 지정해봅시다.
ALB에 이미 인증서가 적용되어 있으며 1개의 네트워크 노드이기에 A레코드로 지정하면 됩니다.
- 레코드 이름
ACM에 등록된 인증서가 와일드카드 인증서라면 서브도메인 지정이 가능합니다. - 트래픽 라우팅 대상
1) 별칭 체크
2) Application Load Balancer에 대한 별칭
3) 리전 선택
4) ~3까지 세팅한 로드밸런서 선택
5) 레코드 생성
+@ 보안그룹에 대하여
*1) 로드밸런서를 통해 인스턴스에 연결할 때 인스턴스에 연결된 보안그룹에 유의해야합니다.
인스턴스 입장에서는 '클라이언트'의 트래픽 요청을 신뢰하는 것이 아닌, '로드밸런서'의 트래픽 요청을 신뢰합니다.
따라서 인스턴스 보안그룹의 인바운드 규칙에 서비스포트 지정 시 '소스'를 '로드밸런서의 보안그룹' 으로 지정해야합니다.
@1) 로드밸런스에 지정된 보안그룹 (443 허용)
@2) 인스턴스 보안그룹
- 443 포트 허용이 아닌, 8080포트 허용
- 허용 대상(소스)는 로드밸런서의 보안그룹으로 지정함.
'DevOps와 Infra > AWS' 카테고리의 다른 글
도메인마다 포트가 다른 서버? CloudFront + Lambda@Edge로 해결하기 (0) | 2025.06.26 |
---|---|
MacOS에서 EC2에 있는 파일 가져오기 (0) | 2024.03.20 |
Postgresql Migration (from EC2 to Aurora) - 3/3편 (0) | 2023.09.23 |
Postgresql Migration (from EC2 to Aurora) - 2/3편 (1) | 2023.09.21 |
Postgresql Migration (from EC2 to Aurora) - 1/3편 (0) | 2023.09.20 |