Cloud/MS Azure

Virtual Machine Scale Set(가상 머신 확장 집합)

frozen0316 2020. 2. 17. 09:33
반응형

1. 가상 머신 확장 집합이란?

① Azure 가상 머신 확장 집합을 사용하면 부하 분산된 동일한 VM 그룹을 만들고 관리할 수 있습니다.

② VM 인스턴스의 수는 요구 또는 정의된 일정에 따라 자동으로 늘리거나 줄일 수 있습니다.

③ 확장 집합은 애플리케이션에 고가용성을 제공하고 많은 수의 VM을 중앙에서 관리, 구성 및 업데이트를 할 수 있습니다.

④ 가상 머신 확장 집합을 사용하면 컴퓨팅, 빅 데이터 및 컨테이너 작업과 같은 영역에 대한 대규모 서비스를 구축할 수 있습니다.

 

2. 가상 머신 확장 집합을 사용하는 이유?

1) 손쉬운 여러 VM 만들기 및 관리

애플리케이션을 실행하는 VM을 많이 사용하는 경우 환경 전체에서 일관된 구성을 유지해야 합니다.

신뢰할 수 있는 애플리케이션 성능을 위해 VM 크기, 디스크 구성 및 애플리케이션 설치가 모든 VM에서 일치해야 합니다.

 

2) 고가용성 및 애플리케이션 복원력 제공

확장 집합을 사용하면 동일한 기본 OS 이미지 및 구성에 모든 VM 인스턴스가 생성을 하면 됩니다.

확장 집합은 L4 트래픽 분산에 Azure 부하 분산 장치를 사용하고 L7 계층 트래픽 분산 및 SSL 종료에는 Azure Application Gateway를 사용하도록 지원합니다.

 

3) 리소스 수요 변환에 따라 자동으로 애플리케이션 크기 조정

자동 크기 조정은 수요가 낮을 때 애플리케이션을 실행하는 불필요한 VM 인스턴스의 수를 최소화합니다.

수요가 증가하고 추가 VM 인스턴스가 자동으로 추가될 때 고객이 허용 가능한 수준의 성능을 계속 확보 가능합니다.

 

4) 대규모 작업

확장 집합은 최대 1,000개의 VM 인스턴스를 지원합니다.

사용자 고유의 사용자 지정 VM 이미지를 만들고 업로드하는 경우에는 600개의 VM 인스턴스로 제한합니다.

 

3. 가상 머신과 가상 머신 확장 집합의 차이점

시나리오 수동적인 VM 그룹 가상 머신 확장 집합
추가 VM 인스턴스 추가 수동으로 만들고 구성하고 보장 자동으로 중앙 구성에서 생성
트래픽 분산 및 배포 수동으로 Azure 부하 분산 장치 또는 Application Gateway를 만들고 구성 자동으로 Azure 부하 분산 장치 또는 Application Gateway를 생성하고 통합
고가용성 및 중복성 수동으로 가용성 집합을 만들거나 가용성 영역 전체에 VM을 배포하고 추적 자동으로 가용성 영역 또는 가용성 집합에서 VM 인스턴스를 배포
VM 크기 조정 수동 모니터링 및 Azure Automation 자동으로 호스트 메트릭, 인 게스트(in-guest) 메트릭, Application Insight 또는 일정에 따라 크기 조정

 

4. 가상 머신 확장 집합 구성도

 

5. 가상 머신 확장 집합 생성

1) 가상 머신 이미지 생성

가상 머신 확장 집합을 효율적으로 활용하기 위해서는 이미지를 생성하여 똑같은 가상 머신을 확장해야 합니다. 만약에 Web 서버를 운영한다고 한다면 부하가 발생 되었을 때 똑같은 환경으로 확장 되어야만 클라이언트에게 원활한 서비스를 제공할 수 있습니다. 이를 위해 이미지를 생성해야 합니다.

 

ⓘ 중요
가상 머신 확장 집합을 생성할 같은 리소스 그룹에서 진행해야 합니다.
이미지로 사용할 가상 머신을 생성하고 가상 머신에 로그인 후에 진행합니다.

 

저는 Windows Server 2016으로 진행합니다.. 설정 과정은 생략합니다...

 

실행에서 sysprep을 입력하고 OK 버튼을 클릭합니다.

 

 

sysprep(윈도우 시스템의 고유한 정보 및 SID나 하드웨어 설정을 초기화)이 존재하는 경로로 윈도우 창이 열리게 되고 sysprep을 더블 클릭합니다.

 

Generalize(일반화)를 체크하고 Shutdown Option은 shutdown으로 선택하고 OK 버튼을 클릭합니다.

Sysprep이 완료되면 가상 머신이 자동으로 종료됩니다.

 

Azure에서 가상 머신을 선택하고 캡쳐를 클릭합니다.

 

가상 머신 이미지의 이름을 지정하고, 이미지를 만든 후 이 가상 머신을 자동으로 삭제(삭제를 하지 않으면 가상 머신은 존재하나 실행할 수 없습니다.)를 체크하고 가상 머신의 이름을 입력하고 만들기 버튼을 클릭합니다.

 

