Azure의 Virtual Machine Scale Sets에 대한 FAQ(질문과 대답)에 대해 알아봅니다.
확장 집합에 대한 상위 질문과 대답
확장 집합에 포함할 수 있는 VM 수는 몇 개인가요?
확장 집합에는 플랫폼 이미지를 기반으로 하는 0~1,000개의 VM(가상 머신) 또는 사용자 지정 이미지를 기반으로 하는 0~600개의 VM이 있을 수 있습니다.
확장 집합 내에서 데이터 디스크가 지원되나요?
예. 확장 집합은 집합에서 모든 VM에 적용되는 연결된 데이터 디스크의 구성을 정의할 수 있습니다. 자세한 내용은 Azure 크기 조정 설정 및 연결된 데이터 디스크를 참조하세요. 데이터를 저장하는 기타 옵션은 다음과 같습니다.
- Azure Managed Disks(Premium v2, Premium, Standard, Ultra)
- Azure Files(SMB 또는 NFS 공유 드라이브)
- Azure Netapp Files
- Azure 공유 디스크
- 운영 체제 드라이브
- 임시 드라이브(Azure Storage에서 지원되지 않는 로컬 드라이브)
- Azure 데이터 서비스(예: Azure Table Storage 또는 Azure Blob Storage)
- 외부 데이터 서비스(예: 원격 데이터베이스)
확장 집합을 지원하는 Azure 지역은 어디인가요?
모든 지역에서 확장 집합을 지원합니다.
Virtual Machine Scale Sets에 지원되는 SKU는 무엇인가요?
모든 SKU는 Virtual Machine Scale Sets에 대해 지원됩니다.
사용자 지정 이미지를 사용하여 확장 집합을 어떻게 만드나요?
VM 이미지를 만들고 캡처한 다음, 확장 집합에 대한 원본으로 사용합니다. 사용자 지정 VM 이미지를 만들고 사용하는 방법에 대한 자습서에서는 Azure CLI 또는 Azure PowerShell을 사용할 수 있습니다.
OS 이미지 업그레이드와 이미지와 재설치 간의 차이점은 무엇인가요?
OS 이미지 업그레이드는 시간이 지남에 따라 전체 Virtual Machine Scale Set에 대한 OS 이미지를 업데이트하여 실행 중인 워크로드에 미치는 영향을 최소화하는 점진적이고 중단 없는 프로세스입니다.
이미지 다시 설치는 선택한 VM 인스턴스에만 영향을 미치고 일시적으로 중지하고 OS를 다시 설치하는 보다 즉각적이고 중단적인 작업입니다.
OS 이미지 업그레이드와 이미지 재설치 간의 차이점에 대해 자세히 알아봅니다.
내 확장 집합 용량을 20에서 15로 줄이면, 어떤 VM이 제거되나요?
기본적으로 가상 머신은 가용성을 최대화하기 위해 가용성 영역(확장 집합이 영역 구성에 배포된 경우)과 장애 도메인에 걸쳐 균일하게 확장 집합에서 제거됩니다. ID가 가장 높은 VM이 먼저 제거됩니다.
확장 집합에 스케일 인 정책을 지정하여 가상 머신 제거 순서를 변경할 수 있습니다.
그런 다음 용량을 15에서 18로 늘리면 어떻게 되나요?
용량을 18로 늘리면 3개의 새로운 VM 생성됩니다. VM 인스턴스 ID는 이전의 가장 큰 값에서 증가합니다(예: 20, 21, 22). VM은 장애 도메인 간에 균형을 맞춥니다.
확장 집합에서 여러 확장을 사용하는 경우, 실행 순서를 강제로 적용할 수 있나요?
예, 확장 시퀀싱 확장 집합을 사용할 수 있습니다.
확장 집합은 Azure 가용성 집합과 작업이 가능한가요?
지역(비 영역) 확장 집합은 배치 그룹을 사용합니다. 5개의 장애 도메인과 5개의 업데이트 도메인이 있는 암시적 가용성 집합으로 역할을 합니다. 100개 이상의 VM 확장 집합은 여러 배치 그룹으로 확장합니다. 배치 그룹에 대한 자세한 내용은 대규모 Virtual Machine Scale Sets 작업을 참조하세요. VM의 가용성 집합은 동일한 가상 네트워크에 VM의 확장 집합으로 존재할 수 있습니다. 일반적인 구성은 제어 노드 VM(고유한 구성이 필요한 경우가 많음)을 가용성 집합에 배치하고 데이터 노드를 확장 집합에 배치하는 것입니다.
확장 집합은 Azure 가용성 영역과 작업이 가능한가요?
예. 자세한 내용은 확장 집합 영역 문서를 참조하세요.
Autoscale
Azure 자동 크기 조정에 대한 모범 사례는 무엇입니까?
가상 머신 자동 크기 조정에 대한 모범 사례를 참조하세요.
호스트 기반 메트릭을 사용하는 자동 크기 조정에 대한 메트릭 이름은 어디에서 찾을 수 있나요?
Azure Monitor에서 지원되는 메트릭을 참조하세요.
Azure Service Bus 토픽과 큐 길이를 기준으로 하는 자동 크기 조정의 예가 있나요?
예. 이러한 예제는 Azure Monitor 자동 크기 조정 공용 메트릭을 참조하세요.
Service Bus 큐를 모니터링하려면 다음 JSON을 수행합니다.
"metricName": "MessageCount",
"metricNamespace": "",
"metricResourceUri": "/subscriptions/s1/resourceGroups/rg1/providers/Microsoft.ServiceBus/namespaces/mySB/queues/myqueue"
스토리지 큐의 경우 다음 JSON을 사용합니다.
"metricName": "ApproximateMessageCount",
"metricNamespace": "",
"metricResourceUri": "/subscriptions/s1/resourceGroups/rg1/providers/Microsoft.ClassicStorage/storageAccounts/mystorage/services/queue/queues/mystoragequeue"
예제 값을 리소스 URI(Uniform Resource Identifier)로 바꿉니다.
자동 크기 조정을 수행할 때 호스트 기반 메트릭과 진단 확장 중에서 어떤 방식을 사용하는 것이 바람직한가요?
VM에서 자동 크기 조정 설정을 만들어 호스트 수준 메트릭 또는 게스트 운영 체제 기반 메트릭을 사용할 수 있습니다.
지원되는 메트릭 목록에 대해서는 Azure Monitor 자동 크기 조정 공용 메트릭을 참조하세요.
Virtual Machine Scale Sets의 전체 샘플을 보려면 Virtual Machine Scale Sets에 대해 Resource Manager 템플릿을 사용하여 고급 자동 크기 조정 구성을 참조하세요.
샘플에서는 호스트 수준의 CPU 메트릭 및 메시지 개수 메트릭을 사용합니다.
Virtual Machine Scale Set에 대해 경고 규칙을 설정하려면 어떻게 해야 하나요?
PowerShell 또는 Azure CLI를 통해 Virtual Machine Scale Sets의 메트릭에 대해 경고를 만들 수 있습니다. 자세한 내용은 Azure Monitor PowerShell 빠른 시작 샘플 및 Azure Monitor 플랫폼 간 CLI 빠른 시작 샘플을 참조하세요.
Virtual Machine Scale Set의 TargetResourceId
는 다음과 같습니다.
/subscriptions/yoursubscriptionid/resourceGroups/yourresourcegroup/providers/Microsoft.Compute/virtualMachineScaleSets/yourvmssname
경고를 설정할 메트릭으로 어떤 VM 성능 카운터도 선택할 수 있습니다. 자세한 내용은 Azure Monitor 자동 크기 조정 공용 메트릭 문서의 Resource Manager 기반 Windows VM에 대한 게스트 운영 체제 메트릭 및 Linux VM에 대한 게스트 운영 체제 메트릭을 참조하세요.
PowerShell을 사용하여 Virtual Machine Scale Set에 대해 자동 크기 조정을 설정하려면 어떻게 해야 하나요?
Virtual Machine Scale Set 크기를 자동으로 조정을 참조하세요. Azure CLI 및 Azure 템플릿을 사용하여 자동 크기 조정을 구성할 수도 있습니다.
VM을 중지(할당 취소)한 경우 VM이 자동 크기 조정 작업의 일부로 시작되었나요?
아니요. 자동 크기 조정 규칙에 확장 집합의 일부로 추가 VM 인스턴스가 필요한 경우 새 VM 인스턴스가 생성됩니다. 중지(할당 취소)된 VM 인스턴스는 자동 크기 조정 이벤트의 일부로 시작되지 않습니다. 그러나 중지(할당 취소)된 VM은 VM 인스턴스 ID의 순서에 따라 VM 인스턴스를 삭제할 수 있는 것과 같은 방식으로 인스턴스 수를 스케일 인하는 자동 크기 조정 이벤트의 일부로 삭제할 수 있습니다.
인증서
VM에 인증서를 안전하게 배달하려면 어떻게 해야 하나요?
VM에 인증서를 안전하게 전달하기 위해 고객의 Key Vault에서 Windows 인증서 저장소로 직접 고객 인증서를 설치할 수 있습니다.
다음 JSON을 사용합니다.
"secrets": [
{
"sourceVault": {
"id": "/subscriptions/{subscriptionid}/resourceGroups/myrg1/providers/Microsoft.KeyVault/vaults/mykeyvault1"
},
"vaultCertificates": [
{
"certificateUrl": "https://mykeyvault1.vault.azure.net/secrets/{secretname}/{secret-version}",
"certificateStore": "certificateStoreName"
}
]
}
]
코드는 Windows와 Linux를 모두 지원합니다.
자세한 내용은 Virtual Machine Scale Set 만들기 또는 업데이트를 참조하세요.
프로비전된 자체 서명된 인증서를 Azure Service Fabric 클러스터에 사용하려면 어떻게 할까요?
최신 예제의 경우 Azure 셸에서 stdout에 출력되는 다음 Azure CLI 문을 사용합니다.
az sf cluster create -h
자체 서명된 인증서는 인증 기관에서 제공하는 분산 신뢰에 사용할 수 없으며, 엔터프라이즈 프로덕션 솔루션을 호스트하기 위한 Service Fabric 클러스터에 사용하지 않아야 합니다. 추가 보안 지침은 Azure Service Fabric 보안 모범 사례 및 Service Fabric 클러스터 보안 시나리오를 검토하세요.
Resource Manager 템플릿에서 Linux Virtual Machine Scale Set를 사용하는 SSH 인증의 경우 사용할 SSH 키 쌍을 지정할 수 있나요?
예. osProfile
에 대한 REST API는 표준 VM REST API와 비슷합니다.
osProfile
을 템플릿에 포함합니다.
"osProfile": {
"computerName": "[variables('vmName')]",
"adminUsername": "[parameters('adminUserName')]",
"linuxConfiguration": {
"disablePasswordAuthentication": "true",
"ssh": {
"publicKeys": [
{
"path": "[variables('sshKeyPath')]",
"keyData": "[parameters('sshKeyData')]"
}
]
}
}
}
이 JSON 블록은 이 Azure 빠른 시작 템플릿에서 사용합니다.
자세한 내용은 Virtual Machine Scale Set 만들기 또는 업데이트를 참조하세요.
사용되지 않는 인증서를 제거하려면 어떻게 합니까?
사용되지 않는 인증서를 제거하려면 자격 증명 모음 인증서 목록에서 이전 인증서를 제거합니다. 목록에서 컴퓨터에 유지하려는 모든 인증서를 그대로 둡니다. 이 작업을 수행해도 모든 VM에서 인증서가 제거되지는 않습니다. 또한 Virtual Machine Scale Set에서 만든 새 VM에 인증서를 추가하지 않습니다.
기존 VM에서 인증서를 제거하려면 인증서 저장소에서 인증서를 수동으로 제거하는 사용자 지정 스크립트 확장을 사용합니다.
프로비전하는 동안 기존 SSH 공개 키를 Virtual Machine Scale Set SSH 계층에 삽입하려면 어떻게 해야 하나요?
공개 SSH 키만 VM에 제공하는 경우 공개 키를 Azure Key Vault에 넣을 필요가 없습니다. 공개 키는 비밀이 아닙니다.
Linux VM을 만들 때 일반 텍스트로 SSH 공개 키를 제공할 수 있습니다.
"linuxConfiguration": {
"ssh": {
"publicKeys": [
{
"path": "path",
"keyData": "publickey"
}
]
}
}
linuxConfiguration 요소 이름 |
필수 | Type | 설명 |
---|---|---|---|
ssh |
아니요 | 컬렉션 | Linux 운영 체제에 대한 SSH 키 구성을 지정합니다. |
path |
예 | 문자열 | SSH 키 또는 인증서가 있어야 하는 Linux 파일 경로를 지정합니다. |
keyData |
예 | 문자열 | base64로 인코딩된 SSH 공개 키를 지정합니다. |
예제는 vm-sshkey GitHub 빠른 시작 템플릿을 참조하세요.
동일한 키 자격 증명 모음에서 둘 이상의 인증서를 추가한 후에 'Update-AzVmss'를 실행하면 오류 메시지가 표시되는 이유는 무엇인가요?
이 오류는 기존 원본 자격 증명 모음에 새 자격 증명 모음 인증서를 사용하는 대신 동일한 자격 증명 모음을 다시 추가하려는 경우에 발생할 수 있습니다. 추가 비밀을 추가하는 경우 Add-AzVmssSecret
명령이 제대로 작동하지 않습니다.
동일한 키 자격 증명 모음에서 더 많은 비밀을 추가하려면 $vmss.properties.osProfile.secrets[0].vaultCertificates
목록을 업데이트합니다.
필요한 입력 구조에 대한 자세한 내용은 가상 컴퓨터 설정 만들기 또는 업데이트를 참조하세요.
키 자격 증명 모음에 있는 Virtual Machine Scale Set 개체에서 비밀을 찾습니다. 그런 다음 인증서 참조(비밀 저장소 이름 및 URL)를 자격 증명 모음과 관련된 목록에 추가합니다.
참고 항목
현재 Virtual Machine Scale Set API를 사용하여 VM에서 인증서를 제거할 수 없습니다.
새 VM은 이전 인증서를 갖지 않게 됩니다. 그러나 인증서가 있고 이미 배포된 VM에는 이전 인증서가 있습니다.
인증서가 비밀 저장소에 있을 때 암호를 제공하지 않고 인증서를 Virtual Machine Scale Set에 푸시할 수 있나요?
스크립트에서 암호를 하드 코딩할 필요가 없습니다. 배포 스크립트를 실행하는 데 사용하는 권한으로 암호를 동적으로 검색할 수 있습니다. 인증서를 비밀 저장소에서 Key Vault로 이동하는 스크립트가 있는 경우 secret store get certificate
명령을 실행하면 .pfx 파일의 암호도 출력됩니다.
Virtual Machine Scale Set에 대한 `virtualMachineProfile.osProfile`의 `Secrets` 속성은 어떻게 작동합니까? 'certificateUrl' 속성을 사용하여 인증서에 대한 절대 URI를 지정해야 하는 경우 'sourceVault' 값이 필요한 이유는 무엇인가요?
WinRM(Windows 원격 관리) 인증서 참조는 운영 체제 프로필의 Secrets
속성에 있어야 합니다.
원본 자격 증명 모음을 지정하는 것은 사용자의 Azure Cloud Services 모델에 있는 ACL(액세스 제어 목록) 정책을 적용하기 위한 것입니다. 원본 자격 증명 모음이 지정되지 않은 경우 키 자격 증명 모음에 대한 비밀을 배포하거나 액세스할 수 있는 권한이 없는 사용자는 CRP(컴퓨팅 리소스 공급자)를 통해 키 자격 증명 모음에 액세스할 수 있습니다. ACL은 존재하지 않는 리소스에 대해서도 존재합니다.
잘못된 원본 자격 증명 모음 ID를 제공하지만 유효한 키 자격 증명 모음 URL을 제공하면 작업을 폴링할 때 오류가 보고됩니다.
기존 Virtual Machine Scale Set에 비밀을 추가하면 비밀이 기존 VM에 삽입되나요? 아니면 새 VM에만 삽입되나요?
인증서는 기존 VM을 포함하여 모든 VM에 추가됩니다. Virtual Machine Scale Set upgradePolicy
속성을 manual
로 설정하면 VM에서 수동 업데이트를 수행할 때 인증서가 해당 VM에 추가됩니다.
Linux VM에 대한 인증서는 어디에서 추가하나요?
Linux VM에 대한 인증서를 배포하는 방법을 알아보려면 고객이 관리하는 Key Vault에서 VM에 인증서 배포를 참조하세요.
새 자격 증명 모음 인증서는 새 인증서 개체에 추가하려면 어떻게 하나요?
기존 비밀에 자격 증명 모음 인증서를 추가하려면 다음 PowerShell 예제를 참조하세요. 비밀 개체를 하나만 사용합니다.
$newVaultCertificate = New-AzVmssVaultCertificateConfig -CertificateStore MY -CertificateUrl https://sansunallapps1.vault.azure.net:443/secrets/dg-private-enc/55fa0332edc44a84ad655298905f1809
$vmss.VirtualMachineProfile.OsProfile.Secrets[0].VaultCertificates.Add($newVaultCertificate)
Update-AzVmss -VirtualMachineScaleSet $vmss -ResourceGroup $rg -Name $vmssName
VM을 이미지로 다시 설치하면 인증서는 어떻게 되나요?
VM을 이미지로 다시 설치할 경우 인증서는 삭제됩니다. 이미지로 다시 설치하면 전체 운영 체제 디스크가 삭제됩니다.
키 자격 증명 모음에서 인증서를 삭제하면 어떻게 되나요?
키 자격 증명 모음에서 비밀을 삭제하고 모든 VM의 stop deallocate
를 실행한 다음, 다시 시작하면 오류가 발생합니다. 이 오류는 CRP가 키 자격 증명 모음에서 비밀을 검색해야 하지만 검색할 수 없기 때문에 발생합니다. 이 시나리오에서는 Virtual Machine Scale Set 모델에서 인증서를 삭제할 수 있습니다.
CRP 구성 요소는 고객 비밀을 영구적으로 만들지 않습니다. Virtual Machine Scale Set의 모든 VM에 대해 stop deallocate
를 실행하면 캐시가 삭제됩니다. 이 시나리오에서는 Key Vault에서 비밀이 검색됩니다.
비밀의 캐시 복사본이 Azure Service Fabric(단일 패브릭 테넌트 모델)에 있으므로 스케일 아웃할 때 이 문제가 발생하지 않습니다.
Key Vault를 사용할 때 인증서 버전을 지정해야 하는 이유는 무엇입니까?
목적은 사용자에게 VM에 배포된 인증서를 명확히 하는 것입니다.
VM을 만든 다음, 키 자격 증명 모음에서 비밀을 업데이트하면 새 인증서가 VM에 다운로드되지 않습니다. 그러나 VM에서 새 인증서를 참조하는 것처럼 보일 것이며, 새 VM에서 새 비밀을 가져오게 됩니다. 이 문제를 방지하려면 비밀 버전을 참조해야 합니다.
여기서는 .cer 공개 키로 배포되는 여러 인증서로 작업합니다. Virtual Machine Scale Set에 이러한 인증서를 배포하는 권장 방법은 무엇인가요?
.cer 공개 키를 Virtual Machine Scale Set에 배포하려면 .cer 파일만 포함하는 .pfx 파일을 생성할 수 있습니다. 이렇게 하려면 X509ContentType = Pfx
를 사용합니다. 예를 들어 C# 또는 PowerShell에서 .cer 파일을 x509Certificate2
개체로 로드한 다음, 이 메서드를 호출합니다.
자세한 내용은 X509Certificate.Export 메서드(X509ContentType, String)를 참조하세요.
인증서를 base64 문자열로 전달하려면 어떻게 할까요??
인증서를 base64 문자열로 전달하는 것을 에뮬레이트하려면 Resource Manager 템플릿에서 최신 버전이 지정된 URL을 추출할 수 있습니다. Resource Manager 템플릿에 다음 JSON 속성을 포함합니다.
"certificateUrl": "[reference(resourceId(parameters('vaultResourceGroup'), 'Microsoft.KeyVault/vaults/secrets', parameters('vaultName'), parameters('secretName')), '2015-06-01').secretUriWithVersion]"
Key Vault의 JSON 개체에서 인증서를 래핑해야 하나요?
Virtual Machine Scale Sets 및 VM에서 인증서가 JSON 개체에 래핑되어야 합니다.
또한 application/x-pkcs12 콘텐츠 형식도 지원합니다.
현재 .cer 파일은 지원하지 않습니다. .cer 파일을 사용하려면 .pfx 컨테이너로 내보냅니다.
규정 준수 및 보안
Virtual Machine Scale Sets는 PCI 규정을 준수하나요?
Virtual Machine Scale Sets는 CRP 위의 얇은 API 계층에 해당합니다. 두 구성 요소 모두 Azure 서비스 트리에서 Compute 플랫폼에 속합니다.
따라서 규정 준수 관점에서 볼 때 Virtual Machine Scale Sets는 Azure Compute 플랫폼의 기본 요소입니다. 가상 머신 확장 집합은 팀, 도구, 프로세스, 배포 방법, 보안 제어, JIT(Just-In-Time) 컴파일, 모니터링 및 경고를 CRP 자체와 공유합니다. Virtual Machine Scale Sets는 CRP가 현재 PCI DSS(데이터 보안 표준) 증명의 일부이므로 PCI(Payment Card Industry) 규격입니다.
자세한 내용은 Microsoft 보안 센터를 참조하세요.
Azure 리소스에 대한 관리 ID는 Virtual Machine Scale Sets에서 작동하나요?
삭제 중
인스턴스를 삭제할 때 Virtual Machine Scale Set 인스턴스에 설정한 잠금이 적용되나요?
Azure Portal에서 개별 인스턴스를 삭제하거나 여러 인스턴스를 선택하여 대량으로 삭제할 수 있습니다. 잠금이 설정된 단일 인스턴스를 삭제하려고 하면 잠금이 적용되어 인스턴스를 삭제할 수 없습니다. 그러나 여러 인스턴스를 대량으로 선택하고 해당 인스턴스 중 하나에 잠금이 설정되어 있으면 잠금이 적용되지 않고 선택한 모든 인스턴스가 삭제됩니다.
Azure CLI에서는 개별 인스턴스만 삭제할 수 있습니다. 잠금이 설정된 단일 인스턴스를 삭제하려고 하면 잠금이 적용되어 해당 인스턴스를 삭제할 수 없습니다.
확장
Virtual Machine Scale Set 확장을 삭제하려면 어떻게 해야 하나요?
Virtual Machine Scale Set 확장을 삭제하려면 다음 PowerShell 예제를 사용합니다.
$vmss = Get-AzVmss -ResourceGroupName "resource_group_name" -VMScaleSetName "vmssName"
$vmss=Remove-AzVmssExtension -VirtualMachineScaleSet $vmss -Name "extensionName"
Update-AzVmss -ResourceGroupName "resource_group_name" -VMScaleSetName "vmssName" -VirtualMacineScaleSet $vmss
extensionName
값은 $vmss
에서 찾을 수 있습니다.
Azure Monitor 로그와 통합되는 Virtual Machine Scale Set 템플릿 예제가 있나요?
Azure Monitor 로그와 통합되는 Virtual Machine Scale Set 템플릿 예제의 경우 Azure Monitor 로그를 사용하여 Azure Service Fabric 클러스터 배포 및 모니터링 사용의 두 번째 예제를 참조하세요.
Virtual Machine Scale Set의 모든 VM에 확장을 추가하려면 어떻게 해야 하나요?
업데이트 정책이 automatic(자동)으로 설정된 경우 템플릿을 새 확장 속성으로 다시 배포하면 모든 VM이 업데이트됩니다.
업데이트 정책이 manual(수동)로 설정된 경우 먼저 확장을 업데이트한 다음, VM의 모든 인스턴스를 수동으로 업데이트합니다.
기존 Virtual Machine Scale Set와 연결된 확장이 업데이트되면 기존 VM에 영향을 주나요?
Virtual Machine Scale Set 모델의 확장 정의가 업데이트되고 upgradePolicy
속성이 automatic
으로 설정되면 VM이 업데이트됩니다. upgradePolicy
속성이 manual
로 설정되면 확장에 모델과 일치하지 않는 플래그가 지정됩니다.
기존 머신이 서비스 복구되거나 이미지로 다시 설치될 때 확장이 다시 실행되나요?
기존 VM이 서비스 복구되면 다시 부팅으로 표시되고 확장이 다시 실행되지 않습니다. VM이 이미지로 다시 설치되면 프로세스가 운영 체제 드라이브를 원본 이미지로 바꾸는 것과 비슷합니다. 확장과 같은 최신 모델의 모든 특수화가 다시 실행됩니다.
Virtual Machine Scale Set를 Active Directory 도메인에 가입하려면 어떻게 해야 하나요?
Virtual Machine Scale Set를 Active Directory 도메인에 조인하기 위해 확장을 정의할 수 있습니다.
확장을 정의하려면 JsonADDomainExtension
속성을 사용합니다.
"extensionProfile": {
"extensions": [
{
"name": "joindomain",
"properties": {
"publisher": "Microsoft.Compute",
"type": "JsonADDomainExtension",
"typeHandlerVersion": "1.3",
"settings": {
"Name": "[parameters('domainName')]",
"OUPath": "[variables('ouPath')]",
"User": "[variables('domainAndUsername')]",
"Restart": "true",
"Options": "[variables('domainJoinOptions')]"
},
"protectedsettings": {
"Password": "[parameters('domainJoinPassword')]"
}
}
}
]
}
내 Virtual Machine Scale Set 확장은 설치를 시도하며 이로 인해 재부팅이 필요합니다. 어떻게 해야 합니까?
Azure Automation Desired State Configuration 확장을 사용할 수 있습니다. 운영 체제가 Windows Server 2012 R2인 경우 Azure는 WMF(Windows Management Framework) 5.0 설치를 시작하고, 재부팅한 후 구성을 계속 진행합니다.
프라이빗 스토리지 계정에서 호스트되는 사용자 지정 스크립트를 실행하려면 어떻게 할까요?
스토리지 계정 키 및 이름을 사용하여 보호된 설정을 설정합니다. 자세한 내용은 사용자 지정 스크립트 확장을 참조하세요.
암호
Virtual Machine Scale Set에서 VM에 대한 암호를 다시 설정하려면 어떻게 해야 하나요?
마케팅 목록의 구성원을 관리할 수 있습니다.
Virtual Machine Scale Set 모델을 직접 변경합니다. 이 옵션은 API 2017-12-01 이상 버전에서만 사용할 수 있습니다.
확장 집합 모델에서 직접 관리자 자격 증명을 업데이트합니다(예: Azure Resource Explorer, PowerShell 또는 Azure CLI 사용). 확장 집합이 업데이트되면 모든 새 VM에 새 자격 증명이 있습니다. 기존 VM은 이미지로 다시 설치되는 경우에만 새 자격 증명이 포함됩니다.
VM 액세스 확장을 사용하여 암호를 다시 설정합니다. FAQ에서 설명한 대로 암호 요구 사항을 따라야 합니다.
VM 액세스 확장을 사용하면 확장에서 모델의 암호를 업데이트하지 않으므로 이미지로 다시 설치할 필요가 없습니다. 확장은 암호를 암호 또는 SSH 키 파일에 추가하는 스크립트를 실행합니다. 확장은 원래 SSH 키를 제거하지 않습니다. 확장이 업데이트되면 인스턴스를 업그레이드하여 모든 VM 인스턴스의 사용자 이름 및 암호에 업데이트를 적용합니다.
참고 항목
자동 업그레이드 정책이
manual
로 설정된 경우 개별 VM 인스턴스에서 업그레이드 작업을 수행할 인스턴스를 수동으로 선택합니다. 자동 업그레이드가Auto
로 설정되면 확장이 자동으로 업그레이드됩니다. 자세한 내용은 자동 확장 업그레이드를 참조하세요.Windows Virtual Machine Scale Set에 대해 다음 PowerShell 예제를 사용합니다.
$vmssName = "myvmss" $vmssResourceGroup = "myvmssrg" $publicConfig = @{"UserName" = "newuser"} $privateConfig = @{"Password" = "********"} $extName = "VMAccessAgent" $publisher = "Microsoft.Compute" $vmss = Get-AzVmss -ResourceGroupName $vmssResourceGroup -VMScaleSetName $vmssName $vmss = Add-AzVmssExtension -VirtualMachineScaleSet $vmss -Name $extName -Publisher $publisher -Setting $publicConfig -ProtectedSetting $privateConfig -Type $extName -TypeHandlerVersion "2.0" -AutoUpgradeMinorVersion $true Update-AzVmss -ResourceGroupName $vmssResourceGroup -Name $vmssName -VirtualMachineScaleSet $vmss
Linux Virtual Machine Scale Set에 대해 다음 Azure CLI 예제를 사용합니다.
az vmss extension set \ --resource-group myResouceGroup \ --vmss-name myScaleSet \ --publisher Microsoft.OSTCExtensions \ --name VMAccessForLinux \ --version 1.5 \ --protected-settings "{'username': 'newUser', 'password': 'newPassword'}"
네트워킹
확장 집합의 모든 VM NIC에 적용되도록 NSG(네트워크 보안 그룹)를 확장 집합에 할당할 수 있나요?
예. 네트워크 프로필의 networkInterfaceConfigurations
섹션에서 참조하여 NSG를 확장 집합에 직접 적용할 수 있습니다. 예를 들면 다음과 같습니다.
"networkProfile": {
"networkInterfaceConfigurations": [
{
"name": "nic1",
"properties": {
"primary": "true",
"ipConfigurations": [
{
"name": "ip1",
"properties": {
"subnet": {
"id": "[concat('/subscriptions/', subscription().subscriptionId,'/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Network/virtualNetworks/', variables('vnetName'), '/subnets/subnet1')]"
},
"loadBalancerInboundNatPools": [
{
"id": "[concat('/subscriptions/', subscription().subscriptionId,'/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Network/loadBalancers/', variables('lbName'), '/inboundNatPools/natPool1')]"
}
],
"loadBalancerBackendAddressPools": [
{
"id": "[concat('/subscriptions/', subscription().subscriptionId,'/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Network/loadBalancers/', variables('lbName'), '/backendAddressPools/addressPool1')]"
}
]
}
}
],
"networkSecurityGroup": {
"id": "[concat('/subscriptions/', subscription().subscriptionId,'/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Network/networkSecurityGroups/', variables('nsgName'))]"
}
}
}
]
}
동일한 구독 및 동일한 지역에서 Virtual Machine Scale Sets에 대해 VIP(가상 IP) 교환을 수행하려면 어떻게 할까요?
Azure Load Balancer가 포함된 두 개의 Virtual Machine Scale Sets가 있고 동일한 구독 및 지역에 있는 경우 각각에서 공용 IP 주소의 할당을 취소하고 다른 항목에 할당할 수 있습니다. 자세한 내용은 VIP 교환: Azure Resource Manager의 파란색-녹색 배포를 참조하세요. 하지만 리소스가 네트워크 수준에서 할당 취소되거나 할당되므로 지연이 발생할 수 있습니다. 더 빠른 옵션은 두 개의 백 엔드 풀 및 회람 규칙이 있는 Azure Application Gateway를 사용하는 것입니다. 또는 준비 및 프로덕션 슬롯 간의 빠른 전환을 지원하는 Azure App service를 사용하여 애플리케이션을 호스트할 수도 있습니다.
정적 개인 IP 주소를 할당하는 데 사용할 개인 IP 주소의 범위를 지정하려면 어떻게 하나요?
IP 주소는 사용자가 지정한 서브넷에서 선택됩니다.
Virtual Machine Scale Set IP 주소를 할당하는 방법은 항상 동적이지만 이러한 IP 주소를 변경할 수 있다는 뜻은 아닙니다. 이 경우 동적은 PUT
요청에서 IP 주소를 지정하지 않는다는 것을 의미할 뿐입니다. 서브넷을 사용하여 정적 집합을 지정합니다.
기존 Azure 가상 네트워크에 Virtual Machine Scale Set를 배포하려면 어떻게 해야 하나요?
가속화된 네트워킹에서 확장 집합을 사용할 수 있나요?
예. 가속화된 네트워킹을 사용하려면 확장 집합의 networkInterfaceConfigurations
설정에서 enableAcceleratedNetworking
을 true
로 설정합니다. 예시:
"networkProfile": {
"networkInterfaceConfigurations": [
{
"name": "niconfig1",
"properties": {
"primary": true,
"enableAcceleratedNetworking" : true,
"ipConfigurations": [
]
}
}
]
}
확장 집합에서 사용하는 DNS 서버를 구성하려면 어떻게 해야 하나요?
사용자 지정 DNS 구성을 사용하여 Virtual Machine Scale Set를 만들려면 dnsSettings
JSON 패킷을 확장 집합 networkInterfaceConfigurations
섹션에 추가합니다. 예를 들면 다음과 같습니다.
"dnsSettings":{
"dnsServers":["10.0.0.6", "10.0.0.5"]
}
각 VM에 공용 IP 주소를 할당하도록 확장 집합을 구성하려면 어떻게 해야 하나요?
공용 IP 주소를 각 VM에 할당하는 Virtual Machine Scale Set를 만들려면 Microsoft.Compute/virtualMachineScaleSets 리소스의 API 버전이 2017-03-30인지 확인하고 publicipaddressconfiguration
JSON 패킷을 확장 집합 ipConfigurations
섹션에 추가합니다. 예를 들면 다음과 같습니다.
"publicipaddressconfiguration": {
"name": "pub1",
"properties": {
"idleTimeoutInMinutes": 15
}
}
여러 애플리케이션 게이트웨이에서 작동하도록 확장 집합을 구성할 수 있나요?
예. 여러 애플리케이션 게이트웨이 백 엔드 주소 풀에 대한 리소스 ID를 확장 집합 네트워크 프로필의 ipConfigurations
섹션에 있는 applicationGatewayBackendAddressPools
목록에 추가할 수 있습니다.
확장
어떤 경우에 VM이 2개 미만인 Virtual Machine Scale Set를 만들어야 하나요?
VM이 2개 미만인 Virtual Machine Scale Set를 만드는 한 가지 이유는 Virtual Machine Scale Set의 탄력적 속성을 사용하기 위한 것입니다. 예를 들어 VM이 없는 Virtual Machine Scale Set를 배포하여 VM 실행 비용을 지불하지 않고 인프라를 정의할 수 있습니다. 그런 다음, VM을 배포할 준비가 되면 Virtual Machine Scale Set의 용량을 프로덕션 인스턴스 수로 늘릴 수 있습니다.
VM이 2개 미만인 Virtual Machine Scale Set를 만드는 또 다른 이유는 개별 VM이 있는 가용성 집합을 사용하는 것보다 가용성에 별 관심이 없는 경우입니다. Virtual Machine Scale Sets는 대체할 수 있는 미분화된 컴퓨팅 단위로 작업하는 방법을 제공합니다. 이 일관성은 Virtual Machine Scale Sets와 가용성 집합의 주요 차별 요인이기도 합니다. 다양한 상태 비저장 워크로드는 개별 단위를 추적하지 않습니다. 워크로드가 감소하면 하나의 컴퓨팅 단위로 축소하고, 워크로드가 증가하면 여러 단위로 확장합니다.
Virtual Machine Scale Set의 VM 수를 변경하려면 어떻게 해야 하나요?
Azure Portal에서 Virtual Machine Scale Set의 VM 수를 변경하려면 Virtual Machine Scale Set 속성 섹션에서 크기 조정 창을 선택하고 슬라이더 막대를 사용합니다.
특정 임계값에 도달하는 경우 사용자 지정 경고를 정의하려면 어떻게 해야 하나요?
지정된 임계값에 대한 경고를 처리하는 방법은 다소 유연한 편입니다. 예를 들어 사용자 지정 웹후크를 정의할 수 있습니다. 다음 웹후크 예제는 Resource Manager 템플릿에서 가져옵니다.
{
"type": "Microsoft.Insights/autoscaleSettings",
"apiVersion": "[variables('insightsApi')]",
"name": "autoscale",
"location": "[parameters('resourceLocation')]",
"dependsOn": [
"[concat('Microsoft.Compute/virtualMachineScaleSets/', parameters('vmSSName'))]"
],
"properties": {
"name": "autoscale",
"targetResourceUri": "[concat('/subscriptions/',subscription().subscriptionId, '/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Compute/virtualMachineScaleSets/', parameters('vmSSName'))]",
"enabled": true,
"notifications": [
{
"operation": "Scale",
"email": {
"sendToSubscriptionAdministrator": true,
"sendToSubscriptionCoAdministrators": true,
"customEmails": [
"youremail@address.com"
]
},
"webhooks": [
{
"serviceUri": "<service uri>",
"properties": {
"key1": "custommetric",
"key2": "scalevmss"
}
}
]
}
]
}
}
패치 및 작업
기존 리소스 그룹에서 확장 집합을 만들 수 있나요?
예, 가능합니다.
확장 집합을 다른 리소스 그룹으로 이동할 수 있나요?
예. 확장 집합 리소스를 새 구독 또는 리소스 그룹에 이동할 수 있습니다.
내 Virtual Machine Scale Set를 새 이미지로 업데이트하려면 어떻게 할까요? 패치는 어떻게 관리해야 하나요?
Virtual Machine Scale Set를 새 이미지로 업데이트하고 패치를 관리하려면 Virtual Machine Scale Set 업그레이드를 참조하세요.
이미지로 다시 설치 작업을 사용하여 이미지를 변경하지 않고 VM을 다시 설정할 수 있나요? (즉 VM을 새 이미지가 아닌 출하 시 설정으로 다시 설정하려고 합니다.)
예. 이미지로 다시 설치 작업을 사용하여 이미지를 변경하지 않고 VM을 다시 설정할 수 있습니다. 그러나 Virtual Machine Scale Set에서 version = latest
를 사용하여 플랫폼 이미지를 참조하는 경우 reimage
를 호출하면 VM에서 최신 운영 체제 이미지로 업데이트할 수 있습니다.
Azure Monitor 로그와 확장 집합을 통합할 수 있나요?
예, 확장 집합 VM에서 Azure Monitor 확장을 설치하여 수행할 수 있습니다. Azure CLI를 사용하는 예제는 다음과 같습니다.
az vmss extension set --name MicrosoftMonitoringAgent --publisher Microsoft.EnterpriseCloud.Monitoring --resource-group Team-03 --vmss-name nt01 --settings "{'workspaceId': '<your workspace ID here>'}" --protected-settings "{'workspaceKey': '<your workspace key here'}"
Azure Portal의 Log Analytics 작업 영역에서 필요한 workspaceId
및 workspaceKey
를 찾을 수 있습니다. 개요 페이지에서 설정 타일을 선택합니다. 위쪽에서 연결된 원본 탭을 선택합니다.
참고 항목
확장 집합 upgradePolicy
가 manual로 설정되면 이에 대한 업그레이드를 호출하여 확장을 집합의 모든 VM에 적용해야 합니다. Azure CLI에서 이는 az vmss update-instances
입니다.
참고 항목
이 문서는 Log Analytics 대신 Azure Monitor 로그라는 용어를 사용하도록 최근에 업데이트되었습니다. 로그 데이터는 여전히 Log Analytics 작업 영역에 저장되며 동일한 Log Analytics 서비스에 의해 계속 수집 및 분석됩니다. Azure Monitor에서 로그의 역할을 보다 잘 반영하기 위해 용어를 업데이트하고 있습니다. 자세한 내용은 Azure Monitor 용어 변경을 참조하세요.
문제 해결
부팅 진단을 켜려면 어떻게 하나요?
부팅 진단을 켜려면 먼저 스토리지 계정을 만듭니다. 그런 다음, 이 JSON 블록을 Virtual Machine Scale Set virtualMachineProfile
에 배치하고 해당 Virtual Machine Scale Set를 업데이트합니다.
"diagnosticsProfile": {
"bootDiagnostics": {
"enabled": true,
"storageUri": "http://yourstorageaccount.blob.core.windows.net"
}
}
새 VM이 만들어지면 VM의 InstanceView
속성에 스크린샷의 세부 정보가 표시됩니다. 예를 들면 다음과 같습니다.
"bootDiagnostics": {
"consoleScreenshotBlobUri": "https://o0sz3nhtbmkg6geswarm5.blob.core.windows.net/bootdiagnostics-swarmagen-4157d838-8335-4f78-bf0e-b616a99bc8bd/swarm-agent-9574AE92vmss-0_2.4157d838-8335-4f78-bf0e-b616a99bc8bd.screenshot.bmp",
"serialConsoleLogBlobUri": "https://o0sz3nhtbmkg6geswarm5.blob.core.windows.net/bootdiagnostics-swarmagen-4157d838-8335-4f78-bf0e-b616a99bc8bd/swarm-agent-9574AE92vmss-0_2.4157d838-8335-4f78-bf0e-b616a99bc8bd.serialconsole.log"
}
기타 문제를 해결하는 방법
Virtual Machine Scale Sets의 일반적인 문제 해결 페이지를 참조하세요.
가상 머신 속성
여러 번 호출하지 않고도 각 VM에 대한 속성 정보를 얻으려면 어떻게 합니까? 예를 들어 Virtual Machine Scale Set에서 100개의 VM 각각에 대해 장애 도메인을 얻으려면 어떻게 해야 할까요?
다음 리소스 URI에서 GET
REST API를 수행하여 ListVMInstanceViews
를 호출할 수 있습니다.
/subscriptions/<subscription_id>/resourceGroups/<resource_group_name>/providers/Microsoft.Compute/virtualMachineScaleSets/<scaleset_name>/virtualMachines?$expand=instanceView&$select=instanceView
확장 집합에서 최대 분산(platformFaultDomainCount = 1)을 사용하는 경우 장애 도메인이 반환되지 않습니다. 이 설정에 사용되는 장애 도메인의 수는 보장되지 않기 때문입니다.
Virtual Machine Scale Set의 다른 VM에 다른 확장 인수를 전달할 수 있나요?
아니요, 확인할 수 없습니다. 그렇지만 확장은 컴퓨터 이름과 같이 실행 중인 VM의 고유한 속성에 따라 작동할 수 있습니다. 또한 확장은 http://169.254.169.254
에 있는 인스턴스 메타데이터를 쿼리하여 VM에 대한 자세한 정보를 가져올 수 있습니다.
Virtual Machine Scale Set VM 컴퓨터 이름과 VM ID 간에 차이(예: 0, 1, 3)가 있는 이유는 무엇인가요?
차이는 Virtual Machine Scale Set overprovision
속성이 기본값인 true
로 설정되어 있기 때문입니다. 오버프로비전이 true
로 설정되면 요청된 것보다 더 많은 VM이 만들어집니다. 그런 후에 추가 VM은 삭제됩니다. 이 경우 배포 안정성은 향상되지만 연속 명명 및 연속 NAT(Network Address Translation) 규칙이 손상됩니다.
이 속성을 false
로 설정할 수 있습니다. 소규모 Virtual Machine Scale Sets의 경우 배포 안정성은 크게 영향을 받지 않습니다.
Virtual Machine Scale Set에서 VM을 삭제하는 것과 VM의 할당을 취소하는 것의 차이점은 무엇인가요? 언제 다른 하나를 선택해야 합니까?
주요 차이점은 deallocate
에서 VHD(가상 하드 디스크)를 삭제하지 않는다는 것입니다. stop deallocate
실행과 관련된 스토리지 비용이 있습니다. 다음과 같은 이유 중 하나로 두 가지 방법 중 하나를 사용할 수 있습니다.
- Compute 비용은 더 이상 지불하지 않고, VM의 디스크 상태는 유지하려고 합니다.
- Virtual Machine Scale Set를 스케일 아웃하는 것보다 더 빠르게 VM 집합을 시작하려고 합니다.
- 이 시나리오와 관련하여 사용자 고유의 자동 크기 조정 엔진을 만들고 더 빠른 엔드투엔드 확장을 원했을 수 있습니다.
- 장애 도메인이나 업데이트 도메인 간에 고르게 분산되지 않은 Virtual Machine Scale Set가 있습니다. 이 고르지 않은 배포는 VM을 선택적으로 삭제했거나 오버프로비전 후에 VM이 삭제되었기 때문일 수 있습니다. Virtual Machine Scale Set에 대해
stop deallocate
를 실행한 후start
를 실행하면 장애 도메인 또는 업데이트 도메인 간에 VM이 균일하게 분산됩니다.
Virtual Machine Scale Set 인스턴스의 스냅샷을 생성하려면 어떻게 할까요?
Virtual Machine Scale Set의 인스턴스에서 스냅샷을 만듭니다. 예를 들면 다음과 같습니다.
$rgname = "myResourceGroup"
$vmssname = "myVMScaleSet"
$Id = 0
$location = "East US"
$vmss1 = Get-AzVmssVM -ResourceGroupName $rgname -VMScaleSetName $vmssname -InstanceId $Id
$snapshotconfig = New-AzSnapshotConfig -Location $location -AccountType Standard_LRS -OsType Windows -CreateOption Copy -SourceUri $vmss1.StorageProfile.OsDisk.ManagedDisk.id
New-AzSnapshot -ResourceGroupName $rgname -SnapshotName 'mySnapshot' -Snapshot $snapshotconfig
스냅샷에서 관리 디스크를 만듭니다. 예를 들면 다음과 같습니다.
$snapshotName = "mySnapshot"
$snapshot = Get-AzSnapshot -ResourceGroupName $rgname -SnapshotName $snapshotName
$diskConfig = New-AzDiskConfig -AccountType Premium_LRS -Location $location -CreateOption Copy -SourceResourceId $snapshot.Id
$osDisk = New-AzDisk -Disk $diskConfig -ResourceGroupName $rgname -DiskName ($snapshotName + '_Disk')