연습 - 우선 순위 라우팅을 사용하여 자동 장애 조치(Failover)를 사용하도록 설정
음악 스트리밍 애플리케이션 사용자가 미국 서부와 서유럽에 똑같이 분포되어 있다고 가정해 보겠습니다. 한 지역에 장애 조치(failover) 버전의 앱을 배포하려고 합니다.
이 연습에서 사용할 샘플 애플리케이션은 애플리케이션이 실행 중인 지역을 표시합니다. 두 인스턴스 중 하나는 더 높은 우선순위를 가지며 기본 엔드포인트가 됩니다. 다른 인스턴스는 더 낮은 우선순위를 가지며 장애 조치(failover) 엔드포인트가 됩니다. 기본 엔드포인트를 오프라인 상태로 전환하면 모든 트래픽이 장애 조치(failover) 엔드포인트로 자동 라우팅됩니다.
이 연습에서는 미국 엔드포인트를 기본으로 사용하고 오류가 발생할 경우 유럽 엔드포인트로 장애 조치(failover)하도록 Traffic Manager를 설정합니다.
새 Traffic Manager 프로필 만들기
Cloud Shell에서 다음 명령을 실행하여 새 Traffic Manager 프로필을 만듭니다.
az network traffic-manager profile create \ --resource-group "<rgn>[Sandbox resource group]</rgn>" \ --name TM-MusicStream-Priority \ --routing-method Priority \ --unique-dns-name TM-MusicStream-Priority-$RANDOM
명령에서 다음 매개 변수를 사용합니다.
- --routing-method Priority: 우선 라우팅 방법을 사용하여 Traffic Manager 프로필을 만듭니다.
- --unique-dns-name: 전역적으로 고유한 도메인 이름
<unique-dns-name>.trafficmanager.net
을 만듭니다. 여기서는$RANDOM
Bash 함수를 사용하여 고유한 이름을 보장하는 임의의 정수를 반환합니다.
웹 애플리케이션 배포
다음 명령을 실행하여 Resource Manager 템플릿을 배포합니다. 이 템플릿은 두 개의 서버(서유럽 지역에 하나, 미국 서부 2 지역에 하나)를 생성합니다. 배포가 완료될 때까지 몇 분 정도 걸릴 수 있으므로 기다려 주세요.
az deployment group create \ --resource-group "<rgn>[Sandbox resource group]</rgn>" \ --template-uri https://raw.githubusercontent.com/MicrosoftDocs/mslearn-distribute-load-with-traffic-manager/master/azuredeploy.json \ --parameters password="$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 32)"
Traffic Manager에 엔드포인트 추가
이제 웹 애플리케이션이 가상 머신에서 실행됩니다. 다음 명령을 실행하여 가상 머신의 공용 IP 주소 리소스를 Traffic Manager 프로필에 엔드포인트로 추가합니다.
WestId=$(az network public-ip show \ --resource-group "<rgn>[Sandbox resource group]</rgn>" \ --name westus2-vm-nic-pip \ --query id \ --output tsv) az network traffic-manager endpoint create \ --resource-group "<rgn>[Sandbox resource group]</rgn>" \ --profile-name TM-MusicStream-Priority \ --name "Primary-WestUS" \ --type azureEndpoints \ --priority 1 \ --target-resource-id $WestId
WestId=$(az network public-ip show \ --resource-group "<rgn>[Sandbox resource group]</rgn>" \ --name westeurope-vm-nic-pip \ --query id \ --output tsv) az network traffic-manager endpoint create \ --resource-group "<rgn>[Sandbox resource group]</rgn>" \ --profile-name TM-MusicStream-Priority \ --name "Failover-WestEurope" \ --type azureEndpoints \ --priority 2 \ --target-resource-id $WestId
이 코드는 두 가상 머신에서 리소스 ID를 가져옵니다. 그런 다음, 코드는 ID를 사용하여 두 앱을 엔드포인트로 Traffic Manager 프로필에 추가합니다. 코드는
--priority
플래그를 사용하여 미국 서부 앱을 최고 우선순위로 설정합니다.구성된 엔드포인트를 간단히 살펴보겠습니다. 다음 명령을 실행합니다.
az network traffic-manager endpoint list \ --resource-group "<rgn>[Sandbox resource group]</rgn>" \ --profile-name TM-MusicStream-Priority \ --output table
앱 테스트
DNS가 웹앱과 Traffic Manager 프로필에 표시하는 내용을 살펴보겠습니다. 다음 명령을 실행하여 생성된 각 리소스의 IP 주소를 표시합니다.
미국 서부 2 웹앱의 주소를 검색합니다.
nslookup $(az network public-ip show \ --resource-group "<rgn>[Sandbox resource group]</rgn>" \ --name westus2-vm-nic-pip \ --query dnsSettings.fqdn \ --output tsv)
서유럽 웹앱의 주소를 검색합니다.
nslookup $(az network public-ip show \ --resource-group "<rgn>[Sandbox resource group]</rgn>" \ --name westeurope-vm-nic-pip \ --query dnsSettings.fqdn \ --output tsv)
Traffic Manager 프로필의 주소를 검색합니다.
# Retrieve the address for the Traffic Manager profile nslookup $(az network traffic-manager profile show \ --resource-group "<rgn>[Sandbox resource group]</rgn>" \ --name TM-MusicStream-Priority \ --query dnsConfig.fqdn \ --output tsv)
Traffic Manager 프로필 주소는 westus2-vm 가상 머신에 할당된 westus2-vm-nic-pip IP 주소와 일치해야 합니다.
다음 명령을 실행하여 Traffic Manager 프로필의 FQDN(정규화된 도메인 이름)으로 이동합니다. 가장 높은 우선순위로 응답하는 엔드포인트로 요청이 라우팅됩니다.
echo http://$(az network traffic-manager profile show \ --resource-group "<rgn>[Sandbox resource group]</rgn>" \ --name TM-MusicStream-Priority \ --query dnsConfig.fqdn \ --output tsv)
코드가 Cloud Shell에 FQDN을 출력합니다. FQDN을 선택하여 새 브라우저 창이나 탭을 엽니다.
애플리케이션이 작동하는지와 페이지 아래쪽에 표시된 위치가 미국 서부 2인지 확인합니다.
다음 명령을 실행하여 이 기본 엔드포인트를 사용하지 않도록 설정합니다.
az network traffic-manager endpoint update \ --resource-group "<rgn>[Sandbox resource group]</rgn>" \ --name "Primary-WestUS" \ --profile-name TM-MusicStream-Priority \ --type azureEndpoints \ --endpoint-status Disabled
DNS가 웹앱과 Traffic Manager 프로필에 표시하는 내용을 다시 살펴보겠습니다.
미국 서부 2 웹앱의 주소를 검색합니다.
nslookup $(az network public-ip show \ --resource-group "<rgn>[Sandbox resource group]</rgn>" \ --name westus2-vm-nic-pip \ --query dnsSettings.fqdn \ --output tsv)
서유럽 웹앱의 주소를 검색합니다.
nslookup $(az network public-ip show \ --resource-group "<rgn>[Sandbox resource group]</rgn>" \ --name westeurope-vm-nic-pip \ --query dnsSettings.fqdn \ --output tsv)
Traffic Manager 프로필의 주소를 검색합니다.
nslookup $(az network traffic-manager profile show \ --resource-group "<rgn>[Sandbox resource group]</rgn>" \ --name TM-MusicStream-Priority \ --query dnsConfig.fqdn \ --output tsv)
Traffic Manager 프로필의 주소는 서유럽 웹앱과 일치해야 합니다.
웹 페이지를 새로 고쳐서 브라우저에서 다시 애플리케이션을 테스트 합니다. Traffic Manager가 서유럽 엔드포인트로 트래픽을 자동으로 리디렉션해야 합니다. 브라우저에 따라 로컬에 캐시된 주소가 만료되는 데 몇 분 정도 걸릴 수 있습니다. 프라이빗 창에서 사이트를 열면 이 캐시를 우회하여 변경 내용을 즉시 볼 수 있습니다.