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개의 댓글