Tutorial: Dimensionar automaticamente conjuntos de dimensionamento de máquina virtual no Azure usando o Ansible
Importante
O Ansible 2.7 (ou posterior) é necessário para executar os playbooks de exemplo neste artigo.
Os conjuntos de dimensionamento de máquina virtual do Azure são um recurso do Azure que permite configurar um grupo de VMs idênticas com balanceamento de carga. Não há custo adicional para dimensionar conjuntos e eles são criados a partir de máquinas virtuais. Você paga apenas pelos recursos de computação subjacentes, como instâncias de VM, balanceadores de carga ou armazenamento em disco gerenciado. Nos conjuntos de dimensionamento, as camadas de gestão e automatização são fornecidas para executar e dimensionar as suas aplicações. Em vez disso, você pode criar e gerenciar manualmente VMs individuais. No entanto, há dois benefícios principais no uso de conjuntos de escalas. Eles são incorporados ao Azure e dimensionam automaticamente suas máquinas virtuais para atender às necessidades do aplicativo.
O recurso de ajustar automaticamente o número de instâncias de VM é chamado de dimensionamento automático. O benefício do dimensionamento automático é que ele reduz a sobrecarga de gerenciamento para monitorar e otimizar o desempenho do seu aplicativo. O dimensionamento automático pode ser configurado em resposta à demanda ou em um cronograma definido. Usando o Ansible, você pode especificar as regras de dimensionamento automático que definem o desempenho aceitável para uma experiência positiva do cliente.
Neste artigo, vai aprender a:
- Definir um perfil de dimensionamento automático
- Dimensionamento automático com base em uma programação recorrente
- Dimensionamento automático com base no desempenho do aplicativo
- Recuperar informações de configurações de dimensionamento automático
- Desativar uma configuração de dimensionamento automático
Pré-requisitos
- Subscrição do Azure: se não tem uma subscrição do Azure, crie uma conta gratuita antes de começar.
Instale o Ansible: execute uma das seguintes opções:
- Instalar e configurar o Ansible em uma máquina virtual Linux
- Configure o Azure Cloud Shell e, se você não tiver acesso a uma máquina virtual Linux, crie uma máquina virtual com o Ansible.
- Conjunto de dimensionamento de máquina virtual: se você ainda não tiver um conjunto de escalas, poderá configurar um conjunto de escalas com o Ansible.
Dimensionamento automático com base em um cronograma
Para ativar o dimensionamento automático num conjunto de dimensionamente, tem primeiro que definir um perfil de dimensionamento automático. Este perfil define a capacidade predefinida, máxima e mínima do conjunto de dimensionamento. Esses limites permitem controlar o custo não criando continuamente instâncias de VM e equilibrar o desempenho aceitável com um número mínimo de instâncias que permanecem em um evento de escala.
O Ansible permite que você dimensione seus conjuntos de escalas em uma data específica ou agenda recorrente.
O código do playbook nesta seção aumenta o número de instâncias de VM para três às 10:00 todas as segundas-feiras.
Guarde o manual de procedimentos seguinte como 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'
Execute o playbook usando o ansible-playbook
ansible-playbook vmss-auto-scale.yml
Dimensionamento automático com base em dados de desempenho
Se a demanda do aplicativo aumentar, a carga nas instâncias de VM em seus conjuntos de escala aumentará. Se este aumento de carga for consistente, em vez de ser apenas uma breve exigência, pode configurar regras de dimensionamento automático para aumentar o número de instâncias de VM no conjunto de dimensionamento. Quando estas instâncias de VM forem criadas e as aplicações forem implementadas, o conjunto de dimensionamento começa a distribuir o tráfego pelas mesmas através do balanceador de carga. O Ansible permite controlar quais métricas monitorar, como uso da CPU, uso do disco e tempo de carregamento do aplicativo. Você pode dimensionar e expandir em conjuntos de escala com base em limites de métricas de desempenho, por uma agenda recorrente ou por uma data específica.
O código do playbook nesta seção verifica a carga de trabalho da CPU nos 10 minutos anteriores às 18:00 todas as segundas-feiras.
Com base nas métricas de porcentagem de CPU, o manual executa uma das seguintes ações:
- Dimensiona o número de instâncias de VM para quatro
- Dimensiona o número de instâncias de VM para uma
Guarde o manual de procedimentos seguinte como 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'
Execute o playbook usando o ansible-playbook
ansible-playbook vmss-auto-scale-metrics.yml
Obter informações sobre configurações de dimensionamento automático
O código do playbook nesta seção usa o azure_rm_autoscale_facts
módulo para recuperar os detalhes da configuração de dimensionamento automático.
Guarde o manual de procedimentos seguinte como 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]
Execute o playbook usando o ansible-playbook
ansible-playbook vmss-auto-scale-get-settings.yml
Desativar configurações de dimensionamento automático
Há duas maneiras de desativar as configurações de dimensionamento automático. Uma maneira é mudar a enabled
chave de true
para false
. A segunda maneira é excluir a configuração.
O código do playbook nesta seção exclui a configuração de dimensionamento automático.
Guarde o manual de procedimentos seguinte como 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
Execute o playbook usando o ansible-playbook
vmss-auto-scale-delete-setting.yml