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.
Zainstaluj oprogramowanie Ansible: Wykonaj jedną z następujących opcji:
- Instalowanie i konfigurowanie rozwiązania Ansible na maszynie wirtualnej z systemem Linux
- Skonfiguruj usługę Azure Cloud Shell i — jeśli nie masz dostępu do maszyny wirtualnej z systemem Linux — utwórz maszynę wirtualną za pomocą rozwiązania Ansible.
- Zestaw skalowania maszyn wirtualnych: jeśli nie masz jeszcze zestawu skalowania, możesz skonfigurować zestaw skalowania za pomocą rozwiązania Ansible.
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