Amazon CloudFront를 사용하여 웹 콘텐츠를 배포했습니다. 하지만 웹사이트로 향하는 트래픽이 잘못된 엣지 로케이션으로 라우팅됩니다.
간략한 설명
CloudFront는 배포의 가격 분류, 관련 지리적 위치 데이터베이스 및 EDNS0-Client-Subnet 지원을 기반으로 트래픽을 라우팅합니다. 이러한 요소의 조합에 따라 웹사이트 뷰어가 예상치 못한 엣지 로케이션으로 라우팅될 수 있습니다. 이로 인해 CloudFront 엣지 로케이션에서 객체를 검색하는 데 걸리는 전체 지연 시간이 늘어날 수 있습니다.
예상치 못한 엣지 로케이션으로 라우팅되는 트래픽 문제를 해결하려면 다음을 확인하십시오.
- 가격 분류에서 예상 엣지 로케이션을 지원합니다.
- DNS 확인자가 애니캐스트 라우팅을 지원합니다.
- DNS 확인자가 EDNS0-Client-Subnet을 지원합니다.
해결 방법
가격 분류에서 예상 엣지 로케이션 지원
CloudFront 배포의 가격 분류에 포함된 엣지 로케이션을 확인하십시오. 다른 엣지 로케이션을 포함하려면 가격 분류를 변경합니다.
DNS 확인자가 애니캐스트 라우팅 지원
DNS 확인자가 애니캐스트 라우팅을 지원하는 경우 DNS 확인자가 사용하는 여러 엣지 로케이션이 있습니다. 요청자의 엣지 로케이션은 최적의 지연 시간을 기반으로 하므로 확인자의 IP 주소 위치가 예기치 않게 변경될 수 있습니다.
DNS 확인자가 애니캐스트를 지원하는지 확인하려면 다음 명령 중 하나를 여러 번 실행하십시오.
Windows 이외의 운영 체제(OS):
dig +nocl TXT o-o.myaddr.l.google.com
Windows:
nslookup -type=txt o-o.myaddr.l.google.com
명령을 실행할 때마다 출력에 동일한 IP 주소가 포함되는 경우 DNS 확인자는 애니캐스트를 지원하지 않습니다. 명령을 실행할 때마다 출력에 다른 IP 주소가 포함되는 경우 DNS 확인자는 애니캐스트를 지원합니다.
DNS 확인자가 EDNS0-Client-Subnet 지원
다음 명령 중 하나를 실행하여 DNS 확인자가 EDNS0-Client-Subnet을 지원하는지 확인하십시오.
Windows 이외의 OS:
dig +nocl TXT o-o.myaddr.l.google.com
Windows:
nslookup -type=txt o-o.myaddr.l.google.com
참고: TTL 값을 확인하고 TTL이 만료되면 명령을 실행해야 합니다. 그렇지 않으면 재귀 확인자에서 캐시된 응답을 받을 수 있습니다.
DNS 확인자가 EDNS0-Client-Subnet을 지원하지 않는 경우 출력은 다음과 비슷합니다.
$ dig +nocl TXT o-o.myaddr.l.google.com +short
"192.0.2.1"
위의 예에서 192.0.2.1은 애니캐스트를 사용한 가장 가까운 DNS 서버의 IP 주소입니다. DNS 확인자는 EDNS0-Client-Subnet을 지원하지 않습니다.
웹사이트 트래픽이 올바른 위치로 라우팅되도록 하려면 다음 작업 중 하나를 수행하십시오.
- DNS 확인자를 웹사이트 클라이언트와 지리적으로 더 가까운 위치에 있는 재귀 DNS 확인자로 변경합니다.
- EDNS0-Client-Subnet을 지원하는 DNS 확인자로 변경합니다.
DNS 확인자가 EDNS0-Client-Subnet을 지원하는 경우 출력에는 CloudFront 신뢰할 수 있는 이름 서버에 대한 잘린 클라이언트 서브넷(/24 또는 /32)이 포함됩니다.
$ dig +nocl TXT o-o.myaddr.l.google.com @8.8.8.8 +short
"192.0.2.1"
"edns0-client-subnet 198.51.100.0/24"
위의 예에서 192.0.2.1은 가장 가까운 DNS 확인자 IP 주소입니다. DNS 쿼리에 응답하는 데 사용되는 클라이언트-서브넷 범위는 198.51.100.0/24입니다.
DNS 확인자가 EDNS0-Client-Subnet을 지원하더라도 웹사이트 트래픽이 여전히 잘못 라우팅될 수 있습니다. 이 문제를 해결하려면 퍼블릭 지리적 위치 데이터베이스를 DNS 확인자에게 쿼리를 보내는 클라이언트-서브넷 범위와 연결합니다. DNS 확인자가 잘린 버전의 클라이언트 IP 주소를 CloudFront 이름 서버에 전달하면 CloudFront는 여러 퍼블릭 지리적 위치 데이터베이스를 기반으로 데이터베이스를 검사합니다.
요청이 올바르게 라우팅되도록 지리적 위치 데이터베이스의 IP 주소를 정확하게 매핑해야 합니다.
DNS 확인자가 EDNS0-Client-Subnet을 지원하는 경우 다음 DNS 조회 명령을 실행하여 트래픽이 라우팅되는 엣지 로케이션을 확인하십시오.
$ dig dftex7example.cloudfront.net. +short
13.224.77.109
13.224.77.62
13.224.77.65
13.224.77.75
그런 다음, 이전 명령이 반환되는 IP 주소에 대해 역방향 DNS 조회를 실행하십시오.
$ dig -x 13.224.77.62 +short
server-13-224-77-62.man50.r.cloudfront.net.
위 예시에서는 트래픽이 맨체스터 엣지 로케이션으로 라우팅됩니다.
팁: 추가 테스트를 위해 8.8.8.8, 8.8.4.4 또는 1.1.1.1 등과 같은 EDNS0-Client-Subnet을 지원하는 퍼블릭 DNS 확인자를 사용할 수 있습니다. 엣지 로케이션 IP 주소가 포함된 쿼리를 퍼블릭 DNS 확인자로 보내십시오. 그런 다음, DNS 쿼리 결과를 확인하여 CloudFront가 EDNS0-Client-Subnet에 대한 올바른 정보를 가지고 있는지 확인하십시오.