자습서: Azure PowerShell을 사용하여 가상 머신 확장 집합 만들기 및 관리

Virtual Machine Scale Set를 사용하면 가상 머신 세트를 배포하고 관리할 수 있습니다. Virtual Machine Scale Set의 수명 주기 동안 하나 이상의 관리 작업을 실행해야 합니다. 이 자습서에서는 다음을 하는 방법을 알아볼 수 있습니다.

  • 리소스 그룹 만들기
  • 가상 머신 크기 집합 만들기
  • 확장 및 축소
  • VM 인스턴스 중지, 시작 및 다시 시작

Azure 구독이 없는 경우 시작하기 전에 체험 계정을 만듭니다.

Azure Cloud Shell

Azure는 브라우저를 통해 사용할 수 있는 대화형 셸 환경인 Azure Cloud Shell을 호스트합니다. Cloud Shell에서 Bash 또는 PowerShell을 사용하여 Azure 서비스 작업을 수행할 수 있습니다. 로컬 환경에 아무 것도 설치할 필요 없이 Azure Cloud Shell의 미리 설치된 명령을 사용하여 이 문서의 코드를 실행할 수 있습니다.

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

옵션 예제/링크
코드 또는 명령 블록의 오른쪽 상단에서 시도를 선택합니다. 시도를 선택해도 코드 또는 명령이 Cloud Shell에 자동으로 복사되지 않습니다. Screenshot that shows an example of Try It for Azure Cloud Shell.
https://shell.azure.com으로 이동하거나 Cloud Shell 시작 단추를 선택하여 브라우저에서 Cloud Shell을 엽니다. Button to launch Azure Cloud Shell.
Azure Portal의 오른쪽 위에 있는 메뉴 모음에서 Cloud Shell 단추를 선택합니다. Screenshot that shows the Cloud Shell button in the Azure portal

Azure Cloud Shell을 사용하려면:

  1. Cloud Shell을 시작합니다.

  2. 코드 블록(또는 명령 블록)에서 복사 단추를 선택하여 코드 또는 명령을 복사합니다.

  3. Windows 및 Linux에서 Ctrl+Shift+V를 선택하거나 macOS에서 Cmd+Shift+V를 선택하여 코드 또는 명령을 Cloud Shell 세션에 붙여넣습니다.

  4. Enter를 선택하여 코드 또는 명령을 실행합니다.

리소스 그룹 만들기

Azure 리소스 그룹은 Azure 리소스가 배포 및 관리되는 논리적 컨테이너입니다. 가상 머신 확장 집합보다 먼저 리소스 그룹을 만들어야 합니다. New-AzResourceGroup 명령을 사용하여 리소스 그룹을 만듭니다. 이 예제에서는 EastUS 지역에 myResourceGroup이라는 리소스 그룹을 만듭니다.

New-AzResourceGroup -ResourceGroupName "myResourceGroup" -Location "EastUS"

리소스 그룹 이름은 이 자습서에서 확장 집합 만들거나 수정할 때 지정됩니다.

가상 머신 크기 집합 만들기

먼저 Get-Credential을 사용하여 VM 인스턴스에 대한 관리자 사용자 이름과 암호를 설정합니다.

$cred = Get-Credential

이제 New-AzVmss를 사용하여 가상 머신 확장 집합을 만듭니다. 트래픽을 개별 VM 인스턴스로 배포하기 위해 부하 분산 장치도 생성됩니다. 부하 분산 장치에는 TCP 포트 80에서 트래픽을 분산할 뿐만 아니라 TCP 포트 3389의 원격 데스크톱 트래픽 및 TCP 포트 5985의 PowerShell 원격을 허용하는 규칙이 포함되어 있습니다.

Important

