아마존 웹 서비스를 다루는 기술 17장 - 5. Route 53 DNS Failover 활용하기

저작권 안내
  • 책 또는 웹사이트의 내용을 복제하여 다른 곳에 게시하는 것을 금지합니다.
  • 책 또는 웹사이트의 내용을 발췌, 요약하여 강의 자료, 발표 자료, 블로그 포스팅 등으로 만드는 것을 금지합니다.

AWS 리소스와 연동 가능한 DNS 서비스 Route 53

이재홍 http://www.pyrasis.com 2014.03.24 ~ 2014.06.30

Route 53 DNS Failover 활용하기

Route 53의 DNS Failover 기능을 활용해보겠습니다. DNS Failover 기능이 동작하는지 확인하기 위해 EC2 인스턴스 2개가 필요합니다. '4.3 EC2 인스턴스 생성하기'를 참조하여 EC2 인스턴스를 2개 생성합니다. 그리고 '6장 고정 IP를 제공하는 Elastic IP'를 참조하여 EC2 인스턴스에 Elastic IP를 연결합니다.

이미 EC2 인스턴스(Example Server)를 만들어놓았다면 추가로 하나 더 생성합니다. 그리고 '12.3.1 EC2와 CloudFront 연동하기'를 참조하여 EC2 인스턴스에 Node.js를 설치하고 웹 서버를 실행할 수 있도록 준비합니다. 이번 실습은 EC2 인스턴스 생성, 웹 서버 설치 등 생략되는 부분이 많기 때문에 앞 부분을 학습한 뒤 진행하는 것을 권장합니다.

첫 번째 EC2 인스턴스를 Primary로 사용하겠습니다. EC2 인스턴스(Primary)에 접속하여 텍스트 편집기를 열고 아래와 같이 작성한 뒤 app.js로 저장합니다.

app.js
var express = require('express');
var app = express();

app.get(['/', '/index.html'], function (req, res) {
  res.send('EC2 Primary');
});

app.listen(80);

파일 저장이 끝났으면 다음 명령을 입력하여 서버를 실행합니다.

[ec2-user@ip-172-31-21-171 ExampleServer]$ sudo node app.js

EC2 인스턴스 목록에서 EC2 인스턴스(Primary)의 공인 IP 주소를 확인합니다.

그림 17-43 EC2 인스턴스(Primary) 공인 IP 주소 확인

두 번째 인스턴스는 Failover 기능을 위한 Secondary로 사용하겠습니다. EC2 인스턴스(Secondary)에 접속하여 텍스트 편집기를 열고 아래와 같이 작성한 뒤 app.js로 저장합니다.

app.js
var express = require('express');
var app = express();

app.get(['/', '/index.html'], function (req, res) {
  res.send('EC2 Secondary');
});

app.listen(80);

파일 저장이 끝났으면 다음 명령을 입력하여 서버를 실행합니다.

[ec2-user@ip-172-31-21-171 ExampleServer]$ sudo node app.js

EC2 인스턴스 목록에서 EC2 인스턴스(Secondary)의 공인 IP 주소를 확인합니다.

그림 17-44 EC2 인스턴스(Secondary)의 공인 IP 주소 확인

Route 53 메인 페이지에서 왼쪽 Health Checks를 클릭하고, Create Health Check 버튼을 클릭합니다.

그림 17-45 Route 53 Health Check 생성

EC2 인스턴스(Primary)에 대한 Health Check를 생성합니다(그림 17-50).

  • Name: 서버 동작 상태 체크의 이름입니다. 기본값 그대로 비워둡니다.
  • Protocol: 서버 동작 상태를 체크할 프로토콜을 설정합니다. HTTP, HTTPS, TCP를 선택할 수 있습니다. 기본값 그대로 사용합니다.
  • Specify Endpoint By: 서버 동작 상태를 체크할 때 IP 주소로 할지, 도메인으로 할지 설정합니다. 기본값 그대로 사용합니다.
  • IP Address: 서버 동작 상태를 체크할 때 접근할 IP 주소를 설정합니다. EC2 인스턴스(Primary)의 공인 IP 주소를 입력합니다.
  • Host Name: 동작 상태를 체크하는 서버의 이름입니다. 입력하지 않아도 상관 없습니다.
  • Port: 서버 동작 상태를 체크할 때 접근할 포트 번호입니다. 기본값 그대로 사용합니다.
  • Path: 서버 동작 상태를 체크할 때 접근할 파일의 URL입니다. /index.html, /hello/healthckeck.html과 같이 입력하면 됩니다. 기본값 그대로 비워둡니다.
  • Request Interval: 서버 동작 상태 체크 주기를 설정합니다. 30초와 10초를 선택할 수 있습니다. 여기서는 10초를 선택합니다.
  • Failure Threshold: 서버 접근에 실패했을 때 재시도 횟수입니다. 기본값 그대로 사용합니다.
  • Enable String Match: 서버에서 출력하는 파일의 내용(body)에서 특정 문자열로 상태를 판단할지 설정합니다. 기본값 그대로 사용합니다.
    • Search String: 파일 내용에서 검색할 문자열을 설정합니다.
  • URL: 서버 동작 상태를 체크할 때 접근할 URL 입니다. 위에서 설정한 내용대로 자동 생성됩니다.
  • Health Check Type: 서버 동작 상태 체크 종류입니다. 위에서 설정한 내용대로 자동 생성됩니다. 요금에 관해서는 View Pricing 링크를 참조해주십시오.

설정이 완료되었으면 Create 버튼을 클릭합니다.

