다음을 통해 공유


자습서: Ansible을 사용하여 Azure에서 가상 머신 확장 집합 자동 크기 조정

Important

이 문서의 샘플 플레이북을 실행하려면 Ansible 2.7 이상이 필요합니다.

Azure 가상 머신 확장 집합 은 부하가 분산된 동일한 VM 그룹을 구성할 수 있는 Azure 기능입니다. 확장 집합에 대한 추가 비용은 없으며 가상 머신에서 작성됩니다. VM 인스턴스, 부하 분산 장치 또는 Managed Disk Storage와 같은 기본 컴퓨팅 리소스에 대해서만 비용을 지불합니다. 확장 집합을 사용하면 애플리케이션을 실행하고 크기를 조정할 수 있는 관리 및 자동화 계층이 제공됩니다. 개별 VM을 수동으로 만들고 관리할 수도 있습니다. 단, 확장 집합을 사용하면 두 가지 주요 이점이 있습니다. Azure에 기본 제공되며 애플리케이션 요구 사항에 맞게 가상 머신의 크기를 자동으로 조정합니다.

VM 인스턴스 수를 자동으로 조정하는 기능을 자동 크기 조정이라고 합니다. 자동 크기 조정의 이점은 관리 오버헤드를 줄여 애플리케이션의 성능을 모니터링하고 최적화한다는 것입니다. 요청 또는 정의된 일정에 따라 자동 크기 조정을 구성할 수 있습니다. Ansible을 사용하면 납득할 수 있는 수준의 성능을 정의하는 규칙을 만들어서 긍정적인 고객 경험을 제공할 수 있습니다.

이 문서에서는 다음 방법을 설명합니다.

  • 자동 크기 조정 프로필 정의
  • 되풀이 일정에 따라 자동 크기 조정
  • 앱 성능에 따라 자동 크기 조정
  • 자동 크기 조정 설정 정보 검색
  • 자동 크기 조정 설정 사용 안 함

필수 조건

  • Azure 구독: Azure 구독이 아직 없는 경우 시작하기 전에 체험 계정을 만듭니다.

일정에 따라 자동 크기 조정

확장 집합에서 자동 크기 조정을 사용하도록 설정하려면 먼저 자동 크기 조정 프로필을 정의합니다. 이 프로필은 기본, 최소 및 최대 확장 집합 용량을 정의합니다. 이러한 제한을 통해 VM 인스턴스를 지속적으로 만들지 않음으로써 비용을 제어하고, 스케일 인 이벤트에서 다시 기본 최소 수의 인스턴스와 허용 가능한 성능의 균형을 맞출 수 있습니다.

Ansible을 사용하면 특정 날짜 또는 되풀이 일정에 따라 확장 집합의 크기를 조정할 수 있습니다.

이 섹션의 플레이북 코드는 월요일 10:00마다 VM 인스턴스 수를 3으로 늘립니다.

다음 플레이북을 vmss-auto-scale.yml로 저장합니다.

---
- hosts: localhost
  vars:
    resource_group: myResourceGroup
    vmss_name: myScaleSet
    name: autoscalesetting
  tasks: 
    - name: Create autoscaling
      azure_rm_autoscale:
         resource_group: "{{ resource_group }}"
         name: "{{ name }}"
         target:
           namespace: "Microsoft.Compute"
           types: "virtualMachineScaleSets"
           name: "{{ vmss_name }}"
         enabled: true
         profiles:
         - count: '3'
           min_count: '3'
           max_count: '3'
           name: Auto created scale condition
           recurrence_timezone: Pacific Standard Time
           recurrence_frequency: Week
           recurrence_days:
              - Monday
           recurrence_mins:
              - '0'
           recurrence_hours:
              - '10'

ansible-playbook을 사용하여 플레이북 실행

ansible-playbook vmss-auto-scale.yml

성능 데이터에 따라 자동 크기 조정

애플리케이션 수요가 증가하면 확장 집합의 VM 인스턴스에 대한 부하가 증가합니다. 이 증가된 부하가 간단한 요구가 아니라 일관된 경우 확장 집합의 VM 인스턴스 수를 늘리도록 자동 크기 조정 규칙을 구성할 수 있습니다. 이러한 VM 인스턴스가 만들어지고 애플리케이션이 배포되면 확장 집합이 부하 분산 장치를 통해 트래픽을 분산하기 시작합니다. Ansible을 사용하면 CPU 사용량, 디스크 사용량, 앱 로드 시간 등 모니터링할 메트릭을 제어할 수 있습니다. 성능 메트릭 임계값, 되풀이 일정 또는 특정 날짜별로 확장 및 확장할 수 있습니다.

