Route53 - Policies

Jihun Kim·2022년 3월 26일
0

aws solutions architect

목록 보기
33/57
post-thumbnail

Routing Policies

  • Routing Policies는 Route53이 어떻게 DNS 쿼리에 응답할 지를 정의한다.
  • 라우팅이라는 이름 때문에 오해할 수가 있는데, 여기서 말하는 라우팅은 로드 밸런서가 트래픽을 라우팅 하는 것과는 다른 개념이다.
    - 트래픽은 Route53을 통과하지 않으며 Route53은 DNS 쿼리에만 응답하게 되어 클라이언트가 HTTP 쿼리를 어떻게 처리해야 할 지를 알 수 있도록 만들어 주는 역할을 한다.
  • Route53이 지원하는 라우팅 정책은 다음과 같은 것들이 있다.
    - Simple
    - Weighted(가중치 기반)
    - Failover(장애 조치)
    - Latency based(지연 시간 기반)
    - Geolocation(지리적)
    - Multi-Value Answer(다중 값 응담)
    - Geoproximity (using Route 53 Traffic Flow feature)(지리 근접 라우팅)

Simple

  • 일반적인 방법으로 트래픽을 하나의 리소스로 보내는 방식이다.
  • Simple policy를 이용할 경우 한 레코드에 아래와 같이 여러 개의 values를 지정할 수 있다.

    - 이를 통해 만약 클라이언트가 여러 개의 values를 반환 받으면 클라이언트는 알아서 반환 받은 values들 중 하나를 무작위로 선택한다.
  • 헬스 체크는 사용할 수 없다.
  • 만약 Alias 기능이 켜진 상태라면 하나의 AWS 리소스만 values로 선택할 수 있다.

Weighted

  • 특정 리소스로 향하는 요청의 %를 조절할 수 있다.
    - 레코드 생성시 여러 개를 추가해 생성할 수 있으며 각 레코드 별로 weight를 부여하면 된다.
  • weight은 합이 꼭 100이 될 필요는 없다. 왜냐하면 전체 weight에 대한 %로 계산 되기 때문이다.
  • 가중치를 부여할 DNS 레코드는 반드시 동일한 이름과 타입을 가져야 한다.
  • Health check 기능도 지원 된다.
  • 사용 예시
    - 리전 사이의 로드 밸런싱
    - 새로운 어플리케이션의 버전 테스트: 테스트할 EC2 instance의 비중을 10 정도로 낮게 두어 테스트 해볼 수 있다.
  • 만약 특정 리소스에 트래픽을 더이상 전송하고 싶지 않다면 가중치를 0으로 설정하면 된다.
  • 만약 모든 레코드의 가중치가 각각 0이라면 이 때는 모든 레코드가 동일한 가중치를 갖게 된다.

Latency-based

  • Latency-based 라우팅 정책은 클라이언트로부터 가장 지연 시간이 짧은 region의 리소스로 redirect를 해준다.
  • 이 기능은 유저의 지연 시간이 가장 큰 우선순위인 서비스에서 활용하면 좋다.
  • Latency는 유저와 AWS 리전 간의 트래픽을 기반으로 한다.
    - 따라서, 아시아권 유저의 경우 ap-northeast-2로 설정된 레코드로 redirect 될 것이다.
  • Health check 기능을 사용할 수 있으며 이 경우 health check은 failover 능력이 있다.

아래와 같이 레코드를 생성할 때 Routing policy를 Latency로 설정하면 Region은 사용자가 직접 value에 해당하는 region으로 설정해야 한다. 만약 아래 화면에 있는 value는 ap-southeast-2에 있는 ec2 instance의 ip 주소이다.


Failover

Primary 레코드를 생성하고 failover에 사용할 Secondary 레코드를 생성해야 한다. 그런데 이 때 pirmary와 secondary 모두에 health checks를 달아줄 수도 있지만 secondary에는 꼭 health checks를 추가하지 않아도 된다.

primary, secondary 레코드를 모두 생성하고 나면 primary에 장애가 발생했을 때 secondary로 failover를 하게 되며 만약 primary가 복구 되면 다시 primary로 failover back을 할 수 있다.


Geolocation

  • 유저의 정확한 지역 정보를 이용해 라우팅 해주는 policy이다.
    - 이 점이 Latency-based와는 다르다.
  • 지역을 대륙/ 나라 등으로 한정해서 해당 대륙이나 나라에 대한 요청은 모두 A ip로 이동하도록 설정할 수 있다.
  • 해당하는 지역들이 아닐 경우에도 라우팅을 해주어야 하기 때문에 default도 반드시 설정해야 한다.
  • 사용 예시
    - 웹 사이트의 localization
    - 특정 컨텐츠가 다른 지역으로 나가는 것을 막아야 할 때
  • Health checks도 사용할 수 있다.

특정 location에 대한 레코드들을 생성한 뒤 아래와 같이 default location을 설정할 수 있다.


Geoproximity

  • 리소스를 전세계로 설정한 뒤 특정 리전에 더 많은 트래픽을 보내고 싶은 경우 사용할 수 있는 정책이다.
  • 즉, 특정 리전의 편향을 증가시켜서 한 리전에서 다른 리전으로 트래픽을 보낼 때 유리하다.
  • 사용할 수 있는 리소스는 AWS 리소스와 Non-AWS 리소스 두 가지가 있다.
    - AWS resources: AWS region을 특정해 주어야 한다.
    - Non-AWS resources: 이 경우 위도와 경도를 특정해 주어야 한다.
  • 이 기능을 사용하기 위해서는 Route53의 Traffic flow를 설정해야 한다.

아래의 경우 사용자의 위치에서 가장 가까운 리소스 리전으로 라우팅 된다.

us-east-1의 편향이 더 높기 때문에 아래의 경우 둘 사이에 있는 유저에 대한 분할 선이 조금씩 왼쪽으로 이동하게 된다.


Multi-value

  • 여러 개의 리소스로 트래픽을 라우팅 할 때 사용할 수 있는 정책이다.
  • Route 53은 여러 개의 값 또는 리소스를 반환하게 된다.
  • Health check을 함께 사용할 수 있으며, health check을 통과한 리소스만 반환 한다.
  • 클라이언트에서 다중값 쿼리를 실행하면 최대 8개의 레코드를 수신하게 되는데 클라이언트는 이 중 하나를 선택한다.
    - 이 중 최소 1개, 최대 8개의 레코드가 Health check를 통과해 클라이언트는 안전한 리소스를 받게 된다.
  • 이 정책은 ELB처럼 보이지만 ELB를 대체할 수는 없으며, 클라이언트 사이드의 로드 밸런싱이라 할 수 있다.
  • 참고로, Simple policy를 사용하게 되면 health check를 사용하지 않기 때문에 안전을 보장할 수는 없는 반면 Multi values를 사용하면 안전이 보장된다는 장점이 있다.

사용 예시는 아래와 같다.

profile
쿄쿄

0개의 댓글

관련 채용 정보