Virtual Machine Scale Set을 사용하면 가상 머신 집합을 배포하고 관리할 수 있습니다. Virtual Machine Scale Set의 수명 주기 동안 하나 이상의 관리 작업을 실행해야 할 수 있습니다. 이 자습서에서는 다음을 하는 방법을 알아볼 수 있습니다.
- 리소스 그룹 만들기
- 가상 머신 크기 집합 만들기
- 스케일 아웃 및 스케일 인
- VM 인스턴스 중지, 시작 및 다시 시작
Azure 계정이 없는 경우 시작하기 전에 체험 계정을 만듭니다.
필수 조건
Bash 환경을 Azure Cloud Shell에서 사용합니다. 자세한 내용은 Azure Cloud Shell 시작을 참조하세요.
CLI 참조 명령을 로컬에서 실행하려면 Azure CLI를 설치하십시오. Windows 또는 macOS에서 실행 중인 경우 Docker 컨테이너에서 Azure CLI를 실행하는 것이 좋습니다. 자세한 내용은 Docker 컨테이너에서 Azure CLI를 실행하는 방법을 참조하세요.
로컬 설치를 사용하는 경우 az login 명령을 사용하여 Azure CLI에 로그인합니다. 인증 프로세스를 완료하려면 터미널에 표시되는 단계를 수행합니다. 다른 로그인 옵션은 Azure CLI를 사용하여 Azure에 인증을 참조하세요.
메시지가 표시되면 처음 사용할 때 Azure CLI 확장을 설치합니다. 확장에 대한 자세한 내용은 Azure CLI로 확장 사용 및 관리를 참조하세요.
az version을 실행하여 설치된 버전과 관련 종속 라이브러리를 확인합니다. 최신 버전으로 업그레이드하려면 az upgrade를 실행합니다.
이 문서에는 Azure CLI 버전 2.0.29 이상이 필요합니다. Azure Cloud Shell을 사용하는 경우 최신 버전이 이미 설치되어 있습니다.
리소스 그룹 만들기
Azure 리소스 그룹은 Azure 리소스가 배포 및 관리되는 논리적 컨테이너입니다. 가상 머신 확장 집합을 만들기 전에 리소스 그룹을 먼저 만들어야 합니다. az group create 명령을 사용하여 리소스 그룹을 만듭니다. 이 예제에서는 myResourceGroup 이라는 리소스 그룹이 eastus 지역에 만들어집니다.
az group create --name myResourceGroup --location eastus
리소스 그룹 이름은 이 전체 자습서에서 스케일 세트를 만들거나 수정할 때 지정됩니다.
스케일 세트 생성
중요합니다
2023년 11월부터 PowerShell 및 Azure CLI를 사용하여 만들어진 VM Scale Sets는 오케스트레이션 모드가 지정되지 않은 경우 기본적으로 유연한 오케스트레이션 모드로 설정됩니다. 변경 사항과 수행해야 할 작업에 대한 자세한 내용은 VMSS PowerShell/CLI 고객을 위한 주요 변경 사항 - Microsoft Community Hub를 참조하세요.
az vmss create 명령을 사용하여 Virtual Machine Scale Set을 만듭니다. 다음 예제에서는 myScaleSet라는 확장 집합을 만들고, SSH 키가 존재하지 않는 경우 이를 생성합니다.
az vmss create \
--resource-group myResourceGroup \
--name myScaleSet \
--orchestration-mode flexible \
--image <SKU image> \
--admin-username azureuser \
--generate-ssh-keys
확장 집합 리소스와 VM 인스턴스를 모두 만들고 구성하는 데 몇 분 정도 걸립니다. 트래픽을 개별 VM 인스턴스로 배포하기 위해 부하 분산 장치도 생성됩니다.
확장 집합의 VM 인스턴스에 대한 정보 보기
확장 집합에서 VM 인스턴스 목록을 보려면 다음과 같이 az vm list 를 사용합니다.
az vm list --resource-group myResourceGroup --output table
다음 예제 출력은 확장 집합의 두 VM 인스턴스를 보여 줍니다.
Name ResourceGroup Location Zones
------------------- --------------- ---------- -------
myScaleSet_instance1 myResourceGroup eastus
myScaleSet_instance2 myResourceGroup eastus
특정 VM 인스턴스에 대한 추가 정보를 보려면 az vm show 를 사용하고 VM 이름을 지정합니다.
az vm show --resource-group myResourceGroup --name myScaleSet_instance1
{
"hardwareProfile": {
"vmSize": "Standard_DS1_v2",
},
"id": "/subscriptions/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myScaleSet_instance1",
"location": "eastus",
"name": "myScaleSet_instance1",
"networkProfile": {
"networkInterfaces": [
{
"deleteOption": "Delete",
"id": "/subscriptions/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkInterfaces/mysca2215Nic-0396c71c",
"primary": true,
"resourceGroup": "myResourceGroup"
}
]
},
"osProfile": {
"adminUsername": "azureuser",
"allowExtensionOperations": true,
"computerName": "myScaleSN30BP1",
"linuxConfiguration": {
"disablePasswordAuthentication": true,
"enableVmAgentPlatformUpdates": false,
"patchSettings": {
"assessmentMode": "ImageDefault",
"patchMode": "ImageDefault"
},
"provisionVmAgent": true,
"ssh": {
"publicKeys": [
{
"keyData": "ssh-rsa",
"path": "/home/azureuser/.ssh/authorized_keys"
}
]
}
},
"requireGuestProvisionSignal": true,
"secrets": [],
},
"provisioningState": "Succeeded",
"resourceGroup": "myResourceGroup",
"storageProfile": {
"dataDisks": [],
"imageReference": {
"exactVersion": "XXXXX",
"offer": "myOffer",
"publisher": "myPublisher",
"sku": "mySKU",
"version": "latest"
},
"osDisk": {
"caching": "ReadWrite",
"createOption": "FromImage",
"deleteOption": "Delete",
"diskSizeGb": 30,
"managedDisk": {
"id": "/subscriptions/resourceGroups/myResourceGroup/providers/Microsoft.Compute/disks/myScaleSet_instance1_disk1",
"resourceGroup": "myResourceGroup",
"storageAccountType": "Premium_LRS"
},
"name": "myScaleSet_instance1_disk1",
"osType": "Linux",
}
},
"tags": {},
"timeCreated": "2022-11-16T20:32:15.024581+00:00",
"type": "Microsoft.Compute/virtualMachines",
"virtualMachineScaleSet": {
"id": "/subscriptions/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSet",
"resourceGroup": "myResourceGroup"
},
}
특정 VM 인스턴스 크기를 사용하여 확장 집합 만들기
자습서의 시작 부분에서 확장 집합을 만들 때 VM 인스턴스에 대해 Standard_D1_v2의 기본 VM SKU가 제공되었습니다.
az vm list-sizes의 출력에 따라 다른 VM 인스턴스 크기를 지정할 수 있습니다. 다음 예제에서는 --vm-sku 매개 변수를 사용하여 확장 집합을 만들고 Standard_F1 VM 인스턴스 크기를 지정합니다. 모든 확장 집합 리소스 및 VM 인스턴스를 만들고 구성하는 데 몇 분 정도 걸리기 때문에 다음 확장 집합을 배포할 필요가 없습니다.
az vmss create \
--resource-group myResourceGroup \
--name myScaleSet \
--orchestration-mode flexible \
--image <SKU image> \
--vm-sku Standard_F1 \
--admin-user azureuser \
--generate-ssh-keys
확장 집합의 용량 변경
자습서의 시작 부분에서 확장 집합을 만들 때 두 개의 VM 인스턴스가 기본적으로 배포되었습니다.
--instance-count 매개 변수를 지정하여 az vmss create를 사용할 때, 확장 집합으로 생성된 인스턴스 수를 변경할 수 있습니다. 기존 확장 집합의 VM 인스턴스 수를 늘리거나 줄이려면 용량을 수동으로 변경할 수 있습니다. 확장 집합은 필요한 수의 VM 인스턴스를 만들거나 제거한 다음 트래픽을 분산하도록 부하 분산 장치를 구성합니다.
확장 집합의 VM 인스턴스 수를 수동으로 늘리거나 줄이려면 az vmss scale을 사용합니다. 다음 예제에서는 확장 집합의 VM 인스턴스 수를 3으로 설정합니다.
az vmss scale \
--resource-group myResourceGroup \
--name myScaleSet \
--new-capacity 3
확장 집합의 용량을 업데이트하는 데 몇 분 정도가 걸립니다. 확장 집합에 있는 인스턴스 수를 보려면 az vm list 를 사용하고 연결된 리소스 그룹에서 쿼리합니다.
az vm list --resource-group myResourceGroup --output table
Name ResourceGroup Location Zones
------------------- --------------- ---------- -------
myScaleSet_instance1 myResourceGroup eastus
myScaleSet_instance2 myResourceGroup eastus
myScaleSet_instance3 myResourceGroup eastus
확장 집합에서 VM 인스턴스 중지 및 할당 취소
확장 집합의 모든 VM 인스턴스를 중지하려면 az vmss stop을 사용합니다.
az vmss stop \
--resource-group myResourceGroup \
--name myScaleSet
확장 집합에서 개별 VM 인스턴스를 중지하려면 az vm stop 을 사용하고 인스턴스 이름을 지정합니다.
az vm stop \
--resource-group myResourceGroup \
--name myScaleSet_instance1
중지된 VM 인스턴스는 할당된 상태로 유지되며 컴퓨팅 요금이 계속 발생합니다. 대신 VM 인스턴스의 할당을 취소하고 스토리지 요금만 발생하도록 하려면 az vm 할당 취소 를 사용하고 할당 취소할 인스턴스 이름을 지정합니다.
az vm deallocate \
--resource-group myResourceGroup \
--name myScaleSet_instance1
스케일 집합에서 VM 인스턴스를 시작
확장 집합에서 모든 VM 인스턴스를 시작하려면 az vmss start를 사용합니다.
az vmss start \
--resource-group myResourceGroup \
--name myScaleSet
확장 집합에서 개별 VM 인스턴스를 시작하려면 az vm start 를 사용하고 인스턴스 이름을 지정합니다.
az vm start \
--resource-group myResourceGroup \
--name myScaleSet_instance1
확장 집합에서 VM 인스턴스 다시 시작
확장 집합의 모든 VM 인스턴스를 다시 시작하려면 az vmss restart를 사용합니다.
az vmss restart \
--resource-group myResourceGroup \
--name myScaleSet
확장 집합에서 개별 VM 인스턴스를 다시 시작하려면 az vm restart를 사용하고 인스턴스 이름을 지정합니다.
az vm restart \
--resource-group myResourceGroup \
--name myScaleSet_instance1
자원을 정리하세요
리소스 그룹을 삭제하면 VM 인스턴스, 가상 네트워크 및 디스크와 같은 내에 포함된 모든 리소스도 삭제됩니다.
--no-wait 매개 변수는 작업이 완료될 때까지 대기하지 않고 프롬프트로 제어를 반환합니다. 매개 변수는 --yes 추가 프롬프트 없이 리소스를 삭제할 것인지 확인합니다.
az group delete --name myResourceGroup --no-wait --yes
다음 단계
이 자습서에서는 Azure CLI를 사용하여 몇 가지 기본 확장 집합 만들기 및 관리 작업을 수행하는 방법을 알아보았습니다.
- 리소스 그룹 만들기
- 스케일 세트 생성
- 특정 VM 크기 보기 및 사용
- 수동으로 확장 집합 크기 조정
- 확장 집합 중지, 시작 및 다시 시작과 같은 일반적인 확장 집합 관리 작업 수행
다음 자습서로 진행하여 스케일 집합 인스턴스에 연결하는 방법을 알아보십시오.