Cloud Service/AWS

Route 53과 ALB 연동

Cloud Applicaiton Architect 2022. 2. 3. 14:22
반응형

개요

이번 포스팅은 Route 53에 임의로 등록한 DNS 도메인에 ALB를 연동해 보는 것이다. ALB는 두개의 서로 다른 서비넷의 웹 서비스를 담당하는 EC2 인스턴스를 로드밸런싱 하도록 설정할 것이다.

 

AWS의 Route 53을 이용한 DNS Name 서비스 등록 절차는 다음과 같다

 

테스트 시나리오

이 테스트의 시나리오는 아래와 같이 AWS VPC 내에 2개의 서브넷을 만들고 각 서브넷에 httpd 서비스를 담당하는 EC2 인스턴스를 만든 후 ALB로 로드밸런싱이 가능하도록 설정할 것이다. 그리고 이 ALB는 Route53에 임의로 지정한 DNS 명으로 호출할 수 있게 할 것이다.

이 예제에서 나는 sharplee7.com 이라는 개인 domain을 Route 53에 등록할 것이고(2022년 1월 현재 년간 $12 의 돈이 든다) 이 도메인에 example이라는 레코드를 추가해 이를 ALB와 연동할 예정이다.

  1. 웹 브라우저에서 example.yourdomain.com을 입력
  2. DNS Resolver, Root Name Server, TLD Name Server를 거쳐 Route 53에 등록된 example.yourdomain.com의 실제 IP를 가져온다.(ALB에 IP)
  3. 웹 브라우저는 실제 IP로 통신한다.

 

1. 시스템 구성

시스템구성은 다음과 같은 순서로 진행한다.

VPC 생성> Public Subnet 생성> 인터넷 게이트웨이 생성> 라우팅테이블 생성> EC2 인스턴스 생성> httpd 설치> ALB 설정

 

VPC 및 Public Subnet 생성

제일 먼저 아래의 절차대로 VPC를 생성해 보도록 한다.

 

 

서브넷은 서로 다른 AZ에 각각 1개씩 총 2개를 만들도록 한다. 이 예에선 서울 리전에 ap-northeast-2a와 ap-northeast-2c 두군데 생성했다. 아래의 스크린 샷을 참고해 Public Subnet 2개를 생성하도록 한다.

 

 

인터넷 게이트웨이 생성

VPC와 Public Subnet 생성이 완료되면 Internet Gateway(인터넷 게이트웨이)를 생성해 인터넷 구간에서 접근할 수 있도록 설정한다.

VPC는 앞서 만든 VPC를 선택한다.

생성 완료된 Intergnet Gateway를 볼수 있다.(처음 완료시 detached 상태인데 이를 아래 캡쳐처럼 attached 상태로 변경해야 한다.)

 

 

Routing Table 작성

VPC, Public Subnet, Internet Gateway가 각각 만들어 졌다면 라우팅테이블을 이용해 각 영역이 실제 통신할 수 있도록 설정하자

IGW<->VPC<->Public Subnet이 서로 통신하도록 하기 위해 라우팅 테이블로 세 구간을 연결한다.

아래와 같이 라우팅 테이블을 생성하면서 위에서 만든 VPC를 연결한다.

라우팅 테이블 이름은 식별하기 쉬운 이름으로 지정한다.

VPC에 라우팅 테이블을 만들었으면 이 라우팅테이블과 Internet Gateway 연동을 위해 아래 스크린샷에 있는 라우팅 편집 버튼을 클릭한다.

라우팅 추가 버튼을 클릭해 0.0.0.0/0(VPC내 모든 리소스들을 대상으로) Internet Gateway와 통신할수 있도록 아래와 같이 지정한다.

이번에는 이 라우팅 테이블과 실제 접속할 Subnet을 연결하도록 한다. '서브넷 연결'탭을 클릭해 '서브넷 연결 편집'을 클릭한다.

아래의 스크린 샷처럼 미리 만들어 놓은 public subnet 을 선택해 아래 스크린샷과 같이 되도록 한다.

 

EC2 인스턴스 및 웹서버 준비

서비스>EC2>인스턴스 생성으로 들어가 프리티어 등급의 Amzon Linux를 생성하도록 한다.(2개의 Public Subnet에 각각 1개씩 총 2개를 생성할 예정이다.). 아래의 스크린샷을 참조해 서로 각 서브넷에 아래의 작업을 두번 하도록 한다. (네트워크, 서브넷, 퍼블릭IP자동 할당 부분 주의 깊게 설정할 것)

 

보안 그룹을 지정할때는 TCP 80 포트를 아래와 같이 추가 하도록 한다.

 

인스턴스 설정이 완료되었으면 미리 만들어 두었던 SSH Key pair를 이용해 인스턴스 작성을 완료하기 바란다.(앞서 말했듯이 EC2인스턴스는 두개의 서브넷에 각각 만들어야 한다.)

 

