Sdílet prostřednictvím


Kurz: Automatické škálování škálovacích sad virtuálních počítačů v Azure pomocí Ansible

Důležité

K spuštění ukázkových playbooků v tomto článku se vyžaduje Ansible 2.7 (nebo novější).

Škálovací sady virtuálních počítačů Azure jsou funkce Azure, která umožňuje nakonfigurovat skupinu identických virtuálních počítačů s vyrovnáváním zatížení. Škálovací sady nejsou žádné další náklady a jsou sestavené z virtuálních počítačů. Platíte jenom za základní výpočetní prostředky, jako jsou instance virtuálních počítačů, nástroje pro vyrovnávání zatížení nebo úložiště spravovaných disků. Škálovací sady poskytují vrstvy správy a automatizace pro spouštění a škálování aplikací. Místo toho můžete ručně vytvářet a spravovat jednotlivé virtuální počítače. Použití škálovacích sad ale má dvě klíčové výhody. Jsou integrované do Azure a automaticky škálují vaše virtuální počítače tak, aby vyhovovaly potřebám aplikací.

Funkce automatické úpravy počtu instancí virtuálních počítačů se nazývá automatické škálování. Výhodou automatického škálování je, že snižuje režijní náklady na správu pro monitorování a optimalizaci výkonu vaší aplikace. Automatické škálování je možné nakonfigurovat v reakci na poptávku nebo podle definovaného plánu. Pomocí Ansible můžete zadat pravidla automatického škálování, která definují přijatelný výkon pro pozitivní prostředí zákazníků.

V tomto článku získáte informace o těchto tématech:

  • Definice profilu automatického škálování
  • Automatické škálování na základě opakovaného plánu
  • Automatické škálování na základě výkonu aplikace
  • Načtení informací o nastavení automatického škálování
  • Zakázání nastavení automatického škálování

Požadavky

  • Předplatné Azure: Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet před tím, než začnete.

Automatické škálování na základě plánu

Pokud chcete povolit automatické škálování na škálovací sadě, je nejdříve potřeba definovat profil automatického škálování. Tento profil definuje výchozí, minimální a maximální kapacitu škálovací sady. Tato omezení umožňují řídit náklady tím, že neustále nevytvářejí instance virtuálních počítačů a vyrovnávají přijatelný výkon s minimálním počtem instancí, které zůstávají v události škálování.

Ansible umožňuje škálovat škálovací sady podle konkrétního data nebo opakovaného plánu.

Kód playbooku v této části zvýší počet instancí virtuálních počítačů na tři v pondělí v 10:00.

Uložte následující ukázkový playbook 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'

Spuštění playbooku pomocí ansible-playbooku

ansible-playbook vmss-auto-scale.yml

Automatické škálování na základě dat o výkonu

Pokud se poptávka po aplikaci zvýší, zvýší se zatížení instancí virtuálních počítačů ve škálovacích sadách. Pokud je toto zvýšené zatížení konzistentní, a nejedná se pouze o krátkou poptávku, můžete nakonfigurovat pravidla automatického škálování pro zvýšení počtu instancí virtuálních počítačů ve škálovací sadě. Po vytvoření těchto instancí virtuálních počítačů a nasazení aplikací do nich začne škálovací sada distribuovat provoz prostřednictvím nástroje pro vyrovnávání zatížení. Ansible umožňuje řídit, jaké metriky se mají monitorovat, jako je využití procesoru, využití disku a doba načítání aplikací. Škálování a horizontální navýšení kapacity ve škálovacích sadách můžete škálovat na základě prahových hodnot metrik výkonu, podle plánu opakování nebo podle konkrétního data.

Kód playbooku v této části kontroluje zatížení procesoru za předchozích 10 minut v 18:00 každé pondělí.

Playbook na základě metrik procentuálního využití procesoru provede jednu z následujících akcí:

  • Horizontální navýšení kapacity počtu instancí virtuálních počítačů na čtyři
  • Škáluje se v počtu instancí virtuálních počítačů na jednu.

Uložte následující ukázkový playbook 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'

Spuštění playbooku pomocí ansible-playbooku

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

Získání informací o nastavení automatického škálování

Kód playbooku azure_rm_autoscale_facts v této části používá modul k načtení podrobností o nastavení automatického škálování.

Uložte následující ukázkový playbook 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]

Spuštění playbooku pomocí ansible-playbooku

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

Zakázání nastavení automatického škálování

Existují dva způsoby, jak zakázat nastavení automatického škálování. Jedním ze způsobů je změnit enabled klíč z true na false. Druhým způsobem je odstranění nastavení.

Kód playbooku v této části odstraní nastavení automatického škálování.

Uložte následující ukázkový playbook 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

Spuštění playbooku pomocí ansible-playbooku

vmss-auto-scale-delete-setting.yml

Další kroky