※ 이미지를 만들기 전에 가상머신에서 sysprep으로 일반화(generalize)를 하지 않으면 가상머신이 시작되지 않는다고 경고하고 있습니다.

 

실제로 일반화를 진행하지 않고 가상 머신을 생성한 결과 가상 머신이 시작되지 않습니다.

 

화면 하단에 아래와 같이 이미지 생성 중인 것을 확인할 수 있습니다.

 

리소스 그룹에 보면 이미지(scale-set-vm-image-20200206123947)가 생성된 것을 확인할 수 있습니다.

 

참조 : https://docs.microsoft.com/ko-kr/azure/virtual-machines/windows/capture-image-resource

 

Azure에서 관리 되는 이미지 만들기

Azure에서 일반화된 VM 또는 VHD의 관리 이미지를 만듭니다. 이미지를 사용하여 관리 디스크를 사용하는 여러 VM을 만들 수 있습니다.

docs.microsoft.com

2) 가상 머신 확장 집합 만들기

모든 서비스를 클릭하고 추가를 클릭합니다.

 

Azure Marketplace에서 virtual machine scale set을 검색합니다.

 

Virtual machine scale set을 클릭합니다.

 

만들기 버튼을 클릭합니다.

 

가상 머신 확장 집합 이름(WebScaleSet)을 지정하고 운영체제 디스크 이미지에서 모든 공용 및 개인 이미지 찾아보기를 클릭합니다.

 

내 항목을 클릭하고 위에서 생성한 이미지(scale-set-vm-image-20200206123947)를 선택합니다.

 

리소스 그룹(scale-set)가상 머신의 사용자 이름, 사용자 암호를 지정합니다.

 

인스턴스 수(0)인스턴스 크기를 지정합니다.

 

인스턴스 수 : 초기 확장 집합의 가상 머신 수입니다.(0~1000)

인스턴스 크기 : 확장 집합의 각 가상 머신 크기를 지정합니다.

관리 디스크 사용 : 가상 머신 확장 집합은 디스크를 사용하여 VM 인스턴스의 운영 체제, 애플리케이션 및 데이터를 저장합니다.(관리 디스크는 On-premise 환경에서 서버에 디스크를 추가 하듯이 가상 머신에 연결할 수 있습니다.)

 

100개 인스턴스가 넘는 크기 조정 사용을 지정하고 분산 알고리즘은 대한민국에서는 현재 가용성 영역이 지원되지 않기 때문에 최대 분산을 선택하고 자동 크기 조정은 가상 머신 확장 집합을 생성할 때 지정을 하거나 생성 후에 설정이 가능합니다. 테스트 용도이기 때문에 사용으로 체크하고 정책을 지정합니다.

 

100개 인스턴스가 넘는 크기 조정 사용 :

 - 아니요 : 확장 집합이 1개 배치 그룹으로 제한되고 최대 용량이 100

 - : 확장 집합이 여러 배치 그룹에 걸쳐 있을 수 있으며, 용량이 최대 1,000개까지 허용되지만 확장 집합의 가용성 특성이 변경됩니다.

분산 알고리즘 : 대부분의 경우 최적의 분산을 제공하므로 대부분의 워크로드에 대해 최대 분산을 사용하여 배포하는 것이 좋습니다. 별개의 하드웨어 격리 단위에 복제본을 분산시켜야 하는 경우 가용성 영역에 전체적으로 분산시키고 각 영역 내에서 최대 분산을 활용하는 것이 좋습니다.

 - 최대 분산 :  각 영역 내에서 가능한 많은 장애 도메인에서 VM을 분산합니다. 이 분산은 영역당 5개의 장애 도메인보다 크거나 작을 수 있습니다.

 - 고정 분산 : 영역당 정확히 5개의 장애 도메인에 VM을 분산합니다. 확장 집합이 할당 요청을 충족하는 영역당 5개의 개별 장애 도메인을 찾을 수 없으므로 요청이 실패합니다.

자동 크기 조정 : CPU 및 여러 기준으로 인스턴스 수를 자동으로 조정합니다.

Collect diagnostic logs from Autoscale : Autoscale에서 진단 로그를 수집할지 선택합니다.

 

부하 분산 장치는 가상 머신 확장 집합 앞에 생성이 됩니다. 부하 부산 장치를 선택하고 부하 분산 장치의 공용 IP 이름을 설정하고 도메인 이름 레이블을 지정해주고 가상 네트워크 및 서브넷 선택합니다. 인스턴스당 공용 IP 주소는 Scale Out으로 추가 되는 가상 머신에 대해 공용 IP를 설정할 것인지 선택하는 옵션입니다. 부하 분산 장치를 이용한 테스트를 위해 끄기를 선택합니다.

 

부하 분산 옵션 선택어플리케이션 게이트웨이부하 분산 장치 중에 하나를 선택합니다.

공용 IP 주소 이름 : 확장 집합 앞에 있는 부하 분산 장치에서 사용할 공용 IP 주소를 입력합니다.

도메인 이름 레이블 : 확장 집합 앞에 있는 부하 분산 장치의 도메인 이름을 입력합니다.

