본문 바로가기
Cloud

AWS ELB와 ACM과 EC2 연동 방법

by AlbertIm 2024. 7. 23.

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

댓글