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.
Installera Ansible: Gör något av följande alternativ:
- Installera och konfigurera Ansible på en virtuell Linux-dator
- Konfigurera Azure Cloud Shell och – om du inte har åtkomst till en virtuell Linux-dator – skapa en virtuell dator med Ansible.
- Vm-skalningsuppsättning: Om du inte redan har en skalningsuppsättning kan du konfigurera en skalningsuppsättning med Ansible.
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