빠른 시작: Azure PowerShell을 사용하여 Azure Application Gateway를 통해 웹 트래픽 보내기Quickstart: Direct web traffic with Azure Application Gateway using Azure PowerShell

이 빠른 시작에서는 Azure PowerShell을 사용하여 애플리케이션 게이트웨이를 만듭니다.In this quickstart, you use Azure PowerShell to create an application gateway. 그런 다음, 테스트하여 제대로 작동하는지 확인합니다.Then you test it to make sure it works correctly.

애플리케이션 게이트웨이는 애플리케이션 웹 트래픽을 백 엔드 풀의 특정 리소스로 보냅니다.The application gateway directs application web traffic to specific resources in a backend pool. 수신기를 포트에 할당하고, 규칙을 만들고, 백 엔드 풀에 리소스를 추가합니다.You assign listeners to ports, create rules, and add resources to a backend pool. 간단히 나타내기 위해 이 문서에서는 공용 프런트 엔드 IP 1개, 애플리케이션 게이트웨이에 단일 사이트를 호스트하는 기본 수신기 1개, 기본 요청 라우팅 규칙 1개 및 백 엔드 풀의 가상 머신 2개를 이용한 간단한 설정을 사용합니다.For the sake of simplicity, this article uses a simple setup with a public front-end IP, a basic listener to host a single site on the application gateway, a basic request routing rule, and two virtual machines in the backend pool.

Azure CLI 또는 Azure Portal을 사용하여 이 빠른 시작을 완료할 수도 있습니다.You can also complete this quickstart using Azure CLI or the Azure portal.

사전 요구 사항Prerequisites

Azure Cloud Shell 사용Use Azure Cloud Shell

Azure는 브라우저를 통해 사용할 수 있는 대화형 셸 환경인 Azure Cloud Shell을 호스트합니다.Azure hosts Azure Cloud Shell, an interactive shell environment that you can use through your browser. Cloud Shell에서 Bash 또는 PowerShell을 사용하여 Azure 서비스 작업을 수행할 수 있습니다.You can use either Bash or PowerShell with Cloud Shell to work with Azure services. 로컬 환경에 아무 것도 설치할 필요 없이 Azure Cloud Shell의 미리 설치된 명령을 사용하여 이 문서의 코드를 실행할 수 있습니다.You can use the Cloud Shell preinstalled commands to run the code in this article without having to install anything on your local environment.

Azure Cloud Shell을 시작하려면 다음을 수행합니다.To start Azure Cloud Shell:

옵션Option 예제/링크Example/Link
코드 블록의 오른쪽 위 모서리에서 사용 을 선택합니다.Select Try It in the upper-right corner of a code block. 사용해보기 를 선택하면 코드가 Cloud Shell에 자동으로 복사되지 않습니다.Selecting Try It doesn't automatically copy the code to Cloud Shell. Azure Cloud Shell에 대한 사용 예제
https://shell.azure.com으로 이동하거나 Cloud Shell 시작 버튼을 선택하여 브라우저에서 Cloud Shell을 엽니다.Go to https://shell.azure.com, or select the Launch Cloud Shell button to open Cloud Shell in your browser. 새 창에서 Cloud Shell 시작Launch Cloud Shell in a new window
Azure Portal의 오른쪽 위에 있는 메뉴 모음에서 Cloud Shell 단추를 선택합니다.Select the Cloud Shell button on the menu bar at the upper right in the Azure portal. Azure Portal의 Cloud Shell 단추

이 문서의 코드를 Azure Cloud Shell에서 실행하려면 다음을 수행합니다.To run the code in this article in Azure Cloud Shell:

  1. Cloud Shell을 시작합니다.Start Cloud Shell.

  2. 코드 블록의 복사 단추를 선택하여 코드를 복사합니다.Select the Copy button on a code block to copy the code.

  3. Windows 및 Linux에서 Ctrl+Shift+V 를 선택하거나 macOS에서 Cmd+Shift+V 를 선택하여 코드를 Cloud Shell 세션에 붙여넣습니다.Paste the code into the Cloud Shell session by selecting Ctrl+Shift+V on Windows and Linux or by selecting Cmd+Shift+V on macOS.

  4. Enter 를 선택하여 코드를 실행합니다.Select Enter to run the code.

