Azure PowerShell을 사용하여 Virtual Machine Scale Set 관리

참고 항목

이 문서에 나열된 대부분의 단계는 균일한 오케스트레이션 모드를 사용하는 Virtual Machine Scale Sets에 적용됩니다. 새 워크로드에 유연한 오케스트레이션을 사용하는 것이 좋습니다. 자세한 내용은 Azure의 Virtual Machine Scale Set에 대한 오케스트레이션 모드를 참조하세요.

Virtual Machine Scale Set의 수명 주기 동안 하나 이상의 관리 작업을 실행해야 합니다. 또한 다양한 수명 주기 작업을 자동화하는 스크립트를 만들어야 하는 경우가 있습니다. 이 문서에서는 이러한 작업을 수행할 수 있는 공통 Azure PowerShell cmdlet 중 일부를 설명합니다.

Virtual Machine Scale Set를 만들어야 하는 경우 Azure PowerShell을 사용하여 확장 집합을 만들 수 있습니다.

참고 항목

Azure Az PowerShell 모듈을 사용하여 Azure와 상호 작용하는 것이 좋습니다. 시작하려면 Azure PowerShell 설치를 참조하세요. Az PowerShell 모듈로 마이그레이션하는 방법에 대한 자세한 내용은 Azure PowerShell을 AzureRM에서 Azure로 마이그레이션을 참조하세요.

확장 집합에 대한 정보 보기

확장 집합에 대한 전체 정보를 보려면 Get-AzVmss를 사용합니다. 다음 예제에서는 myResourceGroup 리소스 그룹에서 myScaleSet이라는 확장 집합에 대한 정보를 가져옵니다. 다음과 같이 고유한 이름을 입력합니다.

Get-AzVmss -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet"

확장 집합의 VM 보기

확장 집합에서 VM 인스턴스 목록을 보려면 Get-AzVmssVM을 사용합니다. 다음 예제에서는 myScaleSet이라는 확장 집합 및 myResourceGroup 리소스 그룹에서 모든 VM 인스턴스를 나열합니다. 다음과 같은 이름에 고유한 값을 제공합니다.

Get-AzVmssVM -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet"

특정 VM 인스턴스에 대한 추가 정보를 보려면 -InstanceId 매개 변수를 Get-AzVmssVM에 추가하고 보려는 인스턴스를 지정합니다. 다음 예제에서는 myScaleSet이라는 확장 집합 및 myResourceGroup이라는 리소스 그룹에서 VM 인스턴스 0에 대한 정보를 봅니다. 다음과 같이 고유한 이름을 입력합니다.

Get-AzVmssVM -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet" -InstanceId "0"

단일 API 호출로 모든 인스턴스의 자세한 instanceView 정보를 가져올 수도 있습니다. 이 기능은 대규모 설치에서 API 제한을 방지하는 데 도움이 됩니다.

Get-AzVmssVM -InstanceView -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet"
GET "https://management.azure.com/subscriptions/<sub-id>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/virtualMachineScaleSets/<VMSSName>/virtualMachines?api-version=2019-03-01&%24expand=instanceView"

확장 집합의 용량 변경

이전 명령은 확장 집합 및 VM 인스턴스에 대한 정보를 표시했습니다. 확장 집합에서 인스턴스 수를 늘리거나 줄이려면 용량을 변경할 수 있습니다. 확장 집합은 자동으로 필요한 수의 VM을 만들거나 제거한 후 애플리케이션 트래픽을 받도록 VM을 구성합니다.

먼저 Get-AzVmss를 포함하는 확장 집합 개체를 만들고 sku.capacity에 새 값을 지정합니다. 용량 변경 내용을 적용하려면 Update-AzVmss를 사용합니다. 다음 예제에서는 myResourceGroup 리소스 그룹에서 myScaleSet5 인스턴스의 용량으로 업데이트합니다. 다음과 같이 사용자 고유의 값을 제공합니다.

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

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

확장 집합의 용량을 업데이트하는 데 몇 분 정도가 걸립니다. 확장 집합의 용량을 줄이는 경우 가장 높은 인스턴스 ID를 포함하는 VM을 먼저 제거합니다.

확장 집합에서 VM 중지 및 시작

확장 집합에서 하나 이상의 VM을 중지하려면 Stop-AzVmss를 사용합니다. -InstanceId 매개 변수를 사용하면 하나 이상의 가상 컴퓨터를 중지하도록 지정할 수 있습니다. 인스턴스 ID를 지정하지 않으면 확장 집합에서 모든 VM이 중지됩니다. 여러 VM을 중지하려면 각 인스턴스 ID를 쉼표로 구분합니다.

다음 예제에서는 myScaleSet이라는 확장 집합 및 myResourceGroup이라는 리소스 그룹에서 인스턴스 0을 중지합니다. 다음과 같이 사용자 고유의 값을 제공합니다.

Stop-AzVmss -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet" -InstanceId "0"

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

확장 집합의 VM 시작

확장 집합에서 하나 이상의 VM을 시작하려면 Start-AzVmss를 사용합니다. -InstanceId 매개 변수를 사용하면 하나 이상의 가상 컴퓨터를 시작하도록 지정할 수 있습니다. 인스턴스 ID를 지정하지 않으면 확장 집합에서 모든 VM이 시작됩니다. 여러 VM을 시작하려면 각 인스턴스 ID를 쉼표로 구분합니다.

다음 예제에서는 myScaleSet이라는 확장 집합 및 myResourceGroup이라는 리소스 그룹에서 인스턴스 0을 시작합니다. 다음과 같이 사용자 고유의 값을 제공합니다.

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

확장 집합의 VM 다시 시작

확장 집합에서 하나 이상의 VM을 다시 시작하려면 Restart-AzVmss를 사용합니다. -InstanceId 매개 변수를 사용하면 하나 이상의 가상 컴퓨터를 다시 시작하도록 지정할 수 있습니다. 인스턴스 ID를 지정하지 않으면 확장 집합에서 모든 VM이 다시 시작됩니다. 여러 VM을 다시 시작하려면 각 인스턴스 ID를 쉼표로 구분합니다.

다음 예제에서는 myScaleSet이라는 확장 집합 및 myResourceGroup이라는 리소스 그룹에서 인스턴스 0을 다시 시작합니다. 다음과 같이 사용자 고유의 값을 제공합니다.

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

확장 집합에서 VM 제거

확장 집합에서 하나 이상의 VM을 제거하려면 Remove-AzVmss를 사용합니다. -InstanceId 매개 변수를 사용하면 하나 이상의 가상 컴퓨터를 제거하도록 지정할 수 있습니다. 인스턴스 ID를 지정하지 않으면 확장 집합에서 모든 VM이 제거됩니다. 여러 VM을 제거하려면 각 인스턴스 ID를 쉼표로 구분합니다.

다음 예제에서는 myScaleSet이라는 확장 집합 및 myResourceGroup이라는 리소스 그룹에서 인스턴스 0을 제거합니다. 다음과 같이 사용자 고유의 값을 제공합니다.

Remove-AzVmss -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet" -InstanceId "0"

다음 단계

확장 집합에 대한 다른 공통 작업에는 애플리케이션을 배포하고 VM 인스턴스를 업그레이드하는 방법이 포함됩니다. Azure PowerShell을 사용하여 자동 크기 조정 규칙을 구성할 수도 있습니다.