빠른 시작: Azure PowerShell을 사용한 Azure Application Gateway를 통해 웹 트래픽 보내기
이 빠른 시작에서는 Azure PowerShell을 사용하여 애플리케이션 게이트웨이를 만듭니다. 그런 다음, 테스트하여 제대로 작동하는지 확인합니다.
애플리케이션 게이트웨이는 애플리케이션 웹 트래픽을 백 엔드 풀의 특정 리소스로 보냅니다. 수신기를 포트에 할당하고, 규칙을 만들고, 백 엔드 풀에 리소스를 추가합니다. 간단히 나타내기 위해 이 문서에서는 퍼블릭 프런트 엔드 IP 주소 1개, 애플리케이션 게이트웨이에 단일 사이트를 호스트하는 기본 수신기 1개, 기본 요청 라우팅 규칙 1개 및 백 엔드 풀의 가상 머신 2개를 이용한 간단한 설정을 사용합니다.
Azure CLI 또는 Azure Portal을 사용하여 이 빠른 시작을 완료할 수도 있습니다.
참고 항목
Application Gateway 프런트 엔드는 이제 이중 스택 IP 주소(미리 보기)를 지원합니다. 이제 최대 4개의 프런트 엔드 IP 주소, 즉 2개의 IPv4 주소(퍼블릭 및 프라이빗)와 2개의 IPv6 주소(퍼블릭 및 프라이빗)을 만들 수 있습니다.
필수 조건
- 활성 구독이 있는 Azure 계정. 체험 계정을 만듭니다.
- Azure PowerShell 버전 1.0.0 이상(로컬로 Azure PowerShell을 실행하는 경우)
Azure Cloud Shell
Azure는 브라우저를 통해 사용할 수 있는 대화형 셸 환경인 Azure Cloud Shell을 호스트합니다. Cloud Shell에서 Bash 또는 PowerShell을 사용하여 Azure 서비스 작업을 수행할 수 있습니다. 로컬 환경에 아무 것도 설치할 필요 없이 Azure Cloud Shell의 미리 설치된 명령을 사용하여 이 문서의 코드를 실행할 수 있습니다.
Azure Cloud Shell을 시작하려면 다음을 수행합니다.
옵션 | 예제/링크 |
---|---|
코드 또는 명령 블록의 오른쪽 상단에서 시도를 선택합니다. 시도를 선택해도 코드 또는 명령이 Cloud Shell에 자동으로 복사되지 않습니다. | |
https://shell.azure.com으로 이동하거나 Cloud Shell 시작 단추를 선택하여 브라우저에서 Cloud Shell을 엽니다. | |
Azure Portal의 오른쪽 위에 있는 메뉴 모음에서 Cloud Shell 단추를 선택합니다. |
Azure Cloud Shell을 사용하려면:
Cloud Shell을 시작합니다.
코드 블록(또는 명령 블록)에서 복사 단추를 선택하여 코드 또는 명령을 복사합니다.
Windows 및 Linux에서 Ctrl+Shift+V를 선택하거나 macOS에서 Cmd+Shift+V를 선택하여 코드 또는 명령을 Cloud Shell 세션에 붙여넣습니다.
Enter를 선택하여 코드 또는 명령을 실행합니다.
참고 항목
Azure Az PowerShell 모듈을 사용하여 Azure와 상호 작용하는 것이 좋습니다. 시작하려면 Azure PowerShell 설치를 참조하세요. Az PowerShell 모듈로 마이그레이션하는 방법에 대한 자세한 내용은 Azure PowerShell을 AzureRM에서 Azure로 마이그레이션을 참조하세요.
Azure에 연결
Azure에 연결하려면 Connect-AzAccount
를 실행합니다.
리소스 그룹 만들기
Azure에서 관련 리소스를 리소스 그룹에 할당합니다. 기존 리소스 그룹을 사용하거나 리소스 그룹을 새로 만들 수 있습니다.
새 리소스 그룹을 만들려면 New-AzResourceGroup
cmdlet을 사용합니다.
New-AzResourceGroup -Name myResourceGroupAG -Location eastus
네트워크 리소스 만들기
Azure가 사용자가 만든 리소스 간에 통신하려면 가상 네트워크가 필요합니다. 애플리케이션 게이트웨이 서브넷은 애플리케이션 게이트웨이만 포함할 수 있습니다. 다른 리소스는 허용되지 않습니다. Application Gateway에 대한 새 서브넷을 만들거나 기존 서브넷을 사용할 수 있습니다. 이 예제에서는 두 개의 서브넷을 만듭니다. 하나는 애플리케이션 게이트웨이용이고, 다른 하나는 백 엔드 서버용입니다. 사용 사례에 따라 Application Gateway의 프런트 엔드 IP 주소를 퍼블릭 또는 프라이빗으로 구성할 수 있습니다. 이 예제에서는 공용 프런트 엔드 IP 주소를 선택합니다.
New-AzVirtualNetworkSubnetConfig
를 사용하여 서브넷 구성을 만듭니다.New-AzVirtualNetwork
를 사용하여 서브넷 구성이 포함된 가상 네트워크를 만듭니다.New-AzPublicIpAddress
를 사용하여 공용 IP 주소를 만듭니다.
참고 항목
가상 네트워크 서비스 엔드포인트 정책은 현재 Application Gateway 서브넷에서 지원되지 않습니다.
$agSubnetConfig = New-AzVirtualNetworkSubnetConfig `
-Name myAGSubnet `
-AddressPrefix 10.21.0.0/24
$backendSubnetConfig = New-AzVirtualNetworkSubnetConfig `
-Name myBackendSubnet `
-AddressPrefix 10.21.1.0/24
New-AzVirtualNetwork `
-ResourceGroupName myResourceGroupAG `
-Location eastus `
-Name myVNet `
-AddressPrefix 10.21.0.0/16 `
-Subnet $agSubnetConfig, $backendSubnetConfig
New-AzPublicIpAddress `
-ResourceGroupName myResourceGroupAG `
-Location eastus `
-Name myAGPublicIPAddress `
-AllocationMethod Static `
-Sku Standard
애플리케이션 게이트웨이 만들기
이 예에서는 Standard v2 SKU가 사용되었습니다.
IP 구성 및 프론트 엔드 포트 만들기
New-AzApplicationGatewayIPConfiguration
을 사용하여 이전에 만든 서브넷과 애플리케이션 게이트웨이를 연결하는 구성을 만듭니다.New-AzApplicationGatewayFrontendIPConfig
를 사용하여 애플리케이션 게이트웨이에 대해 이전에 만든 공용 IP 주소를 할당하는 구성을 만듭니다.New-AzApplicationGatewayFrontendPort
를 사용하여 애플리케이션 게이트웨이에 액세스할 포트 80을 할당합니다.
$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
참고 항목
Application Gateway 프런트 엔드는 이제 이중 스택 IP 주소(공개 미리 보기)를 지원합니다. 이제 최대 4개의 프런트 엔드 IP 주소, 즉 2개의 IPv4 주소(퍼블릭 및 프라이빗)와 2개의 IPv6 주소(퍼블릭 및 프라이빗)을 만들 수 있습니다.
백 엔드 풀 만들기
New-AzApplicationGatewayBackendAddressPool
을 사용하여 애플리케이션 게이트웨이에 대한 백 엔드 풀을 만듭니다. 지금은 백 엔드 풀이 비어 있습니다. 다음 섹션에서 백 엔드 서버 NIC를 만들 때 백 엔드 풀에 추가합니다.New-AzApplicationGatewayBackendHttpSetting
을 사용하여 백 엔드 풀에 대한 설정을 구성합니다.
$backendPool = New-AzApplicationGatewayBackendAddressPool `
-Name myAGBackendPool
$poolSettings = New-AzApplicationGatewayBackendHttpSetting `
-Name myPoolSettings `
-Port 80 `
-Protocol Http `
-CookieBasedAffinity Enabled `
-RequestTimeout 30
수신기를 만들고 규칙을 추가
애플리케이션 게이트웨이가 트래픽을 백 엔드 풀로 적절히 라우팅하려면 Azure에 수신기가 필요합니다. 또한 수신기가 들어오는 트래픽에 어떤 백 엔드 풀을 사용해야 하는지 알 수 있도록 규칙이 필요합니다.
- 이전에 만든 프론트 엔드 구성 및 프론트 엔드 포트가 포함된
New-AzApplicationGatewayHttpListener
를 사용하여 수신기를 만듭니다. New-AzApplicationGatewayRequestRoutingRule
을 사용하여 rule1이라는 규칙을 만듭니다.
$defaultlistener = New-AzApplicationGatewayHttpListener `
-Name myAGListener `
-Protocol Http `
-FrontendIPConfiguration $fipconfig `
-FrontendPort $frontendport
$frontendRule = New-AzApplicationGatewayRequestRoutingRule `
-Name rule1 `
-RuleType Basic `
-Priority 100 `
-HttpListener $defaultlistener `
-BackendAddressPool $backendPool `
-BackendHttpSettings $poolSettings
Application Gateway 만들기
필요한 지원 리소스를 만들었으니, 이제 애플리케이션 게이트웨이를 만들겠습니다.
New-AzApplicationGatewaySku
를 사용하여 애플리케이션 게이트웨이에 대한 매개 변수를 지정합니다.New-AzApplicationGateway
를 사용하여 애플리케이션 게이트웨이를 만듭니다.
$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
팁
Name
및 Tier
매개 변수의 값을 수정하여 다른 SKU를 사용할 수 있습니다. 예: Basic
백 엔드 서버
Application Gateway를 만들었으므로 웹 사이트를 호스트할 백 엔드 가상 머신을 만듭니다. 백 엔드는 NIC, 가상 머신 확장 집합, 공용 IP 주소, 내부 IP 주소, FQDN(정규화된 도메인 이름) 및 다중 테넌트 백 엔드(예: Azure App Service)로 구성될 수 있습니다.
이 예제에서는 애플리케이션 게이트웨이의 백 엔드 서버로 사용되는 두 개의 가상 머신을 만듭니다. 또한 Azure가 애플리케이션 게이트웨이를 성공적으로 만들었는지 확인할 수 있도록 가상 머신에 IIS를 설치합니다.
두 개의 가상 머신 만들기
Get-AzApplicationGatewayBackendAddressPool
을 사용하여 최근에 만든 Application Gateway 백 엔드 풀 구성을 가져옵니다.New-AzNetworkInterface
를 사용하여 네트워크 인터페이스를 만듭니다.New-AzVMConfig
를 사용하여 가상 머신 구성을 만듭니다.New-AzVM
을 사용하여 가상 머신을 만듭니다.
가상 머신을 만드는 다음 코드 샘플을 실행하면 Azure가 자격 증명을 요청합니다. 사용자 이름 및 암호를 입력합니다.
$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
}
애플리케이션 게이트웨이 테스트
애플리케이션 게이트웨이를 만들려면 반드시 IIS가 필요한 것은 아니지만, 이 빠른 시작에서는 Azure가 애플리케이션 게이트웨이를 성공적으로 만들었는지 확인하기 위해 설치했습니다.
IIS를 사용하여 애플리케이션 게이트웨이 테스트:
Get-AzPublicIPAddress
를 사용하여 애플리케이션 게이트웨이의 공용 IP 주소를 가져옵니다.- 공용 IP 주소를 복사하여 브라우저의 주소 표시줄에 붙여넣습니다. 브라우저를 새로 고치면 가상 머신의 이름이 표시됩니다. 응답이 유효하면 애플리케이션 게이트웨이가 성공적으로 만들어졌으며 백 엔드에 성공적으로 연결할 수 있다는 의미입니다.
Get-AzPublicIPAddress -ResourceGroupName myResourceGroupAG -Name myAGPublicIPAddress
리소스 정리
애플리케이션 게이트웨이로 만든 리소스가 더 이상 필요 없으면 리소스 그룹을 삭제합니다. 리소스 그룹을 삭제하면 애플리케이션 게이트웨이 및 모든 관련 리소스도 함께 삭제됩니다.
리소스 그룹을 삭제하려면 Remove-AzResourceGroup
cmdlet을 호출합니다.
Remove-AzResourceGroup -Name myResourceGroupAG