※ 클라우드 서비스

Virtual Machine은 IaaS의 일부이다. 

IaaS 는 인터넷을 통해 프로비저닝 및 관리되는 컴퓨팅 인프라로, 수요에 따라 신속하게 스케일 업 및 스케일 다운하여 사용한 것에 대해서만 비용을 지불할 수 있다.

 

Virtual Machine

① 기본 개념

  • VNet
    Azure에서는 가상 네트워크(VNet)를 사용하여 외부로부터 가상 머신을 보호할 수 있다. 동일한 VNet의 VM 및 서비스는 서로 액세스할 수 있다.

  • VM 위치 설정
    Azure는 전 세계에 서버와 디스크로 가득 찬 데이터 센터를 보유하고 있다. 이러한 데이터 센터는 중복성과 가용성을 제공하기 위해 지리적 지역으로 그룹화 한다. (East US, North Europe, Southeast Asia..)

  • 가격 책정
    모든 VM에 대해 두 가지 구독 비용(컴퓨팅과 스토리지)이 별도로 청구된다.

    - 컴퓨팅 비용 : 예를 들면, VM을 사용한 시간에 따라 비용 청구. Linux보다 Windows가 더 비쌈
    - 스토리지 비용 : VM이 사용하는 스토리지에 대해 별도 요금이 부과됨. VM 상태와 상관없이 디스크가 사용한 스토리지에 대해 비용이 부과됨

  • Sizing
    작업량에 따라 적절한 VM 크기를 결정해야 한다. 사용 중간에 크기를 변경할 수도 있다.

목적에 따른 VM 크기 유형

  • 가상머신 스토리지
    다른 컴퓨터와 마찬가지로, VM도 운영체제, 애플리케이션 및 데이터를 저장하는 공간으로 디스크를 사용한다.
    모든 VM에는 적어도 두 개의 디스크(운영체제 디스크와 임시 디스크)가 있다.
    또, 하나 이상의 데이터 디스크가 있을 수도 있다. 모든 디스크는 VHD(가상 하드 디스크)로 저장된다.

    - 운영체제 디스크
    기본으로 등록되는 디스크로, 기본적으로 C: 드라이브로 레이블이 지정된다.
    - 임시 디스크
    단기 스토리지, 페이지나 스왑 파일 등의 데이터 저장 전용 공간. Windows에서는 기본적으로 D: 드라이브, Linux에서는 /dev/sdb 이다.
    - 데이터 디스크
    애플리케이션 데이터 또는 유지해야 하는 기타 데이터 저장
    - 관리 디스크 
    VHD. 가상화된 디스크로, Azure의 I/O 저장소 개체인 페이지 Blob에 저장된다.
    사용 가능한 디스크 유형으로는 Ultra SSD, Premium SSD, Standard SSD, Standard HDD가 있다.

  • Connection
    1. Windows 기반 VM : RDP(원격 데스크톱 프로토콜) 클라이언트를 통해 연결
    2. Linux 기반 VM : SSH(Secure SHell) 클라이언트를 통해 연결. 예를들면 PuTTY
    3. Bastion 연결 : 완전한 PaaS 서비스. SSL을 통해 Azure Portal에서 직접 VM에 연결하여 안전하고 원활한 RDP/SSH 연결이 가능하다. Bastion을 통해 연결할 때는 VM의 Public IP가 필요가 없다! 
     

② 가상머신 유지보수(재해 복구 및 백업 기술)

VM을 사용할 때, 예상하거나 예상하지 못한 오류에 대비해야 한다. (하드웨어 중지, 자연재해, 업데이트 및 업그레이드 등)

  • Availability Set
    관련 VM 그룹을 배포하는 데 사용되는 중복성과 가용성을 제공하기 위한 논리적 집합으로, 같은 Availability Set에 배치된 VM은 동일한 기능을 수행하고 동일한 소프트웨어가 설치되어 있다. 

    AS(가용성 집합)에 포함된 VM은 Update Domain 혹은 Fault Domain에 할당된다. 각 AS는 최대 3개의 FD와  20개의 UD로 구성할 수 있다. 
    - UD(Update Domain) : 동시에 다시 부팅할 수 있는 VM 그룹. 한번에 하나의 UD만 재부팅됨
    - FD(Fault Domain) : 공통 전원과 네트워크 스위치를 공유하는 VM 그룹