2023년 11월부터 PowerShell 및 Azure CLI를 사용하여 만들어진 VM Scale Sets는 오케스트레이션 모드가 지정되지 않은 경우 기본적으로 유연한 오케스트레이션 모드로 설정됩니다. 이 변경 내용과 수행해야 할 작업에 대한 자세한 내용은 Breaking Change for VMSS PowerShell/CLI Customers - Microsoft Community Hub(VMSS PowerShell/CLI 고객을 위한 호환성이 손상되는 변경 - Microsoft 커뮤니티 허브)를 참조하세요.

New-AzVmss `
  -ResourceGroupName "myResourceGroup" `
  -VMScaleSetName "myScaleSet" `
  -OrchestrationMode "Flexible" `
  -Location "EastUS" `
  -Credential $cred

확장 집합 리소스와 VM 인스턴스를 모두 만들고 구성하는 데 몇 분 정도 걸립니다. 트래픽을 개별 VM 인스턴스로 배포하기 위해 부하 분산 장치도 생성됩니다.

확장 집합의 VM 인스턴스 보기

확장 집합의 VM 인스턴스 목록을 보려면 다음과 같이 Get-AzVM을 사용합니다.

Get-AzVM -ResourceGroupName "myResourceGroup"

다음 예제 출력에서는 확장 집합의 두 VM 인스턴스를 보여 줍니다.

ResourceGroupName                Name Location          VmSize  OsType      ProvisioningState 
-----------------                ---- --------          ------  ------       ----------------- 
myResourceGroup   myScaleSet_instance1   eastus Standard_DS1_v2 Windows         Succeeded     
myResourceGroup   myScaleSet_instance2   eastus Standard_DS1_v2 Windows         Succeeded     

특정 VM 인스턴스에 대한 추가 정보를 보려면 Get-AzVM을 사용하고 VM 이름을 지정합니다.

Get-AzVM -ResourceGroupName "myResourceGroup" -name "myScaleSet_instance1" 
ResourceGroupName      : myresourcegroup
Id                     : /subscriptions/resourceGroups/myresourcegroup/providers/Microsoft.Compute/virtualMachines/myScaleSet_instance1
VmId                   : d27b5fde-d469-4087-b08f-87d0bd8df786
Name                   : myScaleSet_instance1
Type                   : Microsoft.Compute/virtualMachines
Location               : eastus
Tags                   : {}
HardwareProfile        : {VmSize}
NetworkProfile         : {NetworkInterfaces}
OSProfile              : {ComputerName, AdminUsername, WindowsConfiguration, Secrets, AllowExtensionOperations, RequireGuestProvisionSignal}
ProvisioningState      : Succeeded
StorageProfile         : {ImageReference, OsDisk, DataDisks}
VirtualMachineScaleSet : {Id}
TimeCreated            : 11/16/2022 11:02:02 PM

특정 VM 인스턴스 크기로 확장 집합 만들기

자습서의 시작 부분에서 확장 집합을 만들 때 VM 인스턴스에 대해 Standard_D1_v2의 기본 VM SKU가 제공되었습니다. -VMSize 매개 변수를 사용하여 다른 VM 인스턴스 크기를 지정하여 Standard_F1의 VM 인스턴스 크기를 지정할 수 있습니다.

New-AzVmss `
  -ResourceGroupName "myResourceGroup" `
  -VMScaleSetName "myScaleSet" `
  -OrchestrationMode "Flexible" `
  -VMSize "Standard_F1" `
  -Location "EastUS" `
  -Credential $cred

확장 집합의 용량 변경

확장 집합을 만들었을 때 두 개의 VM 인스턴스가 기본적으로 배포되었습니다. 확장 집합의 VM 인스턴스 수를 늘리거나 줄이려면 용량을 수동으로 변경할 수 있습니다. 확장 집합은 필요한 수의 VM 인스턴스를 만들거나 제거한 다음, 부하 분산 장치에서 트래픽을 분산하도록 구성합니다.

먼저 Get-AzVmss를 포함하는 확장 집합 개체를 만들고 sku.capacity에 새 값을 지정합니다. 용량 변경 내용을 적용하려면 Update-AzVmss를 사용합니다. 다음 예제에서는 확장 집합의 VM 인스턴스 수를 3으로 설정합니다.

# Get current scale set
$vmss = Get-AzVmss -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet"

# Set and update the capacity of your scale set
$vmss.sku.capacity = 3
Update-AzVmss -ResourceGroupName "myResourceGroup" -Name "myScaleSet" -VirtualMachineScaleSet $vmss 

확장 집합의 용량을 업데이트하는 데 몇 분 정도가 걸립니다. 현재 확장 집합의 인스턴스 수를 보려면 Get-Az를 사용합니다.

Get-AzVm -ResourceGroupName "myResourceGroup" 

다음 예제 출력에서는 현재 확장 집합의 용량이 3임을 보여 줍니다.

ResourceGroupName                Name Location          VmSize  OsType    ProvisioningState 
-----------------                ---- --------          ------  ------    ----------------- 
myResourceGroup   myScaleSet_instance1   eastus Standard_DS1_v2 Windows       Succeeded     
myResourceGroup   myScaleSet_instance2   eastus Standard_DS1_v2 Windows       Succeeded     
myResourceGroup   myScaleSet_instance3   eastus Standard_DS1_v2 Windows       Succeeded   

확장 집합에서 VM 인스턴스 중지 및 할당 취소

개별 VM 인스턴스를 중지하려면 Stop-AzVm을 사용하고 인스턴스 이름을 지정합니다.

Stop-AzVM -ResourceGroupName "myResourceGroup" -name "myScaleSet_instance1"

기본적으로 중지된 VM은 할당이 취소되고 컴퓨팅 요금이 부과되지 않습니다. VM이 중지될 때 프로비전된 상태로 유지하려는 경우 -StayProvisioned 매개 변수를 위의 명령에 추가합니다. 프로비전된 상태로 유지하는 중지된 VM은 기본 컴퓨팅 요금을 부과합니다.

확장 집합에서 VM 인스턴스 시작

확장 집합에서 모든 VM 인스턴스를 시작하려면 Start-AzVmss를 사용합니다.

Start-AzVmss -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet" 

확장 집합에서 개별 VM 인스턴스를 시작하려면 Start-AzVM을 사용하고 인스턴스 이름을 지정합니다.

Start-AzVM -ResourceGroupName "myResourceGroup" -name "myScaleSet_instance1"

확장 집합에서 VM 인스턴스 다시 시작

확장 집합에서 모든 VM을 다시 시작하려면 Restart-AzVmss를 사용합니다.

Restart-AzVmss -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet"

개별 인스턴스를 다시 시작하려면 [Restart-AzVM]을 사용하고 인스턴스 이름을 지정합니다.

Restart-AzVM -ResourceGroupName "myResourceGroup" -name "myScaleSet_instance1"

리소스 정리

리소스 그룹을 삭제하면 VM 인스턴스, 가상 네트워크 및 디스크와 같이 포함된 리소스도 모두 삭제됩니다. -Force 매개 변수는 작업을 수행하는 추가 프롬프트 없이 리소스를 삭제할 것인지 확인합니다. -AsJob 매개 변수는 작업이 완료될 때까지 대기하지 않고 프롬프트로 제어를 반환합니다.

Remove-AzResourceGroup -Name "myResourceGroup" -Force -AsJob

다음 단계

이 자습서에서는 Azure PowerShell을 사용하여 기본 확장 집합 만들기 및 관리 작업 일부를 수행하는 방법을 알아보았습니다.

  • 리소스 그룹 만들기
  • 확장 집합 만들기
  • 특정 VM 크기 보기 및 사용
  • 수동으로 확장 집합 크기 조정
  • 확장 집합 중지, 시작 및 다시 시작과 같은 일반적인 확장 집합 관리 작업 수행

다음 자습서로 이동하여 확장 집합 인스턴스에 연결하는 방법을 알아봅니다.