Apache 웹 서버 설치(httpd)

EC2인스턴스 설치가 완료되었으면 ssh를 이용해 각각의 EC2인스턴스에 접속해 아래와  같이 httpd를 설치한다.

sudo yum -y install httpd

 

설치가 되었다면 /var/www/html/index.html 파일을 생성해 아래와 같이 웹 브라우저를 통해 어떤 EC2를 호출하는지 식별 가능하도록 작성(권한이 없다면 sudo로 진행)

touch /var/www/html/index.html
vi /var/www/html/index.htm

여기서는 각 EC2의 public ip를 직별 컨텐츠로 작성했다.

<html>
  <h1>3.35.233.97</h1>
</html>

마지막으로 'httpd demo start' 명령어를 통해 httpd 데몬을 실행하도록 한다. 

sudo service httpd start  

웹 브라우저를 통해 해당 EC2의 public ip를 호출하면 아래와 같이 미리 작성한 컨텐츠를 볼수 있다.

두개의 EC2 인스턴스에 동일 작업을 수행해 아래와 같이 두 웹 서버가 정상적인 호출이 되는지 확인한다.

 

 

Applicaiton Load Balancer 설정

앞서 생성한 2대의 EC2를 ALB로 묶어 로드밸런싱하도록 설정한다. EC2 화면으로 들어가 로드밸런서를 클릭한 후 '로드 밸런서 생성' 버튼을 클릭하도록 한다.

 

로드벨런서 체계는 '인터넷 경계' 타입으로 선택한다. 또한 두개의 서브넷이 있는 가용 영역(AZ)을 선택하도록 한다.

 

보안 그룹(Target Group) 구성은 새 보안 그룹 생성을 선택해 80 포트 규칙을 추가하도록 한다.

 

라우팅 구성시 대상 그룹(Target Group) 유형은 '인스턴스' 타입으로 지정한다.

 

위에서 지정한 대상 유형 인스턴스는 앞서 우리가 두개 만들었던 EC2를 각걱 선택해 '등록된 항목에 추가' 버튼을 클릭해 '등록된 대상'이 되도록 설정한다.(아래 스크린 샷 참조)

 

이제 로드밸런서 생성이 완료되었다. 지금 만든 로드밸런서를 선택해 아래 스크린샷처럼 DNS 이름을 복사하도록 한다.

 

복사한 ALB의 DNS이름을 웹 브라우저에 복사해 붙여 놓으면 아래와 같이 호출할때 마다 두대의 EC2가 번갈아 가며 호출되는 것을 볼수 있다.

 

 

 

 

 

 

2. 도메인 등록

도에인 등록은 이 블로그의 아래 포스팅에서 "Route 53을 이용한 DNS 등록" 토픽을 참조해 등록해 보도록 한다.(년간 $12 달러 비용 발생 및 등록까지 1~2 시간 소요)

 

 

AWS의 DNS 서비스, Route 53

DNS 그리고 Route 53이란? 인터넷 통신을 위해 사용하고 있는 IP는 0~255까지 4 옥텟으로 구성되어 있기 때문에 재 사용을 위해 기억하기 힘들다. 이를 해결하기 위해 숫자로 이루어진 IP를 기억하기

sharplee7.tistory.com

 

 

3. DNS Record 등록 및 연동

이제 마지막으로 Route 53에 등록된 DNS Name에 ALB를 연동해 DNS Name을 입력해 ALB로 redirection되고 ALB에 연동되어 있는 EC2가 로드밸런싱 되는 것을 확인해 본다.

 

AWS 콘솔에서 Route53을 호출해 '호스팅 영역' 메뉴를 선택한 후 미리 등록한 도메인 이름을 선택하고 '세부 정보 보기'를 클릭한다.

 

세부 정보 항목에서 ALB와 연결할 레코드를 생성하도록 한다.

 

아래의 스냅샷에서는 레코드 명을 example 이라고 지었고 http://example.sharplee7.com이 호출되면 ALB가 호출될 수 있도록 '트래픽 라우팅 대상' 을 설정했다. 

※ 트래픽 라우팅 대상 설정 정보는 아래와 같이 설정한다.

먼저 별칭 사용 체크 할것

1. Applicaiton/Class Load Balance에 대한 별칭 선택

2. 아시아 태평양(서울)[ap-northeast-2] 선택

3. dualstack.my-alb-01-119080...[앞서 만든 ALB]

 

모든 것이 완료되었으면 아래의 스냅샷 처럼 examle.sharplee7.com이 정상등록 된 것을 볼수 있다.

 

이제 웹브라우저를 통해 http://example.sharplee7.com을 호출하게 되면 ALB에 연동된 EC2가 번갈아 가며 호출되는 것을 볼수 있다.

 

 

지금까지 Route 53에 임의의 도메인을 등록해 ALB를 호출하는 것을 테스트해 보았다.

 

이번 포스팅은 여기까지가 끝~

 

반응형