연습 - 웹 사이트 만들기
이 연습에서는 내부 부하 분산 장치 뒤에 가상 머신 쌍을 만들고 차량 등록 웹앱을 설치합니다. 또한 Front Door에서 가상 머신에 비공개로 연결하는 데 사용할 수 있는 프라이빗 엔드포인트를 사용하여 가상 네트워크를 구성합니다. 마지막으로, 라이선스 갱신 웹 사이트를 Azure App Service 인스턴스에 배포하고 Front Door와의 프라이빗 연결도 설정합니다.
가상 머신 만들기 및 차량 등록 사이트 배포
브라우저에서 Azure Cloud Shell을 열고 리소스를 만들려는 구독에 대한 액세스 권한이 있는 디렉터리에 로그인합니다.
Cloud Shell에서 다음 명령을 실행하여 리소스 그룹 이름 및 리소스에 대한 리소스 그룹을 저장할 변수를 만듭니다.
<resource group name>
을 리소스 그룹의 이름으로 바꾸고<location>
을 리소스를 배포하려는 Azure 지역으로 바꿉니다.참고
위치 이름을 찾아야 하는 경우 az account list-locations -o table 명령을 사용할 수 있습니다.
RG=<resource group name> az group create --name $RG --location <location>
오른쪽의 Cloud Shell 창에서 다음 명령을 실행합니다. 이 명령은 Azure 명령줄 인터페이스를 사용하여
vehicleappvnet
이라는 가상 네트워크를 만듭니다. 10.0.0.0 ~ 10.0.255.255 범위의 주소를 제공하는 전용 네트워크입니다. 또한 이 명령은 10.0.1.0 ~ 10.0.1.255 주소 범위의webServerSubnet
이라는 서브넷도 만듭니다. 이 서브넷에는 가상 머신이 포함됩니다.az network vnet create \ --resource-group $RG \ --name vehicleAppVnet \ --address-prefixes 10.0.0.0/16 \ --subnet-name webServerSubnet \ --subnet-prefixes 10.0.1.0/24
가상 머신을 만드는 스크립트를 다운로드하려면 다음 명령을 실행합니다.
git clone https://github.com/MicrosoftDocs/mslearn-load-balance-web-traffic-with-application-gateway module-files
만드는 동안 웹 서버에 적용할 NSG(네트워크 보안 그룹) 및 NSG 규칙을 만듭니다.
az network nsg create \ --resource-group $RG \ --name webNSG az network nsg rule create \ --resource-group $RG \ --nsg-name webNSG \ --name myNSGRuleHTTP \ --protocol '*' \ --direction inbound \ --source-address-prefix '*' \ --source-port-range '*' \ --destination-address-prefix '*' \ --destination-port-range 80 \ --access allow \ --priority 200
웹 서버용 가상 머신을 만들고 구성하려면 다음 명령을 실행합니다. 가상 머신은
webServer1
및webServer2
라고 합니다. 각 가상 머신에서는 Ubuntu Server를 실행합니다. 각 가상 머신에 대해 사용자 이름이azureuser
인 관리자 계정이 만들어집니다. 각 가상 머신에는 차량 등록 웹앱이 설치되어 있습니다.첫 번째 명령은 두 가상 머신을 동시에 만들 수 있도록 비동기적으로 실행됩니다.
az vm create \ --resource-group $RG \ --name webServer1 \ --image Ubuntu2204 \ --admin-username azureuser \ --generate-ssh-keys \ --vnet-name vehicleAppVnet \ --subnet webServerSubnet \ --public-ip-address "" \ --nsg webNSG \ --custom-data module-files/scripts/vmconfig.sh \ --no-wait az vm create \ --resource-group $RG \ --name webServer2 \ --image Ubuntu2204 \ --admin-username azureuser \ --generate-ssh-keys \ --vnet-name vehicleAppVnet \ --subnet webServerSubnet \ --public-ip-address "" \ --nsg webNSG \ --custom-data module-files/scripts/vmconfig.sh
두 가상 머신이 성공적으로 만들어졌는지 확인하려면 다음 명령을 실행합니다.
az vm list \ --resource-group $RG \ --show-details \ --output table
다음과 비슷한 결과가 표시됩니다. 계속 진행하기 전에 두 가상 머신의 PowerState가 VM 실행 중인지 확인합니다.
Name ResourceGroup PowerState PublicIps Fqdns Location Zones ------------ ----------------- ------------ ----------- ------- -------------- ------- webServer1 MyResourceGroup VM running southcentralus webServer2 MyResourceGroup VM running southcentralus
내부 부하 분산 장치 만들기 및 백 엔드 풀에 가상 머신 추가
내부 부하 분산 장치 리소스를 만들려면 다음 명령을 실행합니다.
az network lb create \ --resource-group $RG \ --name webServerILB \ --sku standard \ --vnet-name vehicleAppVnet \ --subnet webServerSubnet \ --frontend-ip-name webServerIP \ --backend-pool-name webServerBackendPool
각 VM 인스턴스의 가용성을 확인하는 상태 프로브를 만들려면 다음 명령을 실행합니다.
az network lb probe create \ --resource-group $RG \ --lb-name webServerILB \ --name webServerHealthProbe \ --protocol tcp \ --port 80
웹 서버에 트래픽을 분산하는 부하 분산 규칙을 만들려면 다음 명령을 실행합니다.
az network lb rule create \ --resource-group $RG \ --lb-name webServerILB \ --name myHTTPRule \ --protocol tcp \ --frontend-port 80 \ --backend-port 80 \ --frontend-ip-name webServerIP \ --backend-pool-name webServerBackendPool \ --probe-name webServerHealthProbe \ --idle-timeout 15 \ --enable-tcp-reset true
내부 부하 분산 장치의 백 엔드 풀에 두 웹 서버를 추가하려면 다음 명령을 실행합니다.
az network nic ip-config address-pool add \ --address-pool webServerBackendPool \ --lb-name webServerILB \ --ip-config-name ipconfigwebServer1 \ --nic-name webServer1VMNic \ --resource-group $RG az network nic ip-config address-pool add \ --address-pool webServerBackendPool \ --lb-name webServerILB \ --ip-config-name ipconfigwebServer2 \ --nic-name webServer2VMNic \ --resource-group $RG
프라이빗 링크 서비스 및 프라이빗 엔드포인트 만들기
Front Door와 원본 리소스 간에 프라이빗 통신을 설정하려면 프라이빗 링크 서비스가 필요합니다. 프라이빗 엔드포인트는 Microsoft 네트워크를 통해 내부 연결을 달성하기 위해 Front Door가 연결을 설정하는 것입니다.
프라이빗 링크 서비스를 만들고 내부 부하 분산 장치와 연결하려면 다음 명령을 실행합니다. 첫 번째 명령은 프라이빗 링크 서비스를 만들 수 있도록 서브넷에서 프라이빗 링크 네트워크 정책을 사용하지 않도록 설정합니다.
az network vnet subnet update \ --name webServerSubnet \ --resource-group $RG \ --vnet-name vehicleAppVnet \ --disable-private-link-service-network-policies true az network private-link-service create \ --resource-group $RG \ --name myPrivateLinkService \ --vnet-name vehicleAppVnet \ --subnet webServerSubnet \ --lb-name webServerILB \ --lb-frontend-ip-configs webServerIP
가상 네트워크에서 프라이빗 엔드포인트를 만들려면 다음 명령을 실행합니다. 이 프라이빗 엔드포인트에 대한 연결을 설정하는 요청은 자동으로 승인됩니다.
export resourceid=$(az network private-link-service show \ --name myPrivateLinkService \ --resource-group $RG \ --query id \ --output tsv) az network private-endpoint create \ --connection-name myPEconnectiontoPLS \ --name myPrivateEndpoint \ --private-connection-resource-id $resourceid \ --resource-group $RG \ --subnet webServerSubnet \ --manual-request false \ --vnet-name vehicleAppVnet
이제 차량 등록 웹앱을 실행하는 가상 머신이 만들어졌습니다. 두 가상 머신은 모두 동일하며 동일한 가상 네트워크의 일부입니다. 또한 내부 부하 분산 장치 뒤에 있는 가상 머신에 액세스하기 위해 프라이빗 링크 서비스 및 프라이빗 엔드포인트를 설정했습니다.
App Service 만들기 및 라이선스 갱신 사이트 배포
먼저 웹 사이트의 고유 이름을 생성하려면 다음 명령을 실행합니다.
APPSERVICE="licenserenewal$RANDOM"
다음으로, 웹앱에서 사용할 App Service 요금제를 만들려면 다음 명령을 실행합니다.
az appservice plan create \ --resource-group $RG \ --name vehicleAppServicePlan \ --location eastus \ --sku FREE
마지막으로, 웹앱을 만들고 라이선스 갱신 사이트를 배포합니다.
az webapp create \ --resource-group $RG \ --name $APPSERVICE \ --plan vehicleAppServicePlan \ --deployment-source-url https://github.com/MicrosoftDocs/mslearn-load-balance-web-traffic-with-application-gateway \ --deployment-source-branch appService
이제 Front Door 구성을 좀 더 자세히 살펴보겠습니다.