[AWS] Route 53 도메인 생성 후 Load Balancer를 이용하여 원하는 포트로 포워딩 하기

iguigu·2022년 3월 27일
5
post-thumbnail

기본적으로 :80으로 설정된 Route 53 도메인 서비스의 포트를 원하는 포트로 변경하는 방법에 대해 설명해드리겠습니다.

TL;DR

  • AWS Route 53로 DNS 서비스 사용 시 기본적으로 :80 포트에 연결 됨
  • EC2 인스턴스의 특정 포트와 DNS 서비스를 연결해야할 경우 존재
  • AWS Load Balancer를 이용하여 :80 포트를 원하는 포트로 포워딩 가능

앱 서비스를 :8545 포트로 운영하던 도중 URL 접근성 향상을 위해 AWS DNS 서비스를 사용하게 되었다. 이 경우 <YOUR-URL>.com:8545 과 같이 도메인 끝에 지정된 포트를 추가하여야만 배포가 정상적으로 진행된다. 단순히 포트를 :80 포트로 바꾸면 이 문제가 해결되지만 다른 여러가지 이유로 특정 포트(:8545)를 사용하길 원한다면 별도의 작업이 필요하다.

Route 53 DNS 호스팅

DNS 호스팅은 하고 있어야 합니다.

  • Route 53 → 대시보드 → 호스팅 영역

위와 같이 호스팅 서비스 등록하고 운영 중인 상태라고 가정하겠습니다. 현재 우리는 rpc1.gpexdev.com으로 접근 시 자동으로 해당 호스팅 도메인과 연결된 인스턴스의 :80 포트로 리다이렉트되게 되는데, 이를 :8545 포트로 연결되도록 하겠습니다. 전체 구조는 아래 그림과 같습니다.

1단계 : 로드 밸런서 생성 및 포트 포워딩

로드 밸런서를 생성하고 이를 이용하여 원하는 인스턴스와 맵핑을 합니다.

  • EC2 → 좌측 로드 밸런싱 탭 → 로드 밸런서 생성

로드밸런서는 네트워크 계층에 따라 크게 세가지로 나뉘게 됩니다. rpc1.gpexdev.com은 http 리퀘스트를 처리하기 위한 것이므로 ALB (Application Load Balancer)를 선택하겠습니다.

  • ALB : HTTP/HTTPS 트래픽 로드 밸런싱

  • NLB : TLS/UDP/TCP 트래픽 로드 밸런싱

  • GLB : GENEVE를 지원하는Third-pary applliance 로드 밸런싱

  • 로드 밸런서의 이름을 설정하고 네트워크 맵핑을 설정합니다. 네트워크 맵핑 시에는 연결할 인스턴스의 네트워크와 동일하게 설정하도록 주의해야 합니다.

  • Security groups의 경우, 현재 연결할 port가 open 되어 있도록 설정해주어야 합니다. 인바운드 규칙과 아웃바운드 규칙 예시는 다음과 같습니다.

    • 인바운드 규칙
      - 인스턴스로 네트워크 데이터가 들어올 때 적용되는 규칙
      - 인바운드 규칙은 기본적으로 모든 포트를 닫는 것을 전제로 함
    • 아웃바운드 규칙
      - 인스턴스에서 네트워크 데이터가 나갈 때 적용되는 규칙
  • Listener에서 특정 포트를 리스닝하며 원하는 곳으로 라우팅 하도록 합니다. 이 때 타겟그룹을 생성하여 리스닝할 인스턴스 그룹을 생성해야 합니다. Create target group을 선택한다.

2단계 : Target Group 생성

로드 밸런서와 연결될 인스턴스 그룹을 생성합니다.

  • EC2 인스턴스를 로드밸런서와 연결하는 것이 목적이므로 타겟 타입을 인스턴스로 지정합니다.

  • 타겟 그룹이름을 지정하고 리스닝할 포트를 지정해줍니다. Next를 클릭하여 target instance를 등록한다. 동일한 이름의 타겟 그룹이 있을 경우 아래와 같은 경고가 뜨게 됩니다.

  • 로드 밸런서는 기본적으로 여러 인스턴스에 작업을 분산처리하는 기능을 지원하는 서비스이기에 여러 타겟 그룹을 생성하는 것이 가능합니다. 하지만 우리는 인스턴스의 :8545 포트만 Route 53 DNS의 :80 포트와 연결하는 것이 목적이니 하나의 인스턴스만 타겟 그룹에 추가하겠습니다.

  • Create target group을 클릭하여 생성합니다. 그리고 Include as pending below 버튼을 클릭하여 인스턴스를 추가하도록 합니다. 현재 이미지는 인스턴스가 추가되지 않은 상태입니다.

  • Target Group을 정상적으로 생성 시 다음과 같이 성공했다는 메세지와 함께 Load Balancer에서 None associated 메세지를 볼 수 있습니다.

  • None associated를 클릭하여 만약 이미 존재하는 로드 밸런서와 연결할 지, 새로운 로드 밸런서와 연결할 지를 선택합니다. 우리는 1단계에서 로드밸런서를 만들지 않았기 때문에 Associate with a new load balancer를 선택합니다.

  • 그 결과 1단계 과정에서 진행하던 로드 밸런서 생성 페이지로 이동되게 됩니다. 1단계에서 진행했던 것 (로드 밸런서 이름, 네트워크 맵핑 등)을 다시 설정합니다. Listener and Routing에서 Target group을 설정하고 리스닝할 포트를 설정합니다. 이때 Port는 Route 53에서 오는 :80 포트임에 주의합니다.

  • 정상적으로 생성 완료 시 성공적으로 로드밸런서가 생성되고 프로비저닝 되고 있는 것을 확인할 수 있습니다


3단계 : Route 53 레코드 생성 및 로드밸런서 연결

Route 53과 로드 밸런서를 연결을 합니다

  • Route 53 → 호스팅 영역 → 도메인 이름 선택 → 레코드 생성을 클릭합니다.

  • Route 53레코드 생성을 클릭하여 하여 원하는 레코드를 생성합니다. 레코드 유형과 트래픽 라우팅 대상을 이미지와 같이 설정하면 선택 가능한 로드밸런서가 뜨게되며 1,2 단계에서 만든 로드밸런서를 선택합니다.

  • 레코드가 성공적으로 생성될 경우 아래와 같은 결과를 보입니다.

결과

:80 포트로 연결되던 도메인이 :8545 포트로 연결 완료!

Summary

로드밸런서를 이용한 포트 포워딩 방법을 정리하면 다음과 같습니다.

  • 로드 밸런서에 Target Group을 이용하여 인스턴스 연결
  • 로드 밸런서의 listener가 인스턴스의 특정 포트를 리스닝하도록 설정함
  • Route 53 서비스가 로드 밸런서로 라우팅 되도록 설정함

Reference

profile
2929

0개의 댓글