가상 네트워크 구성

 - 가상 네트워크 : 확장 집합에서 사용할 가상 네트워크를 구성합니다.

 - 서브넷 : 확장 집합에서 사용할 서브넷을 구성합니다.

인스턴스당 공용 IP 주소 : 확장 집합에서 각 인스턴스에 공용 IP 할당 여부를 체크합니다.

 

NSG(네트워크 보안 그룹)고급으로 선택하고 네트워크 보안 그룹 구성을 하고 부트 진단, 시스템이 할당한 관리 ID를 선택 후 만들기 버튼을 클릭합니다.

 

가상 머신 확장 집합이 정상적으로 생성된 것을 확인할 수 있습니다.

 

6. 가상 머신 확장 집합

1) 가상 머신 확장 집합 Scale-Up / Scale-Down

[크기]에서 수동으로 성능을 Scale-Up 하도록 크기를 선택할 수 있습니다.

 

[업그레이드 정책]에서 수동 또는 자동, 폴링 방식으로 업그레이드가 가능합니다.(가용성 그룹에서는 아직 자동 업그레이드 방식은 지원하지 않음)

 

2) 가상 머신 확장 집합 Scale-Out / Scale-In

[확장중]에서는 설정한 임계치에 따라 수동 또는 자동으로 Scale-Out이 되거나 Scale-In이 진행됩니다.

 

[확장중]에서 실행 기록을 클릭하여 로그를 살펴보면 설정한 임계치에 따라 자동 증가 되거나 자동 감소 되는 것을 확인할 수 있습니다.

 

참조 : https://docs.microsoft.com/ko-kr/azure/virtual-machine-scale-sets/overview?toc=%2Fazure%2Fvirtual-machines%2Fwindows%2Ftoc.json&bc=%2Fazure%2Fvirtual-machines%2Fwindows%2Fbreadcrumb%2Ftoc.json

불러오는 중입니다...

3) 가상 머신 확장 집합 인스턴스 원격 접속

생성된 인스턴스에 접속하기 위해서는 RDP로 접속을 시도하면 됩니다.

 

[부하분산장치]에서 인바운드 NAT 규칙을 클릭하고 인스턴스를 클릭합니다.

 

부하 분산 장치에서 자동으로 해당 인스턴스에 포트(50000)를 할당합니다.

 

원격 데스크톱 연결을 통해 생성된 인스턴스에 접근합니다.

 

4) 관리 디스크 연결

[스토리지]에서 데이터 디스크 추가 버튼을 클릭하고 용량을 지정하고 스토리지 계정 형식을 선택하고 호스트 캐싱 방식(읽기/쓰기)을 선택하고 저장 버튼을 클릭합니다.

 

[컴퓨터 관리]에서 디스크 관리를 클릭하고 새로 추가된 디스크를 GPT 방식으로 포맷합니다.

E 드라이브로 디스크가 추가된 것을 확인할 수 있습니다.

 

5) 가상 머신 확장 집합 이미지 업데이트

(1) 이미지 리소스 경로 변경

리소스 그룹(scale-set)에서 캡쳐를 한 이미지를 클릭하고 개요를 클릭하여 리소스 ID를 확인하고 복사합니다.

 

(2) 기존 이미지 리소스 ID를 새로운 이미지 리소스 ID로 변경

※ PowerShell에 접근하기 위해서는 스토리지 계정을 다른 리전에 생성해야 합니다.

 

Azure PowerShell

update-AzVmss

-ResourceGroupName "scale-set"

-VMScaleSetName "WebScaleSet"

-ImageReferenceId /subscriptions/f5251f86-3aa1-42e3-8c3e-3eec5a841efc/resourceGroups/scale-set/providers/Microsoft.Compute/images/test-vm-image-latest

ResourceGroupName : 리소스 그룹명

VMScaleSetName : 가상 머신 확장 집합명

ImageReferenceId : 이미지 리소스 ID

 

명령어가 정상적으로 적용된 것을 확인할 수 있습니다. 이미지의 리소스 ID가 변경되었는지 확인합니다.

 

(3) 인스턴스 업그레이드

[인스턴스]를 클릭하고 해당 인스턴스를 선택업그레이드를 클릭합니다.

 

를 클릭합니다. 업그레이드는 빠르면 수분, 오래 걸리면 수십분이 걸립니다.

 

6) 가상 머신 확장 집합 확장 사용

Azure 확장을 이용하여 작성할 PowerShell을 등록하여 Scale-Out으로 생성되는 가상 머신에 작성한 PowerShell을 적용할 수 있습니다.

 

왼쪽 메뉴에서 [확장]을 클릭합니다.

 

추가를 클릭합니다.

 

메뉴에서 Custom Script Extension을 클릭합니다.

 

만들기 버튼을 클릭합니다.

 

폴더 아이콘을 클릭하여 작성한 Powershell(iis_configure.ps1) 파일을 추가하고 확인 버튼을 클릭합니다.

 

정상적으로 Powershell 파일이 추가되었는지 확인합니다. Scale-Out이 되면 가상 머신이 처음 부팅 될 때 위 스크립트가 적용되어 실행됩니다.

 

반응형