Samouczek: automatyczne skalowanie zestawów skalowania maszyn wirtualnych na platformie Azure przy użyciu rozwiązania Ansible

Ważne

Rozwiązanie Ansible w wersji 2.7 (lub nowszej) jest wymagane do uruchomienia przykładowych podręczników w tym artykule.

Zestawy skalowania maszyn wirtualnych platformy Azure to funkcja platformy Azure, która umożliwia skonfigurowanie grupy identycznych maszyn wirtualnych o zrównoważonym obciążeniu. Zestawy skalowania nie mają dodatkowych kosztów i są tworzone na podstawie maszyn wirtualnych. Płacisz tylko za bazowe zasoby obliczeniowe, takie jak wystąpienia maszyn wirtualnych, moduły równoważenia obciążenia lub magazyn dysków zarządzanych. Zestawy skalowania udostępniają warstwy zarządzania i automatyzacji do uruchamiania i skalowania Twoich aplikacji. Zamiast tego można ręcznie tworzyć poszczególne maszyny wirtualne i zarządzać nimi. Istnieją jednak dwie kluczowe korzyści wynikające z używania zestawów skalowania. Są one wbudowane na platformie Azure i automatycznie skalują maszyny wirtualne zgodnie z potrzebami aplikacji.

Funkcja automatycznego dostosowywania liczby wystąpień maszyn wirtualnych jest nazywana autoskalowaniem. Zaletą automatycznego skalowania jest zmniejszenie nakładu pracy związanego z zarządzaniem w celu monitorowania i optymalizowania wydajności aplikacji. Skalowanie automatyczne można skonfigurować w odpowiedzi na zapotrzebowanie lub zgodnie ze zdefiniowanym harmonogramem. Za pomocą rozwiązania Ansible można określić reguły skalowania automatycznego, które definiują akceptowalną wydajność dla pozytywnego środowiska klienta.

W tym artykule omówiono sposób wykonywania następujących zadań:

  • Definiowanie profilu skalowania automatycznego
  • Automatyczne skalowanie na podstawie harmonogramu cyklicznego
  • Automatyczne skalowanie na podstawie wydajności aplikacji
  • Pobieranie informacji o ustawieniach skalowania automatycznego
  • Wyłączanie ustawienia automatycznego skalowania

Wymagania wstępne

  • Subskrypcja platformy Azure: jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.

Automatyczne skalowanie na podstawie harmonogramu

Aby włączyć skalowanie automatyczne na zestawie skalowania, najpierw zdefiniuj profil skalowania automatycznego. Ten profil obejmuje definiowanie domyślnej, minimalnej i maksymalnej pojemności zestawu skalowania. Dzięki tym limitom możesz kontrolować koszty, ponieważ wystąpienia maszyn wirtualnych nie są tworzone w sposób ciągły, zaś akceptowalna wydajność jest zrównoważona z minimalną liczbą wystąpień, które pozostają w zdarzeniu skalowania w pionie.

Rozwiązanie Ansible umożliwia skalowanie zestawów skalowania według określonej daty lub harmonogramu cyklicznego.

Kod podręcznika w tej sekcji zwiększa liczbę wystąpień maszyn wirtualnych do trzech o godzinie 10:00 co poniedziałek.

Zapisz następujący podręcznik jako 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'

Uruchamianie podręcznika przy użyciu podręcznika ansible-playbook

ansible-playbook vmss-auto-scale.yml

Autoskaluj na podstawie danych wydajności

Wraz ze wzrostem zapotrzebowania aplikacji zwiększa się obciążenie wystąpień maszyn wirtualnych w zestawach skalowania. Jeśli wzrost obciążenia ma cechy stałego trendu, można skonfigurować reguły skalowania automatycznego umożliwiające zwiększenie liczby wystąpień maszyn wirtualnych w zestawie skalowania. Gdy aplikacje zostaną wdrożone, zestaw skalowania rozpoczyna kierowanie ruchu do nowo utworzonych wystąpień maszyn wirtualnych za pośrednictwem modułu równoważenia obciążenia. Narzędzie Ansible umożliwia kontrolowanie metryk do monitorowania, takich jak użycie procesora CPU, użycie dysku i czas ładowania aplikacji. Skalowanie w zestawach skalowania i skalowanie w poziomie można skalować w oparciu o progi metryk wydajności, według harmonogramu cyklicznego lub według określonej daty.

Kod podręcznika w tej sekcji sprawdza obciążenie procesora CPU przez poprzednie 10 minut o godzinie 18:00 co poniedziałek.

W oparciu o metryki procentowe procesora CPU podręcznik wykonuje jedną z następujących akcji:

  • Skaluje liczbę wystąpień maszyn wirtualnych do czterech
  • Skaluje liczbę wystąpień maszyn wirtualnych do jednego

Zapisz następujący podręcznik jako 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'

Uruchamianie podręcznika przy użyciu podręcznika ansible-playbook

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

Pobieranie informacji o ustawieniach automatycznego skalowania

Kod podręcznika w tej sekcji używa modułu azure_rm_autoscale_facts do pobierania szczegółów ustawienia autoskalowania.

Zapisz następujący podręcznik jako 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]

Uruchamianie podręcznika przy użyciu podręcznika ansible-playbook

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

Wyłączanie ustawień automatycznego skalowania

Istnieją dwa sposoby wyłączania ustawień autoskalowania. Jednym ze sposobów jest zmiana enabled klucza z true na false. Drugim sposobem jest usunięcie ustawienia.

Kod podręcznika w tej sekcji usuwa ustawienie autoskalowania.

Zapisz następujący podręcznik jako 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

Uruchamianie podręcznika przy użyciu podręcznika ansible-playbook

vmss-auto-scale-delete-setting.yml

Następne kroki