비고
이 문서에서는 Uniform 오케스트레이션 모드에서 실행되는 가상 머신 확장 집합을 다룹니다. 새 워크로드에 유연한 오케스트레이션을 사용하는 것이 좋습니다. 자세한 내용은 Azure의 Virtual Machine Scale Sets에 대한 오케스트레이션 모드를 참조하세요.
확장 집합의 VM(가상 머신) 인스턴스에서 애플리케이션을 실행하려면 먼저 애플리케이션 구성 요소 및 필요한 파일을 설치해야 합니다. 이 문서에서는 확장 집합의 인스턴스에 대한 사용자 지정 VM 이미지를 빌드하거나 기존 VM 인스턴스에서 설치 스크립트를 자동으로 실행하는 방법을 소개합니다. 확장 집합에서 애플리케이션 또는 OS 업데이트를 관리하는 방법도 알아봅니다.
VM 애플리케이션을 사용하여 앱 설치
Azure VM 애플리케이션은 Azure VM (Virtual Machines), VMSS(Virtual Machine Scale Sets)에서 애플리케이션을 패키지, 관리 및 배포하는 간소화되고 확장 가능하며 안전한 방법을 제공합니다. VM 애플리케이션은 Azure 전체에서 도구, 에이전트, AI Apps, 보안 구성 요소 및 LOB(기간 업무) 애플리케이션을 배포하는 데 가장 적합한 방법입니다. Azure VM에서 AI, 안전하고, 확장성이 높고, 대기 시간이 짧고, 규격 워크로드를 배포하도록 설계되었습니다.
주요 이점:
-
중앙 집중식 및 유연한 애플리케이션 관리:
- 패키지 한 번: 어디서나 배포: ZIP, MSI 또는 EXE 형식으로 애플리케이션을 패키지하고 Azure Compute 갤러리에서 중앙에서 관리합니다.
- 버전 제어: 여러 버전의 애플리케이션을 유지 관리하여 팀이 필요에 따라 최신 또는 특정 버전을 배포할 수 있습니다.
-
원활한 공유 및 액세스 제어
- Tenant-Wide 공유: 팀 내에서 또는 전체 조직(테넌트)에서 애플리케이션을 공유합니다.
- 통합 RBAC: Azure Role-Based RBAC(Access Control)를 사용하여 게시 및 배포 액세스를 제어합니다.
-
안정적이고 사용자 지정 가능한 배포
- 개별 앱 제어: 애플리케이션을 독립적으로 설치, 업데이트 또는 삭제합니다. VM 이미지를 다시 빌드할 필요가 없습니다.
- 사용자 지정 가능한 작업: 다시 부팅 처리를 포함하여 애플리케이션에 대한 설치, 업데이트 및 삭제 작업을 사용자 지정합니다.
- Built-In 오류 처리: VM 애플리케이션 실패를 VM 실패에 연결하여 복원력 있는 배포를 보장합니다.
-
확장 가능하고 Low-Latency 분배
- 전역 및 Intra-Region 복제: 대기 시간을 줄이고 복원력을 향상시키기 위해 지역 간 및 지역 내에서 애플리케이션을 자동으로 복제합니다. AzCopy 또는 수동 전송은 필요하지 않습니다.
- High-Scale 시나리오에 최적화됨: 대규모 배포 중에도 짧은 생성 대기 시간을 달성합니다.
-
설계에 따라 보안 및 준수
- 정책 기반 적용: Azure Policy를 사용하여 플릿 전체에 애플리케이션 존재 및 구성을 적용합니다.
- 보안 배포: 인터넷 기반 다운로드 및 복잡한 프라이빗 링크 설정을 사용하지 마세요. 잠긴 환경에 적합합니다.
-
광범위한 플랫폼 지원
- VM 및 확장 집합: 완전한 지원을 포함하여 개별 VM, 유연한 확장 집합, 균일한 확장 집합에 배포합니다.
- 블록 Blob 지원: 청크 업로드 및 백그라운드 스트리밍에 Azure 블록 Blob을 사용하여 대규모 애플리케이션 패키지를 효율적으로 처리합니다.
VM 앱 만들기 및 배포
사용자 지정 VM 이미지 빌드
Azure 플랫폼 이미지 중 하나를 사용하여 확장 집합에서 인스턴스를 만드는 경우 다른 소프트웨어가 설치되거나 구성되지 않습니다. 이러한 구성 요소의 설치를 자동화할 수 있지만 확장 집합에 VM 인스턴스를 프로비전하는 데 걸리는 시간이 추가됩니다. VM 인스턴스에 많은 구성 변경 내용을 적용하는 경우 해당 구성 스크립트 및 태스크에 대한 관리 오버헤드가 있습니다.
구성 관리 및 VM 프로비전 시간을 줄이기 위해 확장 집합에서 인스턴스가 프로비전되는 즉시 애플리케이션을 실행할 준비가 된 사용자 지정 VM 이미지를 만들 수 있습니다. 사용자 정의 VM 이미지를 스케일 세트와 함께 생성하고 사용하는 방법에 대한 자세한 내용은 다음 자습서를 참조하세요.
사용자 지정 스크립트 확장을 사용하여 앱 설치
사용자 지정 스크립트 확장은 Azure VM에서 스크립트를 다운로드하고 실행합니다. 이 확장은 배포 후 구성, 소프트웨어 설치 또는 기타 구성/관리 작업에 유용합니다. 스크립트는 Azure Storage 또는 GitHub에서 다운로드하거나 확장 런타임에서 Azure Portal에 제공할 수 있습니다. 사용자 지정 스크립트 확장을 사용하여 앱을 설치하는 방법에 대한 자세한 내용은 다음 자습서를 참조하세요.
PowerShell DSC를 사용하여 Windows VM에 앱 설치
PowerShell DSC(필요한 상태 구성) 는 대상 머신의 구성을 정의하는 관리 플랫폼입니다. DSC 구성은 컴퓨터에 설치할 내용과 호스트를 구성하는 방법을 정의합니다. LCM(로컬 구성 관리자) 엔진은 푸시된 구성에 따라 요청된 작업을 처리하는 각 대상 노드에서 실행됩니다.
PowerShell DSC 확장을 사용하면 PowerShell을 사용하여 확장 집합에서 VM 인스턴스를 사용자 지정할 수 있습니다. 다음 예제는 다음과 같습니다.
- GitHub에서 DSC 패키지를 다운로드하도록 VM 인스턴스에 지시합니다. https://github.com/Azure-Samples/compute-automation-configurations/raw/master/dsc.zip
- 설치 스크립트를 실행할 확장을 설정합니다.
configure-http.ps1
- Get-AzVmss를 사용하여 확장 집합에 대한 정보를 가져옵니다.
- Update-AzVmss를 사용하여 VM 인스턴스에 확장을 적용합니다.
DSC 확장은 myResourceGroup이라는 리소스 그룹의 myScaleSet VM 인스턴스에 적용됩니다. 다음과 같이 고유한 이름을 입력합니다.
# Define the script for your Desired Configuration to download and run
$dscConfig = @{
"wmfVersion" = "latest";
"configuration" = @{
"url" = "https://github.com/Azure-Samples/compute-automation-configurations/raw/master/dsc.zip";
"script" = "configure-http.ps1";
"function" = "WebsiteTest";
};
}
# Get information about the scale set
$vmss = Get-AzVmss `
-ResourceGroupName "myResourceGroup" `
-VMScaleSetName "myScaleSet"
# Add the Desired State Configuration extension to install IIS and configure basic website
$vmss = Add-AzVmssExtension `
-VirtualMachineScaleSet $vmss `
-Publisher Microsoft.Powershell `
-Type DSC `
-TypeHandlerVersion 2.24 `
-Name "DSC" `
-Setting $dscConfig
# Update the scale set and apply the Desired State Configuration extension to the VM instances
Update-AzVmss `
-ResourceGroupName "myResourceGroup" `
-Name "myScaleSet" `
-VirtualMachineScaleSet $vmss
확장 집합의 업그레이드 정책이 수동인 경우 Update-AzVmssInstance를 사용하여 VM 인스턴스를 업데이트합니다. 이 cmdlet은 업데이트된 확장 집합 구성을 VM 인스턴스에 적용하고 애플리케이션을 설치합니다.
cloud-init를 사용하여 Linux VM에 앱 설치
Cloud-init 는 Linux VM을 처음으로 부팅할 때 사용자 지정하는 널리 사용되는 방법입니다. Cloud-init를 사용하여 패키지를 설치하고 파일을 쓰거나, 사용자 및 보안을 구성할 수 있습니다. 초기 부팅 프로세스 중에 cloud-init가 실행되면 구성을 적용하기 위한 추가 단계나 필요한 에이전트가 없습니다.
Cloud-init는 배포에서도 작동합니다. 예를 들어, 패키지를 설치하는 데 apt-get install 또는 yum install은 사용하지 않습니다. 대신 설치할 패키지 목록을 정의할 수 있습니다. cloud-init에서 선택한 배포판의 기본 패키지 관리 도구를 자동으로 사용합니다.
예제cloud-init.txt 파일을 비롯한 자세한 내용은 cloud-init를 사용하여 Azure VM 사용자 지정을 참조하세요.
확장 집합을 만들고 cloud-init 파일을 사용하려면 --custom-data
명령에 매개 변수를 추가하고 cloud-init 파일의 이름을 지정합니다. 다음 예제에서는 myResourceGroup에서 myScaleSet이라는 확장 집합을 만들고 cloud-init.txt파일을 사용하여 VM 인스턴스를 구성합니다. 다음과 같이 고유한 이름을 입력합니다.
중요합니다
2023년 11월부터 PowerShell 및 Azure CLI를 사용하여 만든 Virtual Machine 확장 집합은 오케스트레이션 모드가 지정되지 않은 경우 기본적으로 유연한 오케스트레이션 모드로 설정됩니다. 이 변경 내용 및 조치에 대한 자세한 정보는 Virtual Machine Scale Sets PowerShell/CLI 고객을 위한 중요 변경 사항 - Microsoft Community Hub로 이동하세요.
az vmss create \
--resource-group myResourceGroup \
--name myScaleSet \
--image Ubuntu2204 \
-–orchestration-mode uniform \
--upgrade-policy-mode automatic \
--custom-data cloud-init.txt \
--admin-username azureuser \
--generate-ssh-keys
OS 업데이트를 사용하여 애플리케이션 설치
새 OS 릴리스를 사용할 수 있는 경우 새 사용자 지정 이미지를 빌드하거나 사용하고 OS 업그레이드를 규모 집합에 배포할 수 있습니다. 각 VM 인스턴스는 지정한 최신 이미지로 업그레이드됩니다. 미리 설치된 애플리케이션, 사용자 지정 스크립트 확장 또는 PowerShell DSC와 함께 사용자 지정 이미지를 사용하여 업그레이드를 수행할 때 애플리케이션을 자동으로 사용할 수 있도록 할 수 있습니다. 버전 호환성 문제가 없도록 이 프로세스를 수행할 때 애플리케이션 유지 관리를 계획해야 할 수 있습니다.
애플리케이션이 미리 설치된 사용자 지정 VM 이미지를 사용하는 경우 애플리케이션 업데이트를 배포 파이프라인과 통합하여 새 이미지를 빌드하고 확장 집합 전체에 OS 업그레이드를 배포할 수 있습니다. 이 방법을 사용하면 파이프라인이 최신 애플리케이션 빌드를 선택하고, VM 이미지를 만들고 유효성을 검사한 다음, 확장 집합에서 VM 인스턴스를 업그레이드할 수 있습니다. 사용자 지정 VM 이미지에서 애플리케이션 업데이트를 빌드하고 배포하는 배포 파이프라인을 실행하려면 Packer 이미지를 만들고 Azure DevOps Services를 사용하여 배포하거나 Spinnaker 또는 Jenkins와 같은 다른 플랫폼을 사용할 수 있습니다.
다음 단계
확장 집합에 애플리케이션을 빌드하고 배포할 때 확장 집합 디자인 개요를 검토할 수 있습니다. 확장 집합을 관리하는 방법에 대한 자세한 내용은 PowerShell을 사용하여 확장 집합을 관리하세요.