PowerShell을 사용하여 다중 NIC이 있는 VM(클래식) 만들기
Azure에서 VM(가상 머신)을 만들고 각 VM에 여러 NIC(네트워크 인터페이스)를 연결할 수 있습니다. 여러 NIC를 사용하면 NIC 간에 트래픽 유형을 분리할 수 있습니다. 예를 들어 하나의 NIC는 인터넷과 통신하는 동안 다른 NIC는 인터넷에 연결되지 않은 내부 리소스와만 통신할 수 있습니다. 여러 NIC 간에 네트워크 트래픽을 분리하는 기능은 애플리케이션 전달 및 WAN 최적화 솔루션과 같은 많은 네트워크 가상 어플라이언스에 필요합니다.
중요
Azure에는 리소스를 만들고 사용하기 위한 Resource Manager 및 클래식이라는 두 가지 배포 모델이 있습니다. 이 문서에서는 클래식 배포 모델 사용에 대해 설명합니다. 새로운 배포는 대부분 리소스 관리자 모델을 사용하는 것이 좋습니다. Resource Manager 배포 모델을 사용하여 이러한 단계를 수행하는 방법을 알아봅니다.
시나리오
이 문서에서는 특정 시나리오에서 VM에 다중 NIC를 사용하는 배포를 살펴봅니다. 이 시나리오에는 Azure에 호스트되는 2계층 IaaS 워크로드가 있습니다. 각 계층은 가상 네트워크(VNet)의 자체 서브넷에 배포됩니다. 프런트 엔드 계층은 고가용성을 위해 부하 분산 장치 집합으로 그룹화되어 있는 몇 개의 웹 서버로 구성됩니다. 백 엔드 계층은 몇 개의 데이터베이스 서버로 구성됩니다. 데이터베이스 서버는 각각 2개의 NIC(데이터베이스 액세스를 위한 NIC와 관리를 위한 NIC)와 배포됩니다. 시나리오에는 배포에서 각 서브넷 및 NIC에 허용되는 트래픽을 제어하기 위한 NSG(네트워크 보안 그룹)도 포함됩니다. 다음 그림은 이 시나리오의 기본 아키텍처를 보여줍니다.
다음 단계에서는 WEB 서버에 IaaSStory라는 리소스 그룹을, DB 서버에 IaaSStory-BackEnd라는 리소스 그룹을 사용합니다.
필수 구성 요소
DB 서버를 만들려면 먼저 이 시나리오에 필요한 모든 리소스로 IaaSStory 리소스 그룹을 만들어야 합니다. 이러한 리소스를 만들려면 다음 단계를 완료합니다. 가상 네트워크 만들기 문서에 나오는 단계를 따라 VNet을 만듭니다.
필수 조건: Azure PowerShell 모듈 설치
이 문서의 단계를 수행하려면 Azure PowerShell 모듈을 설치하고 구성해야 합니다. 모든 지침을 완료해야 합니다. 설치가 끝나면 Azure에 로그인하고 구독을 선택하십시오.
참고
이 단계를 완료하려면 Azure 계정이 있어야 합니다. Azure 계정이 없으면 평가판에 등록할 수 있습니다.
백 엔드 VM 만들기
백 엔드 VM은 만드는 리소스에 따라 다음과 같이 다릅니다.
- 백 엔드 서브넷. 트래픽을 격리하기 위해서 데이터베이스 서버는 별도의 서브넷에 속하게 됩니다. 아래 스크립트는 이 서브넷이 WTestVnet이라는 vnet에 존재한다고 추정합니다.
- 데이터 디스크용 Storage 계정. 성능 향상을 위해 데이터베이스 서버의 데이터 디스크는 SSD(반도체 드라이브) 기술을 사용하며, 이 기술에는 Premium Storage 계정이 필요합니다. 배포할 Azure 위치에서 Premium Storage가 지원되는지 확인하세요.
- 가용성 집합. 모든 데이터베이스 서버가 단일 가용성 집합에 추가되어, 유지 관리 도중에 하나 이상의 VM이 실행 중이도록 합니다.
1단계 - 스크립트 시작
사용되는 전체 PowerShell 스크립트를 여기에서 다운로드할 수 있습니다. 다음 단계에 따라 스크립트를 사용자 환경에서 작동하도록 변경합니다.
위의 필수 조건에서 배포한 기존 리소스 그룹을 기반으로 다음 변수 값을 변경합니다.
$location = "West US" $vnetName = "WTestVNet" $backendSubnetName = "BackEnd"
백 엔드 배포에 사용하려는 값을 기반으로 다음 변수 값을 변경합니다.
$backendCSName = "IaaSStory-Backend" $prmStorageAccountName = "iaasstoryprmstorage" $avSetName = "ASDB" $vmSize = "Standard_DS3" $diskSize = 127 $vmNamePrefix = "DB" $dataDiskSuffix = "datadisk" $ipAddressPrefix = "192.168.2." $numberOfVMs = 2
2단계 - VM에 필요한 리소스 만들기
새로운 클라우드 서비스, 모든 VM에 대한 데이터 디스크의 스토리지 계정을 만들어야 합니다. VM에 대한 로컬 관리자 계정 및 이미지도 지정해야 합니다. 이러한 리소스를 만들려면 다음 단계를 완료합니다.
새 클라우드 서비스 만들기
New-AzureService -ServiceName $backendCSName -Location $location
새 Premium Storage 계정 만들기
New-AzureStorageAccount -StorageAccountName $prmStorageAccountName ` -Location $location -Type Premium_LRS
앞에서 만든 스토리지 계정을 구독에 대한 현재 스토리지 계정으로 설정합니다.
$subscription = Get-AzureSubscription | where {$_.IsCurrent -eq $true} Set-AzureSubscription -SubscriptionName $subscription.SubscriptionName ` -CurrentStorageAccountName $prmStorageAccountName
VM에 대한 이미지를 선택합니다.
$image = Get-AzureVMImage ` | where{$_.ImageFamily -eq "SQL Server 2014 RTM Web on Windows Server 2012 R2"} ` | sort PublishedDate -Descending ` | select -ExpandProperty ImageName -First 1
로컬 관리자 계정 자격 증명을 설정합니다.
$cred = Get-Credential -Message "Enter username and password for local admin account"
3단계: VM 만들기
루프를 사용하여 VM을 원하는 개수만큼 만들고 루프 내에서 필요한 NIC와 VM을 만듭니다. NIC와 VM을 만들려면 다음 단계를 실행합니다.
$numberOfVMs
변수 값을 기반으로 필요한 횟수만큼 VM 1개와 NIC 2개를 만드는 명령을 반복하는for
루프를 시작합니다.for ($suffixNumber = 1; $suffixNumber -le $numberOfVMs; $suffixNumber++){
VM의 이미지, 크기, 가용성 집합을 지정하는
VMConfig
개체를 만듭니다.$vmName = $vmNamePrefix + $suffixNumber $vmConfig = New-AzureVMConfig -Name $vmName ` -ImageName $image ` -InstanceSize $vmSize ` -AvailabilitySetName $avSetName
VM을 Windows VM으로 프로비전합니다.
Add-AzureProvisioningConfig -VM $vmConfig -Windows ` -AdminUsername $cred.UserName ` -Password $cred.GetNetworkCredential().Password
기본 NIC를 설정하여 고정 IP 주소를 할당합니다.
Set-AzureSubnet -SubnetNames $backendSubnetName -VM $vmConfig Set-AzureStaticVNetIP -IPAddress ($ipAddressPrefix+$suffixNumber+3) -VM $vmConfig
각 VM에 두 번째 NIC를 추가합니다.
Add-AzureNetworkInterfaceConfig -Name ("RemoteAccessNIC"+$suffixNumber) ` -SubnetName $backendSubnetName ` -StaticVNetIPAddress ($ipAddressPrefix+(53+$suffixNumber)) ` -VM $vmConfig
각 VM에 데이터 디스크를 만듭니다.
$dataDisk1Name = $vmName + "-" + $dataDiskSuffix + "-1" Add-AzureDataDisk -CreateNew -VM $vmConfig ` -DiskSizeInGB $diskSize ` -DiskLabel $dataDisk1Name ` -LUN 0 $dataDisk2Name = $vmName + "-" + $dataDiskSuffix + "-2" Add-AzureDataDisk -CreateNew -VM $vmConfig ` -DiskSizeInGB $diskSize ` -DiskLabel $dataDisk2Name ` -LUN 1
각 VM을 만들고 루프를 끝냅니다.
New-AzureVM -VM $vmConfig ` -ServiceName $backendCSName ` -Location $location ` -VNetName $vnetName }
4단계 - 스크립트 실행
이제 스크립트를 다운로드하여 요구에 맞게 변경했으므로 이 스크립트를 실행하여 여러 NIC를 포함하는 백 엔드 데이터베이스 VM을 만듭니다.
스크립트를 저장하여 PowerShell 명령 프롬프트 또는 PowerShell ISE에서 실행합니다. 아래와 같이 초기 출력에 표시됩니다.
OperationDescription OperationId OperationStatus New-AzureService xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Succeeded New-AzureStorageAccount xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Succeeded WARNING: No deployment found in service: 'IaaSStory-Backend'.
자격 증명 프롬프트에 필요한 정보를 입력하고 확인을 클릭합니다. 다음과 같은 출력이 반환됩니다.
New-AzureVM xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Succeeded New-AzureVM xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Succeeded
5단계 - VM의 운영 체제 내에서 라우팅 구성
Azure DHCP는 가상 머신에 연결된 첫 번째(기본) 네트워크 인터페이스에 기본 게이트웨이를 할당합니다. 가상 머신에 연결된 추가(보조) 네트워크 인터페이스에는 기본 게이트웨이를 할당하지 않습니다. 따라서 보조 네트워크 인터페이스가 있는 서브넷 외부의 리소스와는 기본적으로 통신할 수 없습니다. 그러나 보조 네트워크 인터페이스는 서브넷 외부의 리소스와 통신할 수 있습니다. 보조 네트워크 인터페이스에 대한 라우팅을 구성하려면 다음 문서를 참조하세요.