이 섹션의 플레이북 코드는 월요일 18:00마다 이전 10분의 CPU 워크로드를 확인합니다.

CPU 백분율 메트릭에 따라 플레이북이 다음 작업 중 하나를 수행합니다.

  • VM 인스턴스 수를 4개로 확장
  • VM 인스턴스 수를 1로 조정합니다.

다음 플레이북을 vmss-auto-scale-metrics.yml로 저장합니다.

---
- hosts: localhost
  vars:
    resource_group: myResourceGroup
    vmss_name: myScaleSet
    name: autoscalesetting
  tasks:
  - name: Get facts of the resource group
    azure_rm_resourcegroup_facts:
      name: "{{ resource_group }}"
    register: rg

  - name: Get scale set resource uri
    set_fact:
      vmss_id: "{{ rg.ansible_facts.azure_resourcegroups[0].id }}/providers/Microsoft.Compute/virtualMachineScaleSets/{{ vmss_name }}"
    
  - name: Create autoscaling
    azure_rm_autoscale:
      resource_group: "{{ resource_group }}"
      name: "{{ name }}"
      target: "{{ vmss_id }}"
      enabled: true
      profiles:
      - count: '1'
        max_count: '1'
        min_count: '1'
        name: 'This scale condition is executed when none of the other scale condition(s) match'
        recurrence_days:
          - Monday
        recurrence_frequency: Week
        recurrence_hours:
          - 18
        recurrence_mins:
          - 0
        recurrence_timezone: Pacific Standard Time
      - count: '1'
        min_count: '1'
        max_count: '4'
        name: Auto created scale condition
        recurrence_days:
          - Monday
        recurrence_frequency: Week
        recurrence_hours:
          - 18
        recurrence_mins:
          - 0
        recurrence_timezone: Pacific Standard Time
        rules:
          - cooldown: 5
            direction: Increase
            metric_name: Percentage CPU
            metric_resource_uri: "{{ vmss_id }}"
            operator: GreaterThan
            statistic: Average
            threshold: 70
            time_aggregation: Average
            time_grain: 1
            time_window: 10
            type: ChangeCount
            value: '1'
          - cooldown: 5
            direction: Decrease
            metric_name: Percentage CPU
            metric_resource_uri: "{{ vmss_id }}"
            operator: LessThan
            statistic: Average
            threshold: 30
            time_aggregation: Average
            time_grain: 1
            time_window: 10
            type: ChangeCount
            value: '1'

ansible-playbook을 사용하여 플레이북 실행

ansible-playbook vmss-auto-scale-metrics.yml

자동 크기 조정 설정 정보 얻기

이 섹션의 플레이북 코드는 모듈을 azure_rm_autoscale_facts 사용하여 자동 크기 조정 설정의 세부 정보를 검색합니다.

다음 플레이북을 vmss-auto-scale-get-settings.yml로 저장합니다.

- hosts: localhost
  vars:
    resource_group: myResourceGroup
    name: autoscalesetting
  tasks: 
    - name: Retrieve autoscale settings information
      azure_rm_autoscale_facts:
        resource_group: "{{ resource_group }}"
        name: "{{ name }}"
      register: autoscale_query
    
    - debug:
        var: autoscale_query.autoscales[0]

ansible-playbook을 사용하여 플레이북 실행

ansible-playbook vmss-auto-scale-get-settings.yml

자동 크기 조정 설정 사용 안 함

자동 크기 조정 설정을 사용하지 않도록 설정하는 방법에는 두 가지가 있습니다. 하나는 enabled키를 true에서 false로 변경하는 것입니다. 두 번째 방법은 설정을 삭제하는 것입니다.

이 섹션의 플레이북 코드는 자동 크기 조정 설정을 삭제합니다.

다음 플레이북을 vmss-auto-scale-delete-setting.yml로 저장합니다.

- hosts: localhost
  vars:
    resource_group: myResourceGroup
    name: autoscalesetting
  tasks: 
    - name: Delete autoscaling
      azure_rm_autoscale:
         resource_group: "{{ resource_group }}"
         name: "{{ name }}"
         state: absent

ansible-playbook을 사용하여 플레이북 실행

vmss-auto-scale-delete-setting.yml

다음 단계