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.
Nainstalujte Ansible: Proveďte jednu z následujících možností:
- Instalace a konfigurace Ansible na virtuálním počítači s Linuxem
- Nakonfigurujte Azure Cloud Shell a – pokud nemáte přístup k virtuálnímu počítači s Linuxem – vytvořte virtuální počítač pomocí Ansible.
- Škálovací sada virtuálních počítačů: Pokud ještě nemáte škálovací sadu, můžete škálovací sadu nakonfigurovat pomocí Ansible.
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