적용 대상: ✔️ Linux VM ✔️ 균일 확장 집합
비고
다음 문서는 Uniform Virtual Machine Scale Sets에 대한 것입니다. 새 워크로드에 유연한 Virtual Machine Scale Sets를 사용하는 것이 좋습니다. 유연한 가상 머신 확장 집합 개요에서 이 새로운 오케스트레이션 모드에 대해 자세히 알아봅니다.
Virtual Machine Scale Set을 사용하면 자동 크기 조정 가상 머신 집합을 배포하고 관리할 수 있습니다. 확장 집합의 VM 수를 수동으로 확장하거나 CPU, 메모리 수요 또는 네트워크 트래픽과 같은 리소스 사용량에 따라 자동 크기 조정하는 규칙을 정의할 수 있습니다. 그런 다음 Azure 부하 분산 장치는 확장 집합의 VM 인스턴스에 트래픽을 분산합니다. 이 빠른 시작에서는 Virtual Machine Scale Set을 만들고 ARM 템플릿(Azure Resource Manager 템플릿)을 사용하여 샘플 애플리케이션을 배포합니다.
Azure Resource Manager 템플릿은 프로젝트의 인프라 및 구성을 정의하는 JSON(JavaScript Object Notation) 파일입니다. 템플릿은 선언적 구문을 사용합니다. 배포를 만들기 위한 프로그래밍 명령의 시퀀스를 작성하지 않고 의도하는 배포를 설명합니다.
ARM 템플릿을 사용하면 관련 리소스 그룹을 배포할 수 있습니다. 단일 템플릿에서 Virtual Machine Scale Set를 만들고, 애플리케이션을 설치하고, 자동 크기 조정 규칙을 구성할 수 있습니다. 변수 및 매개 변수를 사용하면 이 템플릿을 다시 사용하여 기존 확장 집합을 업데이트하거나 추가 확장 집합을 만들 수 있습니다. Azure Portal, Azure CLI 또는 Azure PowerShell을 통하거나 CI/CD(지속적인 통합/지속적인 업데이트) 파이프라인에서 템플릿을 배포할 수 있습니다.
환경이 필수 조건을 충족하고 ARM 템플릿을 사용하는 데 익숙한 경우 Azure에 배포 단추를 선택합니다. 템플릿이 Azure Portal에서 열립니다.
필수 조건
Azure 구독이 없는 경우, 시작하기 전에 무료 계정을 만드십시오.
템플릿 검토
이 빠른 시작에서 사용되는 템플릿은 Azure 빠른 시작 템플릿에서 나온 것입니다.
이러한 리소스는 템플릿에 정의되어 있습니다.
- Microsoft.Network/가상 네트워크
- Microsoft.Network/publicIPAddresses
- Microsoft.Network/loadBalancers
- Microsoft.Compute/virtualMachineScaleSets
- Microsoft.Insights/autoscaleSettings
스케일 세트 정의하기
템플릿을 사용하여 배율을 만들려면 적절한 리소스를 정의합니다. Virtual Machine Scale Set 리소스 유형의 핵심 부분은 다음과 같습니다.
| 재산 | 속성 설명 | 예제 템플릿 값 |
|---|---|---|
| type | 생성할 Azure 리소스 유형 | Microsoft.Compute/virtualMachineScaleSets |
| 이름 | 스케일 세트 이름 | myScaleSet |
| location | 스케일 셋을 만들 위치 | East US |
| sku.name | 각 확장 집합 인스턴스의 VM 크기 | Standard_A1 |
| sku.capacity | 처음에 만들 VM 인스턴스 수 | 2 |
| upgradePolicy.mode | 변경이 발생할 때 VM 인스턴스 업그레이드 모드 | 자동 |
| imageReference | VM 인스턴스에 사용할 플랫폼 또는 사용자 지정 이미지 | 캐노니컬 Ubuntu Server 16.04-LTS |
| osProfile.컴퓨터이름접두사 | 각 VM 인스턴스의 이름 접두사 | myvmss |
| osProfile.adminUsername | 각 VM 인스턴스의 사용자 이름 | azureuser |
| osProfile.adminPassword (관리자 비밀번호) | 각 VM 인스턴스의 암호 | P@ssw0rd! |
확장 집합 템플릿을 사용자 지정하려면 VM 크기 또는 초기 용량을 변경할 수 있습니다. 또 다른 옵션은 다른 플랫폼 또는 사용자 지정 이미지를 사용하는 것입니다.
샘플 애플리케이션 추가
확장 집합을 테스트하려면 기본 웹 애플리케이션을 설치합니다. 확장 집합을 배포할 때 VM 확장은 배포 후 구성 및 자동화 작업(예: 앱 설치)을 제공할 수 있습니다. 스크립트는 Azure Storage 또는 GitHub에서 다운로드하거나 확장 런타임에 Azure Portal에 제공할 수 있습니다. 확장 집합에 확장을 적용하려면 이전 리소스 예제에 extensionProfile 섹션을 추가합니다. 확장 프로필은 일반적으로 다음 속성을 정의합니다.
- 확장 형식
- 확장 게시자
- 확장 버전
- 구성 또는 설치 스크립트의 위치
- VM 인스턴스에서 실행할 명령
템플릿은 사용자 지정 스크립트 확장을 사용하여 Bottle, Python 웹 프레임워크 및 간단한 HTTP 서버를 설치합니다.
두 개의 스크립트가 fileUris - installserver.sh 및 workserver.py에 정의됩니다. 이러한 파일은 GitHub에서 다운로드된 다음 commandToExecute 를 실행 bash installserver.sh 하여 앱을 설치하고 구성합니다.
템플릿 배포
다음 Azure에 배포 단추를 선택하여 템플릿 을 배포할 수 있습니다. 이 단추는 Azure Portal을 열고, 전체 템플릿을 로드하고, 확장 집합 이름, 인스턴스 수 및 관리자 자격 증명과 같은 몇 가지 매개 변수를 묻는 메시지를 표시합니다.
Azure CLI를 사용하여 Resource Manager 템플릿을 배포할 수도 있습니다.
# Create a resource group
az group create --name myResourceGroup --location EastUS
# Deploy template into resource group
az deployment group create \
--resource-group myResourceGroup \
--template-uri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/python/vmss-bottle-autoscale/azuredeploy.json
VM 인스턴스에 대한 확장 집합 이름, 인스턴스 수 및 관리자 자격 증명을 제공하도록 하는 요청에 응답하십시오. 스케일 설정과 지원 리소스가 생성되는 데 몇 분이 걸립니다.
배포 유효성 검사
작동 중인 확장 집합을 확인하려면 웹 브라우저에서 샘플 웹 애플리케이션에 액세스합니다. 다음과 같이 az network public-ip 목록을 사용하여 부하 분산 장치의 공용 IP 주소를 가져옵니다.
az network public-ip list \
--resource-group myResourceGroup \
--query [*].ipAddress -o tsv
웹 브라우저에 부하 분산 장치의 공용 IP 주소를 형식으로 입력합니다 http://publicIpAddress:9000/do_work. 부하 분산 장치는 다음 예제와 같이 VM 인스턴스 중 하나에 트래픽을 분산합니다.
자원을 정리하세요
더 이상 필요하지 않은 경우 다음과 같이 az group delete를 사용하여 리소스 그룹, 확장 집합 및 모든 관련 리소스를 제거할 수 있습니다.
--no-wait 매개 변수는 작업이 완료될 때까지 대기하지 않고 프롬프트로 제어를 반환합니다.
--yes 매개 변수는 작업을 수행하는 추가 프롬프트 없이 리소스를 삭제할 것인지 확인합니다.
az group delete --name myResourceGroup --yes --no-wait
다음 단계
이 빠른 시작에서는 ARM 템플릿을 사용하여 Linux 확장 집합을 만들고 사용자 지정 스크립트 확장을 사용하여 VM 인스턴스에 기본 Python 웹 서버를 설치했습니다. 자세한 내용은 Azure Virtual Machine Scale Sets를 만들고 관리하는 방법에 대한 자습서를 계속 진행하세요.