기본적으로 :80으로 설정된 Route 53 도메인 서비스의 포트를 원하는 포트로 변경하는 방법에 대해 설명해드리겠습니다.
앱 서비스를 :8545 포트로 운영하던 도중 URL 접근성 향상을 위해 AWS DNS 서비스를 사용하게 되었다. 이 경우 <YOUR-URL>.com:8545
과 같이 도메인 끝에 지정된 포트를 추가하여야만 배포가 정상적으로 진행된다. 단순히 포트를 :80 포트로 바꾸면 이 문제가 해결되지만 다른 여러가지 이유로 특정 포트(:8545)를 사용하길 원한다면 별도의 작업이 필요하다.
DNS 호스팅은 하고 있어야 합니다.
위와 같이 호스팅 서비스 등록하고 운영 중인 상태라고 가정하겠습니다. 현재 우리는 rpc1.gpexdev.com
으로 접근 시 자동으로 해당 호스팅 도메인과 연결된 인스턴스의 :80
포트로 리다이렉트되게 되는데, 이를 :8545
포트로 연결되도록 하겠습니다. 전체 구조는 아래 그림과 같습니다.
로드 밸런서를 생성하고 이를 이용하여 원하는 인스턴스와 맵핑을 합니다.
로드밸런서는 네트워크 계층에 따라 크게 세가지로 나뉘게 됩니다. 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
을 선택한다.
로드 밸런서와 연결될 인스턴스 그룹을 생성합니다.
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
포트임에 주의합니다.
정상적으로 생성 완료 시 성공적으로 로드밸런서가 생성되고 프로비저닝 되고 있는 것을 확인할 수 있습니다
Route 53과 로드 밸런서를 연결을 합니다
Route 53 → 호스팅 영역 → 도메인 이름 선택 → 레코드 생성
을 클릭합니다.
Route 53레코드 생성
을 클릭하여 하여 원하는 레코드를 생성합니다. 레코드 유형과 트래픽 라우팅 대상을 이미지와 같이 설정하면 선택 가능한 로드밸런서가 뜨게되며 1,2 단계에서 만든 로드밸런서를 선택합니다.
레코드가 성공적으로 생성될 경우 아래와 같은 결과를 보입니다.
:80
포트로 연결되던 도메인이:8545
포트로 연결 완료!
로드밸런서를 이용한 포트 포워딩 방법을 정리하면 다음과 같습니다.