연습 - 우선 순위 라우팅을 사용하여 자동 장애 조치(Failover)를 사용하도록 설정

완료됨

음악 스트리밍 애플리케이션 사용자가 미국 서부와 서유럽에 똑같이 분포되어 있다고 가정해 보겠습니다. 한 지역에 장애 조치(failover) 버전의 앱을 배포하려고 합니다.

이 연습에서 사용할 샘플 애플리케이션은 애플리케이션이 실행 중인 지역을 표시합니다. 두 인스턴스 중 하나는 더 높은 우선순위를 가지며 기본 엔드포인트가 됩니다. 다른 인스턴스는 더 낮은 우선순위를 가지며 장애 조치(failover) 엔드포인트가 됩니다. 기본 엔드포인트를 오프라인 상태로 전환하면 모든 트래픽이 장애 조치(failover) 엔드포인트로 자동 라우팅됩니다.

이 연습에서는 미국 엔드포인트를 기본으로 사용하고 오류가 발생할 경우 유럽 엔드포인트로 장애 조치(failover)하도록 Traffic Manager를 설정합니다.

새 Traffic Manager 프로필 만들기

  1. 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 함수를 사용하여 고유한 이름을 보장하는 임의의 정수를 반환합니다.

웹 애플리케이션 배포

  1. 다음 명령을 실행하여 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에 엔드포인트 추가

  1. 이제 웹 애플리케이션이 가상 머신에서 실행됩니다. 다음 명령을 실행하여 가상 머신의 공용 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 플래그를 사용하여 미국 서부 앱을 최고 우선순위로 설정합니다.

  2. 구성된 엔드포인트를 간단히 살펴보겠습니다. 다음 명령을 실행합니다.

    az network traffic-manager endpoint list \
        --resource-group "<rgn>[Sandbox resource group]</rgn>" \
        --profile-name TM-MusicStream-Priority \
        --output table
    

앱 테스트

  1. DNS가 웹앱과 Traffic Manager 프로필에 표시하는 내용을 살펴보겠습니다. 다음 명령을 실행하여 생성된 각 리소스의 IP 주소를 표시합니다.

  2. 미국 서부 2 웹앱의 주소를 검색합니다.

    nslookup $(az network public-ip show \
                --resource-group "<rgn>[Sandbox resource group]</rgn>" \
                --name westus2-vm-nic-pip \
                --query dnsSettings.fqdn \
                --output tsv)
    
  3. 서유럽 웹앱의 주소를 검색합니다.

    nslookup $(az network public-ip show \
            --resource-group "<rgn>[Sandbox resource group]</rgn>" \
            --name westeurope-vm-nic-pip \
            --query dnsSettings.fqdn \
            --output tsv)
    
  4. 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 주소와 일치해야 합니다.

  5. 다음 명령을 실행하여 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을 선택하여 새 브라우저 창이나 탭을 엽니다.

  6. 애플리케이션이 작동하는지와 페이지 아래쪽에 표시된 위치가 미국 서부 2인지 확인합니다.

    Screenshot of the running West US web app.

  7. 다음 명령을 실행하여 이 기본 엔드포인트를 사용하지 않도록 설정합니다.

    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
    
  8. DNS가 웹앱과 Traffic Manager 프로필에 표시하는 내용을 다시 살펴보겠습니다.

  9. 미국 서부 2 웹앱의 주소를 검색합니다.

    nslookup $(az network public-ip show \
                --resource-group "<rgn>[Sandbox resource group]</rgn>" \
                --name westus2-vm-nic-pip \
                --query dnsSettings.fqdn \
                --output tsv)
    
  10. 서유럽 웹앱의 주소를 검색합니다.

    nslookup $(az network public-ip show \
                --resource-group "<rgn>[Sandbox resource group]</rgn>" \
                --name westeurope-vm-nic-pip \
                --query dnsSettings.fqdn \
                --output tsv)
    
  11. 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 프로필의 주소는 서유럽 웹앱과 일치해야 합니다.

  12. 웹 페이지를 새로 고쳐서 브라우저에서 다시 애플리케이션을 테스트 합니다. Traffic Manager가 서유럽 엔드포인트로 트래픽을 자동으로 리디렉션해야 합니다. 브라우저에 따라 로컬에 캐시된 주소가 만료되는 데 몇 분 정도 걸릴 수 있습니다. 프라이빗 창에서 사이트를 열면 이 캐시를 우회하여 변경 내용을 즉시 볼 수 있습니다.

    Screenshot of the running West Europe web app.