참고

이 문서는 새 Azure PowerShell Az 모듈을 사용하도록 업데이트되었습니다.This article has been updated to use the new Azure PowerShell Az module. AzureRM 모듈은 적어도 2020년 12월까지 버그 수정을 수신할 예정이므로 계속 사용하셔도 됩니다.You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. 새 Az 모듈 및 AzureRM 호환성에 대한 자세한 내용은 새 Azure PowerShell Az 모듈 소개를 참조하세요.To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Az 모듈 설치 지침은 Azure PowerShell 설치를 참조하세요.For Az module installation instructions, see Install Azure PowerShell.

Azure에 연결Connect to Azure

Azure에 연결하려면 Connect-AzAccount를 실행합니다.To connect with Azure, run Connect-AzAccount.

리소스 그룹 만들기Create a resource group

Azure에서 관련 리소스를 리소스 그룹에 할당합니다.In Azure, you allocate related resources to a resource group. 기존 리소스 그룹을 사용하거나 리소스 그룹을 새로 만들 수 있습니다.You can either use an existing resource group or create a new one.

새 리소스 그룹을 만들려면 New-AzResourceGroup cmdlet을 사용합니다.To create a new resource group, use the New-AzResourceGroup cmdlet:

New-AzResourceGroup -Name myResourceGroupAG -Location eastus

네트워크 리소스 만들기Create network resources

Azure가 사용자가 만든 리소스 간에 통신하려면 가상 네트워크가 필요합니다.For Azure to communicate between the resources that you create, it needs a virtual network. 애플리케이션 게이트웨이 서브넷은 애플리케이션 게이트웨이만 포함할 수 있습니다.The application gateway subnet can contain only application gateways. 다른 리소스는 허용되지 않습니다.No other resources are allowed. Application Gateway에 대한 새 서브넷을 만들거나 기존 서브넷을 사용할 수 있습니다.You can either create a new subnet for Application Gateway or use an existing one. 이 예제에서는 두 개의 서브넷을 만듭니다. 하나는 애플리케이션 게이트웨이용이고, 다른 하나는 백 엔드 서버용입니다.In this example, you create two subnets in this example: one for the application gateway, and another for the backend servers. 사용 사례에 따라 Application Gateway의 프런트 엔드 IP를 공용 또는 프라이빗 IP로 구성할 수 있습니다.You can configure the Frontend IP of the Application Gateway to be Public or Private as per your use case. 이 예제에서는 공용 프런트 엔드 IP를 선택합니다.In this example, you'll choose a Public Frontend IP.

  1. New-AzVirtualNetworkSubnetConfig를 사용하여 서브넷 구성을 만듭니다.Create the subnet configurations using New-AzVirtualNetworkSubnetConfig.
  2. New-AzVirtualNetwork를 사용하여 서브넷 구성이 포함된 가상 네트워크를 만듭니다.Create the virtual network with the subnet configurations using New-AzVirtualNetwork.
  3. New-AzPublicIpAddress를 사용하여 공용 IP 주소를 만듭니다.Create the public IP address using New-AzPublicIpAddress.

참고

가상 네트워크 서비스 엔드포인트 정책은 현재 Application Gateway 서브넷에서 지원되지 않습니다.Virtual network service endpoint policies are currently not supported in an Application Gateway subnet.

$agSubnetConfig = New-AzVirtualNetworkSubnetConfig `
  -Name myAGSubnet `
  -AddressPrefix 10.0.1.0/24
$backendSubnetConfig = New-AzVirtualNetworkSubnetConfig `
  -Name myBackendSubnet `
  -AddressPrefix 10.0.2.0/24
New-AzVirtualNetwork `
  -ResourceGroupName myResourceGroupAG `
  -Location eastus `
  -Name myVNet `
  -AddressPrefix 10.0.0.0/16 `
  -Subnet $agSubnetConfig, $backendSubnetConfig
New-AzPublicIpAddress `
  -ResourceGroupName myResourceGroupAG `
  -Location eastus `
  -Name myAGPublicIPAddress `
  -AllocationMethod Static `
  -Sku Standard

