Lernprogramm: Konfigurieren von Skalierungssätzen für virtuelle Computer in Azure mithilfe von Ansible
Wichtig
Für die Ausführung der Beispielplaybooks in diesem Artikel ist mindestens Ansible 2.9 erforderlich.
Azure-VM-Skalierungsgruppen sind eine Azure-Funktion, mit der Sie eine Gruppe von identischen virtuellen Computern mit Lastenausgleich konfigurieren können. Durch Skalierungsgruppen entstehen keine zusätzlichen Kosten, und sie werden aus virtuellen Computern erstellt. Sie zahlen nur für die zugrunde liegenden Computeressourcen, z. B. die VM-Instanzen, den Lastenausgleich oder den Speicher für verwaltete Datenträger. Mit Skalierungsgruppen werden die Verwaltungs- und Automatisierungsebenen für die Ausführung und Skalierung Ihrer Anwendungen bereitgestellt. Sie können stattdessen einzelne virtuelle Computer manuell erstellen und verwalten. Die Verwendung von Skalierungsgruppen bietet jedoch zwei wesentliche Vorteile. Sie sind in Azure integriert und skalieren Ihre virtuellen Computer automatisch entsprechend den Anwendungsanforderungen.
In diesem Artikel werden folgende Vorgehensweisen behandelt:
- Konfigurieren der Ressourcen für einen virtuellen Computer
- Konfigurieren einer Skalierungsgruppe
- Skalieren der Skalierungsgruppe durch die Erhöhung der Anzahl von VM-Instanzen
Voraussetzungen
- Azure-Abonnement: Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.
Installieren von Ansible: Verwenden Sie eine der folgenden Optionen:
- Installieren und Konfigurieren von Ansible auf einem virtuellen Linux-Computer
- Konfigurieren Sie Azure Cloud Shell. Sollten Sie keinen Zugriff auf einen virtuellen Linux-Computer haben, können Sie mit Ansible einen virtuellen Computer erstellen.
Konfigurieren einer Skalierungsgruppe
Mit dem Playbookcode in diesem Abschnitt werden die folgenden Ressourcen definiert:
- Die Ressourcengruppe, in der Ihre gesamten Ressourcen bereitgestellt werden.
- Das virtuelle Netzwerk im Adressraum 10.0.0.0/16
- Das Subnetz innerhalb des virtuellen Netzwerks
- Die öffentliche IP-Adresse, über die Sie auf Ressourcen im Internet zugreifen können
- Die Netzwerksicherheitsgruppe, mit der der Fluss des ein- und ausgehenden Netzwerkdatenverkehrs Ihrer Skalierungsgruppe gesteuert wird.
- Das Lastenausgleichsmodul, das den Datenverkehr auf der Grundlage von Lastenausgleichsregeln auf eine Gruppe definierter VMs verteilt.
- Die VM-Skalierungsgruppe, die alle erstellten Ressourcen verwendet
Es gibt zwei Möglichkeiten, das Beispielplaybook abzurufen:
Laden Sie das Playbook herunter, und speichern Sie die Datei als
vmss-create.yml
.Erstelle eine neue Datei mit dem Namen
vmss-create.yml
. Fügen Sie den folgenden Code in die neue Datei ein:
- 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
Beachten Sie vor dem Ausführen des Playbooks die folgenden Hinweise:
- Ersetzen Sie im Abschnitt
vars
den Platzhalter{{ admin_password }}
durch Ihr eigenes Kennwort.
Führen Sie das Playbook mithilfe von ansible-playbook aus.
ansible-playbook vmss-create.yml
Nach dem Ausführen des Playbooks wird in etwa die folgende Ausgabe angezeigt:
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
Anzeigen der Anzahl von VM-Instanzen
Die konfigurierte Skalierungsgruppe verfügt derzeit über zwei Instanzen. Die folgenden Schritte werden verwendet, um diesen Wert zu bestätigen:
Melden Sie sich beim Azure-Portal an.
Navigieren Sie zu der Skalierungsgruppe, die Sie konfiguriert haben.
Der Name der Skalierungsgruppe wird mit der Anzahl von Instanzen in Klammern angezeigt:
Standard_DS1_v2 (2 instances)
.Sie können die Änderung auch per Azure Cloud Shell überprüfen, indem Sie den folgenden Befehl ausführen:
az vmss show -n myScaleSet -g myResourceGroup --query '{"capacity":sku.capacity}'
In den Ergebnissen der Ausführung des Azure CLI-Befehls in Cloud Shell sehen Sie, dass zwei Instanzen vorhanden sind:
{ "capacity": 2, }
Aufskalieren einer Skalierungsgruppe
Mit dem Playbookcode in diesem Abschnitt werden Informationen zur Skalierungsgruppe abgerufen, und die Kapazität wird von 2 in 3 geändert.
Es gibt zwei Möglichkeiten, das Beispielplaybook abzurufen:
Laden Sie das Playbook herunter, und speichern Sie es als
vmss-scale-out.yml
.Erstelle eine neue Datei mit dem Namen
vmss-scale-out.yml
. Fügen Sie den folgenden Code in die neue Datei ein:
---
- 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 }}"
Führen Sie das Playbook mithilfe von ansible-playbook aus.
ansible-playbook vmss-scale-out.yml
Nach dem Ausführen des Playbooks wird in etwa die folgende Ausgabe angezeigt:
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
Überprüfen der Ergebnisse
Überprüfen Sie die Ergebnisse Ihrer Arbeit über das Azure-Portal:
Melden Sie sich beim Azure-Portal an.
Navigieren Sie zu der Skalierungsgruppe, die Sie konfiguriert haben.
Der Name der Skalierungsgruppe wird mit der Anzahl von Instanzen in Klammern angezeigt:
Standard_DS1_v2 (3 instances)
.Sie können die Änderung auch mithilfe von Azure Cloud Shell überprüfen, indem Sie den folgenden Befehl ausführen:
az vmss show -n myScaleSet -g myResourceGroup --query '{"capacity":sku.capacity}'
In den Ergebnissen der Ausführung des Azure CLI-Befehls in Cloud Shell sehen Sie, dass jetzt drei Instanzen vorhanden sind:
{ "capacity": 3, }