가상 머신을 Availability Set에 배치하더라도 운영 체제 또는 애플리케이션별 오류로부터 애플리케이션을 보호할 수는 없다. 따라서 Availability Zone을 살펴보자.

 

  • Availability Zone
    Availability Zone은 각 데이터 센터를 물리적으로 별도로 위치시킨 영역이다. 모든 AZ 사용 Region에 최소 3개의 AZ가 존재한다.

    따라서 데이터 센터 오류 발생 시 애플리케이션과 데이터를 보호할 수 있다. 

  • Scaling (Vertical, Horizontal)
    1. Vertical Scaling = "Scale Up & Scale Down"
    작업량에 따라 VM의 크기를 늘리거나 줄이는 것 ex) 주말에는 VM 크기를 줄이기
    2. Horizontal Scaling = "Scale Out & Scale In"
    작업량에 따라 VM의 숫자를 늘리거나 줄이는 것 ex) 특정 서비스가 몰리면 VM을 늘려 부하 감소 

  • VM Scale Sets
    scale set을 사용하면 부하 분산된 VM의 그룹을 손쉽게 만들고 관리할 수 있다.
    ex) 리소스 수요 변화에 따라 자동으로 애플리케이션 크기 조정(자동 크기 조정 옵션 사용), 대규모 작업(최대 1000개의 VM 인스턴스 지원) 등 ..

    사용하는 이유? 
    → 중복성과 향상된 성능을 제공하기 위해 애플리케이션은 일반적으로 여러 인스턴스 간에 분산된다. 고객은 인스턴스 중 하나에 요청을 배포하는 Load Balancer를 통해 애플리케이션에 액세스할 수 있다. 유지 관리를 수행하거나 애플리케이션 인스턴스를 업데이트해야 하는 경우, 고객은 사용 가능한 다른 애플리케이션 인스턴스에 배포되어야 한다. 또한, 추가적으로 고객 요구에 맞추려면 애플리케이션을 실행하는 애플리케이션 인스턴스의 수를 늘려야 할 수도 있다. 이럴 때 Scale Set을 통해 VM을 한꺼번에 관리할 수 있다.

  • VM Extension
    Azure VM에서 배포 후 구성 및 자동화 태스크를 제공하는 간단한 애플리케이션
    ex) 가상 머신에 소프트웨어를 설치해야 하거나, 바이러스 백신을 통해 가상 머신을 보호해야 하거나, 가상 머신 내부에 구성 스크립트가 필요한 경우

실습) Virtual Machine Management 

실습 절차는 아래와 같다.


  1. Azure 포털 및 Azure 리소스 관리자 템플릿을 사용하여 영역 복원 Azure VM 배포
  2. VM extenstion을 사용하여 Azure VM 구성
  3. Azure VM을 위해 컴퓨팅 및 스토리지 확장
  4. Azure Portal을 사용하여 Azure VM Scale Set 구축
  5. VM Extension을 사용하여 Azure VM Scale Set 구성

Task 1 : Azure VM 배포

vm0을 배포하고 그 template를 사용하여, 이름과 zone만 바꾸어 vm1을 손쉽게 배포할 수 있다.

vm0과 vm1을 배포하는데, 생성할 때 Availability Zone을 선택해서 각각 Zone1, Zone2에 포함되도록 구성한다.


Task 2 : VM extenstion을 사용하여 Azure VM 구성
이전 작업에서 배포한 두 개의 VM에 Windows Web Server(IIS)을 설치한다.

 

방법 1) 아래와 같이 명령어를 입력하는 방법 (VM0)

Set-AzVMCustomScriptExtension -ResourceGroupName az104-08-rg01 -VMName az104-08-vm0 -Location EastUS -ExtensionName "IIS" -FileURI 'https://raw.githubusercontent.com/godeploy/AZ104/master/Module08/az104-08-install_IIS.ps1' -Run 'az104-08-install_IIS.ps1'

** Set-AzVMCustomScriptExtension 명령어는 Azure VM(가상 머신)에서 스크립트를 다운로드하고 실행하도록 한다.

 

방법 2) 아래와 같이 Template에 리소스를 추가해주는 방법 (VM1)

vm1에서 Export template 탭을 찾아 Deploy를 선택한다.
Edit template를 통해 VM1의 설정을 바꿔준다.

