Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Importante
Ansible 2.9 (o versione successiva) è necessario per eseguire i playbook di esempio in questo articolo.
I set di scalabilità di macchine virtuali di Azure sono una funzionalità di Azure che consente di configurare un gruppo di macchine virtuali identiche con bilanciamento del carico. Non sono previsti costi aggiuntivi per i set di scalabilità e vengono creati da macchine virtuali. Si paga solo per le risorse di calcolo sottostanti, ad esempio le istanze di macchina virtuale, i servizi di bilanciamento del carico o l'archiviazione su disco gestito. Con i set di scalabilità, i livelli di gestione e automazione vengono forniti per l'esecuzione e la scalabilità delle applicazioni. È invece possibile creare e gestire manualmente singole macchine virtuali. Esistono tuttavia due vantaggi principali per l'uso dei set di scalabilità. Sono integrati in Azure e ridimensionano automaticamente le macchine virtuali per soddisfare le esigenze dell'applicazione.
In questo articolo vengono illustrate le operazioni seguenti:
- Configurare le risorse per una macchina virtuale
- Configurare un set di scalabilità
- Ridimensionare il scale set aumentando il numero delle istanze VM
Prerequisiti
- Sottoscrizione di Azure: se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.
Installare Ansible: eseguire una delle opzioni seguenti:
- Installare e configurare Ansible in una macchina virtuale Linux
- Configurare Azure Cloud Shell e, se non si ha accesso a una macchina virtuale Linux, creare una macchina virtuale con Ansible.
Configurare un set di scalabilità
Il codice del playbook in questa sezione definisce le risorse seguenti:
- Gruppo di risorse in cui verranno distribuite tutte le risorse.
- Rete virtuale nello spazio indirizzi 10.0.0.0/16
- Subnet all'interno della rete virtuale
- Indirizzo IP pubblico che consente di accedere alle risorse in Internet
- Network security group che controlla il flusso del traffico di rete all'interno e all'esterno dell'insieme di scalabilità
- Servizio di bilanciamento del carico che distribuisce il traffico tra un set di macchine virtuali definite usando regole di bilanciamento del carico
- Set di scalabilità di macchine virtuali che usa tutte le risorse create
Esistono due modi per ottenere il playbook di esempio:
Scarica il playbook e salva il file come
vmss-create.yml.Creare un file denominato
vmss-create.yml. Inserire il codice seguente nel nuovo file:
- 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
Prima di eseguire il playbook, vedere le note seguenti:
-
varsNella sezione sostituire il{{ admin_password }}segnaposto con la propria password.
Eseguire il playbook usando ansible-playbook
ansible-playbook vmss-create.yml
Dopo aver eseguito il playbook, viene visualizzato un output simile ai risultati seguenti:
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
Visualizzare il numero di istanze di macchina virtuale
Il set di scalabilità configurato dispone attualmente di due istanze. Per confermare tale valore vengono usati i passaggi seguenti:
Accedi al portale di Azure.
Passare al set di scalabilità configurato.
Viene visualizzato il nome del set di scalabilità con il numero di istanze nella parentesi:
Standard_DS1_v2 (2 instances)È anche possibile verificare il numero di istanze con Azure Cloud Shell eseguendo il comando seguente:
az vmss show -n myScaleSet -g myResourceGroup --query '{"capacity":sku.capacity}'I risultati dell'esecuzione del comando dell'interfaccia della riga di comando di Azure in Cloud Shell mostrano che esistono due istanze:
{ "capacity": 2, }
Aumentare il numero di istanze di un set di scalabilità
Il codice del playbook in questa sezione recupera informazioni sul set di scalabilità e ne modifica la capacità da due a tre.
Esistono due modi per ottenere il playbook di esempio:
Scarica il playbook e salvalo in
vmss-scale-out.yml.Creare un file denominato
vmss-scale-out.yml. Inserire il codice seguente nel nuovo file:
---
- 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 }}"
Eseguire il playbook usando ansible-playbook
ansible-playbook vmss-scale-out.yml
Dopo aver eseguito il playbook, viene visualizzato un output simile ai risultati seguenti:
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
Verificare i risultati
Verificare i risultati del lavoro tramite il portale di Azure:
Accedi al portale di Azure.
Passare al set di scalabilità configurato.
Viene visualizzato il nome dell'insieme di scalabilità con il numero di istanze tra parentesi:
Standard_DS1_v2 (3 instances)È anche possibile verificare la modifica con Azure Cloud Shell eseguendo il comando seguente:
az vmss show -n myScaleSet -g myResourceGroup --query '{"capacity":sku.capacity}'I risultati dell'esecuzione del comando dell'interfaccia della riga di comando di Azure in Cloud Shell mostrano che ora esistono tre istanze:
{ "capacity": 3, }