애플리케이션 게이트웨이 만들기Create an application gateway

IP 구성 및 프론트 엔드 포트 만들기Create the IP configurations and frontend port

  1. New-AzApplicationGatewayIPConfiguration을 사용하여 이전에 만든 서브넷과 애플리케이션 게이트웨이를 연결하는 구성을 만듭니다.Use New-AzApplicationGatewayIPConfiguration to create the configuration that associates the subnet you created with the application gateway.
  2. New-AzApplicationGatewayFrontendIPConfig를 사용하여 이전에 만든 공용 IP 주소를 애플리케이션 게이트웨이에 할당하는 구성을 만듭니다.Use New-AzApplicationGatewayFrontendIPConfig to create the configuration that assigns the public IP address that you previously created to the application gateway.
  3. New-AzApplicationGatewayFrontendPort를 사용하여 애플리케이션 게이트웨이에 액세스할 포트 80을 할당합니다.Use New-AzApplicationGatewayFrontendPort to assign port 80 to access the application gateway.
$vnet   = Get-AzVirtualNetwork -ResourceGroupName myResourceGroupAG -Name myVNet
$subnet = Get-AzVirtualNetworkSubnetConfig -VirtualNetwork $vnet -Name myAGSubnet
$pip    = Get-AzPublicIPAddress -ResourceGroupName myResourceGroupAG -Name myAGPublicIPAddress 
$gipconfig = New-AzApplicationGatewayIPConfiguration `
  -Name myAGIPConfig `
  -Subnet $subnet
$fipconfig = New-AzApplicationGatewayFrontendIPConfig `
  -Name myAGFrontendIPConfig `
  -PublicIPAddress $pip
$frontendport = New-AzApplicationGatewayFrontendPort `
  -Name myFrontendPort `
  -Port 80

백 엔드 풀 만들기Create the backend pool

  1. New-AzApplicationGatewayBackendAddressPool을 사용하여 애플리케이션 게이트웨이에 대한 백 엔드 풀을 만듭니다.Use New-AzApplicationGatewayBackendAddressPool to create the backend pool for the application gateway. 지금은 백 엔드 풀이 비어 있습니다.The backend pool will be empty for now. 다음 섹션에서 백 엔드 서버 NIC를 만들 때 백 엔드 풀에 추가합니다.When you create the backend server NICs in the next section, you will add them to the backend pool.
  2. New-AzApplicationGatewayBackendHttpSetting을 사용하여 백 엔드 풀에 대한 설정을 구성합니다.Configure the settings for the backend pool with New-AzApplicationGatewayBackendHttpSetting.
$backendPool = New-AzApplicationGatewayBackendAddressPool `
  -Name myAGBackendPool
$poolSettings = New-AzApplicationGatewayBackendHttpSetting `
  -Name myPoolSettings `
  -Port 80 `
  -Protocol Http `
  -CookieBasedAffinity Enabled `
  -RequestTimeout 30

수신기를 만들고 규칙을 추가Create the listener and add a rule

애플리케이션 게이트웨이가 트래픽을 백 엔드 풀로 적절히 라우팅하려면 Azure에 수신기가 필요합니다.Azure requires a listener to enable the application gateway for routing traffic appropriately to the backend pool. 또한 수신기가 들어오는 트래픽에 어떤 백 엔드 풀을 사용해야 하는지 알 수 있도록 규칙이 필요합니다.Azure also requires a rule for the listener to know which backend pool to use for incoming traffic.

  1. 이전에 만든 프론트 엔드 구성 및 프론트 엔드 포트가 포함된 New-AzApplicationGatewayHttpListener를 사용하여 수신기를 만듭니다.Create a listener using New-AzApplicationGatewayHttpListener with the frontend configuration and frontend port that you previously created.
  2. New-AzApplicationGatewayRequestRoutingRule을 사용하여 rule1이라는 규칙을 만듭니다.Use New-AzApplicationGatewayRequestRoutingRule to create a rule named rule1.
