Dela via


Självstudie: Autoskalning av vm-skalningsuppsättningar i Azure med Ansible

Viktigt!

Ansible 2.7 (eller senare) krävs för att köra exempelspelböckerna i den här artikeln.

Skalningsuppsättningar för virtuella Azure-datorer är en Azure-funktion som gör att du kan konfigurera en grupp med identiska, belastningsutjämningade virtuella datorer. Det finns ingen extra kostnad för skalningsuppsättningar och de skapas från virtuella datorer. Du betalar bara för underliggande beräkningsresurser, till exempel VM-instanser, lastbalanserare eller managed disk-lagring. Med skalningsuppsättningar tillhandahålls hantering och automatiseringsnivåer för körning och skalning av dina program. Du kan i stället skapa och hantera enskilda virtuella datorer manuellt. Det finns dock två viktiga fördelar med att använda skalningsuppsättningar. De är inbyggda i Azure och de skalar automatiskt dina virtuella datorer efter programbehov.

Funktionen för att automatiskt justera antalet vm-instanser kallas autoskalning. Fördelen med autoskalning är att det minskar hanteringskostnaderna för att övervaka och optimera programmets prestanda. Autoskalning kan konfigureras som svar på efterfrågan eller enligt ett definierat schema. Med Ansible kan du ange de autoskalningsregler som definierar godtagbara prestanda för en positiv kundupplevelse.

I den här artikeln kan du se hur du:

  • Definiera en autoskalningsprofil
  • Autoskalning baserat på ett återkommande schema
  • Autoskalning baserat på appprestanda
  • Hämta information om autoskalningsinställningar
  • Inaktivera en autoskalningsinställning

Förutsättningar

  • Azure-prenumeration: Om du inte har någon Azure-prenumeration kan du skapa ett kostnadsfritt konto innan du börjar.

Autoskalning baserat på ett schema

Om du vill aktivera autoskalning för en skalningsuppsättning börjar du med att definiera en autoskalningsprofil. Den här profilen definierar skalningsuppsättningens förvalda, lägsta och högsta kapacitet. Med hjälp av dessa restriktioner kan du begränsa kostnaderna genom att inte skapa VM-instanser kontinuerligt, samtidigt som du kan balansera godtagbara prestanda med minsta antal instanser som bevaras vid en nedskalning.

Med Ansible kan du skala dina skalningsuppsättningar enligt ett specifikt datum eller återkommande schema.

Spelbokskoden i det här avsnittet ökar antalet virtuella datorinstanser till tre kl. 10:00 varje måndag.

Spara följande spelbok som 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'

Kör spelboken med ansible-playbook

ansible-playbook vmss-auto-scale.yml

Autoskalning baserat på prestandadata

Om dina programkrav ökar, ökar även belastningen på VM-instanserna i dina skalningsuppsättningar. Om den här ökade belastningen är konsekvent istället för bara en kortsiktig efterfrågan, kan du konfigurera regler för automatisk skalning för att öka antalet virtuella datorinstanser i skalningsuppsättningen. När dessa virtuella datorinstanser skapas och dina program distribueras, börjar skalningsuppsättningen att distribuera trafik till dem via lastbalanseraren. Med Ansible kan du styra vilka mått som ska övervakas, till exempel CPU-användning, diskanvändning och appinläsningstid. Du kan skala in och skala ut i skalningsuppsättningar baserat på tröskelvärden för prestandamått, genom ett återkommande schema eller efter ett visst datum.

Spelbokskoden i det här avsnittet kontrollerar CPU-arbetsbelastningen under de senaste 10 minuterna klockan 18:00 varje måndag.

Spelboken utför någon av följande åtgärder baserat på måtten för CPU-procent:

  • Skala ut antalet virtuella datorinstanser till fyra
  • Skalar in antalet virtuella datorinstanser till en

Spara följande spelbok som 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'

Kör spelboken med ansible-playbook

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

Hämta information om inställningar för autoskalning

Spelbokskoden i det här avsnittet använder modulen azure_rm_autoscale_facts för att hämta information om autoskalningsinställningen.

Spara följande spelbok som 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]

Kör spelboken med ansible-playbook

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

Inaktivera inställningar för autoskalning

Det finns två sätt att inaktivera autoskalningsinställningar. Ett sätt är att ändra enabled nyckeln från true till false. Det andra sättet är att ta bort inställningen.

Spelbokskoden i det här avsnittet tar bort autoskalningsinställningen.

Spara följande spelbok som 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

Kör spelboken med ansible-playbook

vmss-auto-scale-delete-setting.yml

Nästa steg