Elastic Load Balancing(ELB)란?
Elastic Load Balancing(ELB)은 여러 애플리케이션 트래픽을 자동으로 분산하는 역할을 합니다.(참고자료)
연동 방법
1. ELB 를 생성하기 위해 일단 대상 그룹을 생성합니다
EC2 대시보드에서 로드 밸런싱 메뉴의 대상 그룹 항목으로 이동하고 대상 그룹 생성을 클릭합니다.
2. 대상 유형은 인스턴스를 선택합니다
이 포스팅에서는 간단하게 Application Load Balancer를 사용하여 EC2에 직접 연결하려고 하므로 인스턴스를 선택하면 충분합니다.
3. 기본 구성을 선택합니다
- 프로토콜 : 포트: ELB에서 EC2는 HTTP 통신을 할 예정이므로 HTTP를 선택하고 포트는 80을 선택합니다.
- IP 주소 유형 : IPv4
- VPC : 해당 EC2가 포함한 VPC를 선택합니다. VPC 생성 시 public IPv4 주소의 생성 개수를 주의해야 합니다. Public IPv4 주소는 추가 비용이 발생할 수 있습니다.(참고자료)
4. 상태 검사를 설정합니다
상태 검사 경로는 서버의 건강 상태를 확인하기 위한 것입니다. 예를 들어 Spring Boot Actuator를 사용하면 /actuator/health 경로에서 App의 health status를 제공합니다. 하지만 여기서는 /
메인 화면 요청으로 설정하겠습니다. 고급 상태 검사 설정에서 해당 경로 요청시 만족해야 하는 조건을 확인할 수 있습니다.
5. 대상 그룹에 EC2를 연결하고 생성합니다
선택한 인스턴스를 위한 포트: EC2로 전달할 포트를 정합니다. 예를 들어 EC2에 8080 포트를 연결하고 싶다면 EC2를 선택하고 포트 번호로 8080을 입력한 후 추가합니다.
6. ELB를 생성합니다
EC2 대시보드에서 로드밸런싱 메뉴의 로드밸런서 항목으로 이동합니다.
7. 로드 밸런서 유형 Application Load Balancer선택합니다
- Application Load Balancer (ALB): HTTP/HTTPS 트래픽을 처리하고 애플리케이션 레벨의 로드 밸런서입니다. 이 포스트에서는 간단하게 EC2를 연결할 예정이므로 ALB을 선택했습니다.
- Network Load Balancer (NLB), Gateway Load balancer (GWLB) 은 아직 잘 모르겠습니다.
8. 기본 구성 정보를 입력합니다
- 체계: 이 포스팅에서는 ELB를 통해 EC2에 연결하려고 하므로 인터넷 경계를 선택합니다.
- 로드 밸런서 IP 주소 유형: IPv4를 선택합니다. IPv6를 선택하려면 IPv6를 지원하는 VPC를 생성해야 합니다.
9. 네트워크 매핑에 VPC 선택합니다
VPC 생성 시 public IPv4 주소의 생성 개수를 주의해야 합니다. public IPv4 주소는 추가 비용이 발생할 수 있습니다.(참고자료)
10. 리스너 및 라우팅을 설정합니다
리스너 및 라우팅 설정에서 HTTP와 HTTPS 포트를 모두 선택하고 대상 그룹을 지정합니다.
리스너 설정
- HTTP 프로토클 요청을 받고 이를 HTTPS 포트로 전달합니다.
- HTTPS 프로토클 요청을 받고 위에서 설정한 대상 그룹으로 전달합니다.
11. IP 주소 유형, VPC, 프로토콜 버전을 설정합니다
- IP 주소 유형: IPv4를 선택합니다. IPv4는 현재 가장 널리 사용되며 호환성 문제를 피할 수 있습니다.
- VPC: 대상 그룹과 동일한 VPC를 선택합니다.
- 프로토콜 버전: HTTP/1.1을 선택합니다. 최신 버전인 HTTP/2는 현재 필요하지 않습니다.
12. 보안 리스너 설정
- 정책 이름: 권장 보안 정책을 사용합니다.(제가 잘 모릅니다.)
- 기본 SSL/TLS 서버 인증서: ACM에서 생성한 인증서를 사용합니다.
13. 요약을 확인한 후 생성합니다
14. HTTP 포트 리스너 규칙 편집합니다
HTTP 포트 리스너는 실제로 대상 그룹에 요청을 전달하지 않고 HTTPS로 리다이렉트하기 위해 설정합니다.
14.1 라우팅 액션 변경합니다
라우팅 액션: URL로 리디렉션을 선택합니다.
URL로 리디렉션: URI 부분을 선택합니다. (전체 URL를 선택해도 상관 없습니다.)
프로토콜: HTTPS
포트: 443
상태 코드: 301
15. Route53에 A 레코드와 연결합니다
Route53에 A 레코드를 생성하고 이를 ELB에 연결할 수 있습니다.
- A 레코드는 도메인 이름을 IP 주소에 매핑하는 DNS 레코드입니다.
이 포스팅에서 www.도메인.com
을 추가로 ELB에 연결하려고 합니다.
15.1 Route 53에 연결하려는 호스팅 영역으로 들어갑니다.
레코드를 생성 버튼을 누립니다.
15.2 레코드 설정 후 생성합니다.
레코드 이름: 도메인 이름을 입력합니다. (예: www
또는 subdomain
)
레코드 유형: A
값: 별칭을 사용하여 생성한 ELB를 선택합니다.
- 엔드 포인트: Applicaiton/Classic Load Balancer에 대한 별칭
- 리전: 아시아 태평양(서울) (ELB 리전)
- 해당 ELB이름
라우팅 정책: 단순 라우팅
마무리
이로써 ELB 생성이 완료되었습니다. ELB는 최소 두 개의 가용 영역(AZ)을 사용하며 따라서 두 개의 퍼블릭 서브넷을 필요로 합니다. 현재 AWS Cloud는 프리티어를 사용하더라도 subnet에서 사용하는 퍼블릭 IPv4 주소에 대해 시간당 0.005 USD의 비용이 부과됩니다. 따라서 한 시간에 0.01 USD의 비용이 발생할 수 있음을 유념하시기 바랍니다.(참고자료) 설정 자체는 복잡하지 않았지만 이러한 설정의 이유를 이해하기 위해 상당한 시간이 투자되었습니다.
'Cloud' 카테고리의 다른 글
ACM에서 SSL/TLS 인증서 요청 방법 (0) | 2024.07.22 |
---|---|
도메인 주소를 Amazon Route 53에 등록 방법 (0) | 2024.07.21 |
댓글