$defaultlistener = New-AzApplicationGatewayHttpListener `
  -Name myAGListener `
  -Protocol Http `
  -FrontendIPConfiguration $fipconfig `
  -FrontendPort $frontendport
$frontendRule = New-AzApplicationGatewayRequestRoutingRule `
  -Name rule1 `
  -RuleType Basic `
  -HttpListener $defaultlistener `
  -BackendAddressPool $backendPool `
  -BackendHttpSettings $poolSettings

Application Gateway 만들기Create the application gateway

필요한 지원 리소스를 만들었으니, 이제 애플리케이션 게이트웨이를 만들겠습니다.Now that you've created the necessary supporting resources, create the application gateway:

  1. New-AzApplicationGatewaySku를 사용하여 애플리케이션 게이트웨이에 대한 매개 변수를 지정합니다.Use New-AzApplicationGatewaySku to specify parameters for the application gateway.
  2. New-AzApplicationGateway를 사용하여 애플리케이션 게이트웨이를 만듭니다.Use New-AzApplicationGateway to create the application gateway.
$sku = New-AzApplicationGatewaySku `
  -Name Standard_v2 `
  -Tier Standard_v2 `
  -Capacity 2
New-AzApplicationGateway `
  -Name myAppGateway `
  -ResourceGroupName myResourceGroupAG `
  -Location eastus `
  -BackendAddressPools $backendPool `
  -BackendHttpSettingsCollection $poolSettings `
  -FrontendIpConfigurations $fipconfig `
  -GatewayIpConfigurations $gipconfig `
  -FrontendPorts $frontendport `
  -HttpListeners $defaultlistener `
  -RequestRoutingRules $frontendRule `
  -Sku $sku

백 엔드 서버Backend servers

Application Gateway를 만들었으므로 웹 사이트를 호스트할 백 엔드 가상 머신을 만듭니다.Now that you have created the Application Gateway, create the backend virtual machines which will host the websites. 백 엔드는 NIC, 가상 머신 확장 집합, 공용 IP, 내부 IP, FQDN(정규화된 도메인 이름) 및 다중 테넌트 백 엔드(예: Azure App Service)로 구성될 수 있습니다.Backend can be composed of NICs, virtual machine scale sets, public IPs, internal IPs, fully qualified domain names (FQDN), and multi-tenant back-ends like Azure App Service. 이 예제에서는 애플리케이션 게이트웨이의 백 엔드 서버로 사용할 두 개의 가상 머신을 만듭니다.In this example, you create two virtual machines for Azure to use as backend servers for the application gateway. 또한 Azure가 애플리케이션 게이트웨이를 성공적으로 만들었는지 확인할 수 있도록 가상 머신에 IIS를 설치합니다.You also install IIS on the virtual machines to verify that Azure successfully created the application gateway.

두 개의 가상 머신 만들기Create two virtual machines

  1. Get-AzApplicationGatewayBackendAddressPool을 사용하여 최근에 만든 Application Gateway 백 엔드 풀 구성을 가져옵니다.Get the recently created Application Gateway backend pool configuration with Get-AzApplicationGatewayBackendAddressPool.
  2. New-AzNetworkInterface를 사용하여 네트워크 인터페이스를 만듭니다.Create a network interface with New-AzNetworkInterface.
  3. New-AzVMConfig를 사용하여 가상 머신 구성을 만듭니다.Create a virtual machine configuration with New-AzVMConfig.
  4. New-AzVM을 사용하여 가상 머신을 만듭니다.Create the virtual machine with New-AzVM.

가상 머신을 만드는 다음 코드 샘플을 실행하면 Azure가 자격 증명을 요청합니다.When you run the following code sample to create the virtual machines, Azure prompts you for credentials. 사용자 이름으로 azureuser를 입력하고, 암호를 입력합니다.Enter azureuser for the user name and a password:

$appgw = Get-AzApplicationGateway -ResourceGroupName myResourceGroupAG -Name myAppGateway
$backendPool = Get-AzApplicationGatewayBackendAddressPool -Name myAGBackendPool -ApplicationGateway $appgw
$vnet   = Get-AzVirtualNetwork -ResourceGroupName myResourceGroupAG -Name myVNet
$subnet = Get-AzVirtualNetworkSubnetConfig -VirtualNetwork $vnet -Name myBackendSubnet
$cred = Get-Credential
for ($i=1; $i -le 2; $i++)
{
  $nic = New-AzNetworkInterface `
    -Name myNic$i `
    -ResourceGroupName myResourceGroupAG `
    -Location EastUS `
    -Subnet $subnet `
    -ApplicationGatewayBackendAddressPool $backendpool
  $vm = New-AzVMConfig `
    -VMName myVM$i `
    -VMSize Standard_DS2_v2
  Set-AzVMOperatingSystem `
    -VM $vm `
    -Windows `
    -ComputerName myVM$i `
    -Credential $cred
  Set-AzVMSourceImage `
    -VM $vm `
    -PublisherName MicrosoftWindowsServer `
    -Offer WindowsServer `
    -Skus 2016-Datacenter `
    -Version latest
  Add-AzVMNetworkInterface `
    -VM $vm `
    -Id $nic.Id
  Set-AzVMBootDiagnostic `
    -VM $vm `
    -Disable
  New-AzVM -ResourceGroupName myResourceGroupAG -Location EastUS -VM $vm
  Set-AzVMExtension `
    -ResourceGroupName myResourceGroupAG `
    -ExtensionName IIS `
    -VMName myVM$i `
    -Publisher Microsoft.Compute `
    -ExtensionType CustomScriptExtension `
    -TypeHandlerVersion 1.4 `
    -SettingString '{"commandToExecute":"powershell Add-WindowsFeature Web-Server; powershell Add-Content -Path \"C:\\inetpub\\wwwroot\\Default.htm\" -Value $($env:computername)"}' `
    -Location EastUS
}

애플리케이션 게이트웨이 테스트Test the application gateway

애플리케이션 게이트웨이를 만들려면 반드시 IIS가 필요한 것은 아니지만, 이 빠른 시작에서는 Azure가 애플리케이션 게이트웨이를 성공적으로 만들었는지 확인하기 위해 설치했습니다.Although IIS isn't required to create the application gateway, you installed it in this quickstart to verify whether Azure successfully created the application gateway. IIS를 사용하여 애플리케이션 게이트웨이 테스트:Use IIS to test the application gateway:

  1. Get-AzPublicIPAddress를 사용하여 애플리케이션 게이트웨이의 공용 IP 주소를 가져옵니다.Run Get-AzPublicIPAddress to get the public IP address of the application gateway.
  2. 공용 IP 주소를 복사하여 브라우저의 주소 표시줄에 붙여넣습니다.Copy and paste the public IP address into the address bar of your browser. 브라우저를 새로 고치면 가상 머신의 이름이 표시됩니다.When you refresh the browser, you should see the name of the virtual machine. 응답이 유효하면 애플리케이션 게이트웨이가 성공적으로 만들어졌으며 백 엔드에 성공적으로 연결할 수 있다는 의미입니다.A valid response verifies that the application gateway was successfully created and it can successfully connect with the backend.
Get-AzPublicIPAddress -ResourceGroupName myResourceGroupAG -Name myAGPublicIPAddress

애플리케이션 게이트웨이 테스트

리소스 정리Clean up resources

애플리케이션 게이트웨이로 만든 리소스가 더 이상 필요 없으면 리소스 그룹을 삭제합니다.When you no longer need the resources that you created with the application gateway, delete the resource group. 리소스 그룹을 삭제하면 애플리케이션 게이트웨이 및 모든 관련 리소스도 함께 삭제됩니다.When you delete the resource group, you also delete the application gateway and all its related resources.

리소스 그룹을 삭제하려면 Remove-AzResourceGroup cmdlet을 호출합니다.To delete the resource group, call the Remove-AzResourceGroup cmdlet:

Remove-AzResourceGroup -Name myResourceGroupAG

다음 단계Next steps