그림 17-46 Route 53 Health Check 생성

Route 53 Health Check 목록에 Health Check가 생성되었습니다.

그림 17-47 Route 53 Health Check 생성 완료

왼쪽 메뉴에서 Hosted Zones를 클릭하여 Hosted Zone 목록으로 이동합니다. 그리고 도메인을 선택하고 위쪽 Go to Record Sets 버튼을 클릭합니다.

그림 17-48 Route 53 레코드 목록으로 이동

도메인의 레코드 목록이 표시됩니다. 위쪽 Create Record Set 버튼을 클릭합니다.

그림 17-49 Route 53 레코드 목록

EC2 인스턴스(Primary)에 대한 A 레코드를 생성합니다.

  • Name: 생성할 도메인 이름을 설정합니다. examplefailover를 입력합니다.
  • Type: 레코드 종류를 설정합니다. 기본값 그대로 A - IPv4 address를 선택합니다.
  • Alias: IP 주소를 사용할 것이므로 기본값 그대로 사용합니다.
  • TTL: Time To Live의 약자이며 A 레코드가 갱신되는 주기를 설정합니다. 초 단위로 설정합니다. DNS Failover 기능은 60초를 권장하고 있으므로 60을 입력합니다.
  • Value: 도메인 네임을 쿼리했을 때 알려줄 IP 주소를 설정합니다. EC2 인스턴스(Primary)의 공인 IP 주소를 입력합니다.
  • Routing Policy: 라우팅 정책을 설정합니다. Failover를 선택합니다.
  • Failover Record Type: 현재 레코드가 Primary인지, Secondary인지 설정합니다. Primary이므로 기본값 그대로 사용합니다.
  • Set ID: Failover 레코드끼리 서로 구분하는 ID입니다. 기본값 그대로 사용합니다.
  • Associate with Health Check: Health Check 설정과 연동할지 설정합니다. Yes를 선택합니다.
  • Health Check to Associate: 현재 생성되어 있는 모든 Health Check 목록이 표시됩니다. 방금 생성한 EC2 인스턴스(Primary) Health Check를 선택합니다.

설정이 완료되었으면 Create 버튼을 클릭합니다.

그림 17-50 Route 53 Primary A 레코드 생성

도메인의 Primary A 레코드가 생성되었습니다. 위쪽 Create Record Set 버튼을 클릭하여 Secondary A 레코드를 생성합니다.

그림 17-51 Primary A 레코드 생성 완료

EC2 인스턴스(Secondary) 대한 A 레코드를 생성합니다.

  • Name: 생성할 도메인 이름을 설정합니다. examplefailover를 입력합니다.
  • Type: 레코드 종류를 설정합니다. 기본값 그대로 A - IPv4 address를 선택합니다.
  • Alias: IP 주소를 사용할 것이므로 기본값 그대로 사용합니다.
  • TTL: Time To Live의 약자이며 A 레코드가 갱신되는 주기를 설정합니다. 초 단위로 설정합니다. DNS Failover 기능은 60초를 권장하고 있으므로 60을 입력합니다.
  • Value: 도메인 네임을 쿼리했을 때 알려줄 IP 주소를 설정합니다. EC2 인스턴스(Secondary)의 공인 IP 주소를 입력합니다.
  • Routing Policy: 라우팅 정책을 설정합니다. Failover를 선택합니다.
  • Failover Record Type: 현재 레코드가 Primary인지, Secondary인지 설정합니다. Secondary이므로 Secondary를 선택합니다.
  • Set ID: Failover 레코드끼리 서로 구분하는 ID입니다. 기본값 그대로 사용합니다.
  • Associate with Health Check: Health Check 설정과 연동할지 설정합니다. Secondary는 Health Check가 필요 없으므로 기본값 그대로 No를 선택합니다.

설정이 완료되었으면 Create 버튼을 클릭합니다.

그림 17-52 Route 53 Secondary A 레코드 생성

도메인의 Secondary A 레코드가 생성되었습니다.

그림 17-53 Route 53 Secondary A 레코드 생성 완료

이제 웹 브라우저로 Failover 기능을 설정한 도메인에 접속합니다. EC2 인스턴스(Primary)의 내용이 표시됩니다.

그림 17-54 Failover 기능을 설정한 도메인에 접속

이제 EC2 인스턴스(Primary)의 웹 서버(Node.js)를 종료하고, 약 1분 정도 후에 새로고침을 해봅니다. Failover 기능이 잘 동작하여 EC2 인스턴스(Secondary)의 내용이 표시됩니다.

그림 17-55 Failover 기능이 동작하여 EC2 인스턴스(Secondary)에 접속

접속이 안 될 때는 EC2 인스턴스의 Security Group에 80번 포트가 열려있는지 확인합니다. 웹 브라우저에서 각각의 IP 주소로 접속해서 확인하면 됩니다.

DNS Failover와 ELB
ELB를 사용할 때는 A 레코드의 Alias를 사용하면 됩니다. ELB 접속 주소는 IP 주소가 아닌 도메인으로 제공됩니다. A 레코드 Alias는 IP 주소 대신 도메인에 연결하는 기능입니다.


저작권 안내

이 웹사이트에 게시된 모든 글의 무단 복제 및 도용을 금지합니다.
  • 블로그, 게시판 등에 퍼가는 것을 금지합니다.
  • 비공개 포스트에 퍼가는 것을 금지합니다.
  • 글 내용, 그림을 발췌 및 요약하는 것을 금지합니다.
  • 링크 및 SNS 공유는 허용합니다.