Tutorial: Configuración de conjuntos de escalado de máquinas virtuales en Azure mediante Ansible
Importante
Para ejecutar los cuadernos de estrategias de ejemplo de este tutorial, se requiere Ansible 2.9 (o versiones posteriores).
El conjunto de escalado de máquinas virtuales de Azure es una función de Azure permite crear y administrar un grupo de máquinas virtuales idénticas con equilibrio de carga. No hay ningún costo adicional en los conjuntos de escalad y se crean a partir de máquinas virtuales. Solo se paga por los recursos de proceso subyacente como las instancias de máquina virtual, el equilibrador de carga o el almacenamiento de disco administrado. Con los conjuntos de escalado las capas de administración y automatización sirven para ejecutar y escalar sus aplicaciones. En su lugar, puede crear y administrar manualmente máquinas virtuales individuales. Sin embargo, hay dos ventajas principales por usar los conjuntos de escalado. Se crean en Azure y escalan automáticamente las máquinas virtuales para satisfacer las necesidades de aplicación.
En este artículo aprenderá a:
- Configuración de los recursos de una máquina virtual
- Configuración de un conjunto de escalado
- Escalado del conjunto de escalado mediante el aumento de las instancias de máquina virtual
Requisitos previos
- Suscripción de Azure: si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.
Instalación de Ansible: realice una de las siguientes opciones:
- Instalar y configurar Ansible en una máquina virtual Linux
- Configurar Azure Cloud Shell y, si no tiene acceso a una máquina virtual Linux, crear una máquina virtual con Ansible.
Configuración de un conjunto de escalado
El código del cuaderno de estrategias de esta sección define los siguientes recursos:
- Grupo de recursos en el que se implementarán todos sus recursos.
- Red virtual en el espacio de direcciones de 10.0.0.0/16
- Subred en la red virtual
- Dirección IP pública que permite tener acceso a recursos de Internet
- Grupo de seguridad de red que controla el flujo del tráfico de red de entrada y salida del conjunto de escalado.
- Equilibrador de carga que distribuye el tráfico a través de un conjunto de máquinas virtuales definidas usando reglas de equilibrador de carga.
- Conjunto de escalado de máquinas virtuales que usa todos los recursos creados
Hay dos formas de obtener el cuaderno de estrategias de ejemplo:
Descargue el cuaderno de estrategias y guarde el archivo como
vmss-create.yml
.Cree un nuevo archivo llamado
vmss-create.yml
. Inserte el código siguiente en el nuevo archivo:
- hosts: localhost
vars:
resource_group: myResourceGroup
vmss_name: myvmscalesetname
vmss_lb_name: myScaleSetLb
location: eastus
admin_username: azureuser
admin_password: "{{ admin_password }}"
tasks:
- name: Create a resource group
azure_rm_resourcegroup:
name: "{{ resource_group }}"
location: "{{ location }}"
- name: Create virtual network
azure_rm_virtualnetwork:
resource_group: "{{ resource_group }}"
name: "{{ vmss_name }}"
address_prefixes: "10.0.0.0/16"
- name: Add subnet
azure_rm_subnet:
resource_group: "{{ resource_group }}"
name: "{{ vmss_name }}"
address_prefix: "10.0.1.0/24"
virtual_network: "{{ vmss_name }}"
- name: Create public IP address
azure_rm_publicipaddress:
resource_group: "{{ resource_group }}"
allocation_method: Static
name: "{{ vmss_name }}"
- name: Create Network Security Group that allows SSH
azure_rm_securitygroup:
resource_group: "{{ resource_group }}"
name: "{{ vmss_name }}"
rules:
- name: SSH
protocol: Tcp
destination_port_range: 22
access: Allow
priority: 1001
direction: Inbound
- name: Create a load balancer
azure_rm_loadbalancer:
resource_group: "{{ resource_group }}"
name: "{{ vmss_name }}lb"
location: "{{ location }}"
frontend_ip_configurations:
- name: "{{ vmss_name }}front-config"
public_ip_address: "{{ vmss_name }}"
backend_address_pools:
- name: "{{ vmss_name }}backend-pool"
probes:
- name: "{{ vmss_name }}prob0"
port: 8080
interval: 10
fail_count: 3
inbound_nat_pools:
- name: "{{ vmss_name }}nat-pool"
frontend_ip_configuration_name: "{{ vmss_name }}front-config"
protocol: Tcp
frontend_port_range_start: 50000
frontend_port_range_end: 50040
backend_port: 22
load_balancing_rules:
- name: "{{ vmss_name }}lb-rules"
frontend_ip_configuration: "{{ vmss_name }}front-config"
backend_address_pool: "{{ vmss_name }}backend-pool"
frontend_port: 80
backend_port: 8080
load_distribution: Default
probe: "{{ vmss_name }}prob0"
- name: Create VMSS
no_log: true
azure_rm_virtualmachinescaleset:
resource_group: "{{ resource_group }}"
name: "{{ vmss_name }}"
vm_size: Standard_DS1_v2
admin_username: "{{ admin_username }}"
admin_password: "{{ admin_password }}"
ssh_password_enabled: true
capacity: 2
virtual_network_name: "{{ vmss_name }}"
subnet_name: "{{ vmss_name }}"
upgrade_policy: Manual
tier: Standard
managed_disk_type: Standard_LRS
os_disk_caching: ReadWrite
image:
offer: UbuntuServer
publisher: Canonical
sku: 16.04-LTS
version: latest
load_balancer: "{{ vmss_name }}lb"
data_disks:
- lun: 0
disk_size_gb: 20
managed_disk_type: Standard_LRS
caching: ReadOnly
- lun: 1
disk_size_gb: 30
managed_disk_type: Standard_LRS
caching: ReadOnly
Antes de ejecutar el cuaderno de estrategias, consulte las notas siguientes:
- En la sección
vars
, reemplace el marcador de posición{{ admin_password }}
por su propia contraseña.
Ejecute el cuaderno de estrategias mediante ansible-playbook.
ansible-playbook vmss-create.yml
Tras ejecutar el cuaderno de estrategias, debería ver resultados similares a los siguientes:
PLAY [localhost]
TASK [Gathering Facts]
ok: [localhost]
TASK [Create a resource group]
changed: [localhost]
TASK [Create virtual network]
changed: [localhost]
TASK [Add subnet]
changed: [localhost]
TASK [Create public IP address]
changed: [localhost]
TASK [Create Network Security Group that allows SSH]
changed: [localhost]
TASK [Create a load balancer]
changed: [localhost]
TASK [Create Scale Set]
changed: [localhost]
PLAY RECAP
localhost : ok=8 changed=7 unreachable=0 failed=0
Visualización del número de instancias de máquina virtual
El conjunto de escalado configurado actualmente tiene dos instancias. Los pasos siguientes se usan para confirmar dicho valor:
Inicie sesión en Azure Portal.
Vaya al conjunto de escalado que ha configurado.
Podrá ver el nombre del conjunto de escalado con el número de instancias entre paréntesis:
Standard_DS1_v2 (2 instances)
También puede comprobar el número de instancias con Azure Cloud Shell mediante la ejecución del siguiente comando:
az vmss show -n myScaleSet -g myResourceGroup --query '{"capacity":sku.capacity}'
Los resultados de la ejecución del comando de la CLI de Azure en Cloud Shell muestran que existen dos instancias:
{ "capacity": 2, }
Escalado horizontal de un conjunto de escalado
El código del cuaderno de estrategias de esta sección recupera información sobre el conjunto de escalado y cambia su capacidad de dos a tres.
Hay dos formas de obtener el cuaderno de estrategias de ejemplo:
Descargar el cuaderno de estrategias y guardarlo en
vmss-scale-out.yml
.Cree un nuevo archivo llamado
vmss-scale-out.yml
. Inserte el código siguiente en el nuevo archivo:
---
- hosts: localhost
gather_facts: false
vars:
resource_group: myTestRG
vmss_name: myTestVMSS
tasks:
- name: Get scaleset info
azure_rm_virtualmachine_scaleset_facts:
resource_group: "{{ resource_group }}"
name: "{{ vmss_name }}"
format: curated
register: output_scaleset
- name: set image fact
set_fact:
vmss_image: "{{ output_scaleset.vmss[0].image }}"
- name: Create VMSS
no_log: true
azure_rm_virtualmachinescaleset:
resource_group: "{{ resource_group }}"
name: "{{ vmss_name }}"
capacity: 3
image: "{{ vmss_image }}"
Ejecute el cuaderno de estrategias mediante ansible-playbook.
ansible-playbook vmss-scale-out.yml
Tras ejecutar el cuaderno de estrategias, debería ver resultados similares a los siguientes:
PLAY [localhost]
TASK [Gathering Facts]
ok: [localhost]
TASK [Get scaleset info]
ok: [localhost]
TASK [Set image fact]
ok: [localhost]
TASK [Change VMSS capacity]
changed: [localhost]
PLAY RECAP
localhost : ok=3 changed=1 unreachable=0 failed=0
Verificación de los resultados
Compruebe los resultados del trabajo mediante Azure Portal:
Inicie sesión en Azure Portal.
Vaya al conjunto de escalado que ha configurado.
Podrá ver el nombre del conjunto de escalado con el número de instancias entre paréntesis:
Standard_DS1_v2 (3 instances)
También puede comprobar el cambio con Azure Cloud Shell ejecutando el siguiente comando:
az vmss show -n myScaleSet -g myResourceGroup --query '{"capacity":sku.capacity}'
Los resultados de la ejecución del comando de la CLI de Azure en Cloud Shell muestran que ahora existen tres instancias:
{ "capacity": 3, }