** 이렇게 하면 VM 내부로 들어가서 설정을 바꾸지 않아도 Azure Portal에서 곧바로 VM 설정을 바꿀 수 있다.

 20번째 줄 "resources": [  바로 아래 부분에 아래 코드를 추가해준다. (customScriptExtension이라는 확장 프로그램을 추가하는 것이다.)

    {
        "type": "Microsoft.Compute/virtualMachines/extensions",
        "name": "az104-08-vm1/customScriptExtension",
        "apiVersion": "2018-06-01",
        "location": "[resourceGroup().location]",
        "dependsOn": [
            "az104-08-vm1"
        ],
        "properties": {
            "publisher": "Microsoft.Compute",
            "type": "CustomScriptExtension",
            "typeHandlerVersion": "1.7",
            "autoUpgradeMinorVersion": true,
            "settings": {
                "commandToExecute": "powershell.exe Install-WindowsFeature -name Web-Server -IncludeManagementTools && powershell.exe remove-item 'C:\\inetpub\\wwwroot\\iisstart.htm' && powershell.exe Add-Content -Path 'C:\\inetpub\\wwwroot\\iisstart.htm' -Value $('Hello World from ' + $env:computername)"
          }
        }
    },  

 

결과

추가하고 나면, 리소스가 2개로 변경되었음을 알 수 있다.

이제 VM1의 Run command 기능을 이용해 VM0(10.80.0.4)의 웹 사이트에 접근해본다.

VM0과 VM1이 잘 통신되는 것을 확인할 수 있다.


Task 3 : Azure VM을 위해 컴퓨팅 및 스토리지 확장

방법 1) Azure Portal GUI 사용하기(VM0)

(vm0) Size를 제일 작은걸로 변경하고, Disk0, Disk1 추가

vm0의 Run command 기능을 이용하여 새로 생성한 두 개의 Disk로 구성된 Z 드라이브를 생성한다.

New-StoragePool -FriendlyName storagepool1 -StorageSubsystemFriendlyName "Windows Storage*" -PhysicalDisks (Get-PhysicalDisk -CanPool $true)
New-VirtualDisk -StoragePoolFriendlyName storagepool1 -FriendlyName virtualdisk1 -Size 2046GB -ResiliencySettingName Simple -ProvisioningType Fixed
Initialize-Disk -VirtualDisk (Get-VirtualDisk -FriendlyName virtualdisk1)
New-Partition -DiskNumber 4 -UseMaximumSize -DriveLetter Z

 

방법 2) template로 변경하기 (VM1)

(vm1) 30번째 줄 수정하여 vmSize 변경, 49번째 줄에 dataDisk를 추가하여 디스크 2개를 생성

vm1의 Run command 기능을 이용하여 새로 생성한 두 개의 Disk로 구성된 Z 드라이브를 생성한다.


Task 4 : Azure Portal을 사용하여 Azure VM Scale Set 구축

 

Scale Set을 새로 생성한다.

주의사항: Region을 선택할 때, Availability Zone을 사용할 수 있는 지역을 선택한다. / PIP를 enable로 하여 부여받는다./ storage account를 생성한다.

 

Task 4의 결과 구성도


 Task 5 : VM Extension을 사용하여 Azure VM Scale Set 구성

 

아래 명령어를 로컬 컴퓨터의 Powershell에서 입력하여 Extension을 위한 파일을 다운 받는다.

Start-BitsTransfer -Source "https://raw.githubusercontent.com/godeploy/AZ104/master/Module08/az104-08-install_IIS.ps1" -Destination $home/downloads/az104-08-install_IIS.ps1

 

파일 업로드

Task 4에서 만들었던 Storage Account에 들어가 'scripts' 컨테이너를 만들어 다운로드 받은 파일을 업로드 한다.

 

Task 4에서 만들었던 Scale Sets에서 해당 Extensions 찾아서 적용

이렇게 되면 해당 scale set에 속하는 VM 들에 웹서버가 설치된다. (다운로드 받은 파일이 Windows Web Server(IIS) 설치 후, 자신의 이름이 뜨도록 하는 스크립트임.)

 

scale set에 해당하는 VM 두개를 Upgrade 해준다.


** 모든 리소스 삭제하기

Get-AzResourceGroup -Name 'az104-08*'
Get-AzResourceGroup -Name 'az104-08*' | Remove-AzResourceGroup -Force -AsJob

 

 

'Study > Cloud' 카테고리의 다른 글

AZ104 (Container, Kubernetes)  (0) 2022.08.12
AZ104 (App Services)  (0) 2022.08.12
AZ104 (Azure Storage)  (0) 2022.08.10
AZ104 (Load Balancing Services)  (0) 2022.08.10
AZ104 (NSG, ASG)  (0) 2022.08.09

+ Recent posts