Samouczek: konfigurowanie zestawów skalowania maszyn wirtualnych na platformie Azure przy użyciu rozwiązania Ansible
Ważne
Rozwiązanie Ansible w wersji 2.9 (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.
W tym artykule omówiono sposób wykonywania następujących zadań:
- Konfigurowanie zasobów dla maszyny wirtualnej
- Konfigurowanie zestawu skalowania
- Skalowanie zestawu skalowania przez zwiększenie liczby wystąpień maszyn wirtualnych
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.
Konfigurowanie zestawu skalowania
Kod podręcznika w tej sekcji definiuje następujące zasoby:
- Grupa zasobów, w której zostaną wdrożone wszystkie zasoby.
- Sieć wirtualną w przestrzeni adresowej 10.0.0.0/16
- Podsieć w ramach sieci wirtualnej
- Publiczny adres IP, który pozwala uzyskać dostęp do zasobów w Internecie
- Sieciowa grupa zabezpieczeń kontrolująca przepływ ruchu sieciowego w zestawie skalowania i wychodzącym z tego zestawu skalowania
- Moduł równoważenia obciążenia, który dystrybuuje ruch w ramach zestawu zdefiniowanych maszyn wirtualnych przy użyciu reguł modułu równoważenia obciążenia
- Zestaw skalowania maszyn wirtualnych, który używa wszystkich utworzonych zasobów
Istnieją dwa sposoby pobrania przykładowego podręcznika:
Pobierz podręcznik i zapisz plik jako
vmss-create.yml
.Utwórz nowy plik o nazwie
vmss-create.yml
. Wstaw następujący kod do nowego pliku:
- 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
Przed uruchomieniem podręcznika zapoznaj się z następującymi uwagami:
vars
W sekcji zastąp{{ admin_password }}
symbol zastępczy własnym hasłem.
Uruchamianie podręcznika przy użyciu podręcznika ansible-playbook
ansible-playbook vmss-create.yml
Po uruchomieniu podręcznika zobaczysz dane wyjściowe podobne do następujących wyników:
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
Wyświetlanie liczby wystąpień maszyn wirtualnych
Skonfigurowany zestaw skalowania ma obecnie dwa wystąpienia. Następujące kroki służą do potwierdzenia tej wartości:
Zaloguj się w witrynie Azure Portal.
Przejdź do skonfigurowanego zestawu skalowania.
Zostanie wyświetlona nazwa zestawu skalowania z liczbą wystąpień w nawiasach:
Standard_DS1_v2 (2 instances)
Możesz również sprawdzić liczbę wystąpień w usłudze Azure Cloud Shell , uruchamiając następujące polecenie:
az vmss show -n myScaleSet -g myResourceGroup --query '{"capacity":sku.capacity}'
Wyniki uruchomienia polecenia interfejsu wiersza polecenia platformy Azure w usłudze Cloud Shell pokazują, że istnieją dwa wystąpienia:
{ "capacity": 2, }
Skalowanie w poziomie zestawu skalowania
Kod podręcznika w tej sekcji pobiera informacje o zestawie skalowania i zmienia jego pojemność z dwóch do trzech.
Istnieją dwa sposoby pobrania przykładowego podręcznika:
Pobierz podręcznik i zapisz go w pliku
vmss-scale-out.yml
.Utwórz nowy plik o nazwie
vmss-scale-out.yml
. Wstaw następujący kod do nowego pliku:
---
- 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 }}"
Uruchamianie podręcznika przy użyciu podręcznika ansible-playbook
ansible-playbook vmss-scale-out.yml
Po uruchomieniu podręcznika zobaczysz dane wyjściowe podobne do następujących wyników:
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
Weryfikowanie wyników
Sprawdź wyniki pracy za pośrednictwem witryny Azure Portal:
Zaloguj się w witrynie Azure Portal.
Przejdź do skonfigurowanego zestawu skalowania.
Zostanie wyświetlona nazwa zestawu skalowania z liczbą wystąpień w nawiasach:
Standard_DS1_v2 (3 instances)
Możesz również zweryfikować zmianę za pomocą usługi Azure Cloud Shell, uruchamiając następujące polecenie:
az vmss show -n myScaleSet -g myResourceGroup --query '{"capacity":sku.capacity}'
Wyniki uruchomienia polecenia interfejsu wiersza polecenia platformy Azure w usłudze Cloud Shell pokazują, że istnieją teraz trzy wystąpienia:
{ "capacity": 3, }