這很重要
本文中的範例腳本需要 Ansible 2.9(或更新版本)執行。
Azure 虛擬機器擴展集 是一項 Azure 功能,可讓您設定一組相同的負載平衡 VM。 擴展集不需要額外的成本,它們是由虛擬機器建置而成的。 您只需支付基礎計算資源的費用,例如 VM 執行個體、負載平衡器或受控磁碟儲存體。 使用擴展集時,會提供管理和自動化層來執行和調整您的應用程式。 您可以改為手動建立和管理個別 VM。 不過,使用擴展集有兩個主要優點。 它們內建於 Azure 中,並自動調整您的虛擬機器以符合應用程式需求。
在本文中,您將學會如何:
- 設定 VM 的資源
- 設定規模集
- 藉由增加 VM 執行個體來調整擴展集的大小
先決條件
- Azure 訂用帳戶:如果您沒有 Azure 訂用帳戶,請在開始前建立免費帳戶。
安裝 Ansible:執行下列其中一個選項:
- 在Linux虛擬機器上安裝及設定Ansible
- 設定 Azure Cloud Shell ,如果您無法存取 Linux 虛擬機器,請 使用 Ansible 建立虛擬機器。
設定規模設定
本節中的教戰手冊程式碼會定義下列資源:
- 所有資源將會被部署到的資源群組。
- 10.0.0.0/16 位址空間中的虛擬網路
- 虛擬網路內的子網路
- 允許您透過網際網路存取資源的公用 IP 位址
- 網路安全性群組 用來控制擴展集進出網路的流量
- 負載平衡器, 使用負載平衡器規則在一組已定義的 VM 之間分配流量
- 虛擬機器擴展集使用所有已建立的資源
有兩種方式可以取得範例操作手冊:
下載教戰手冊 並將檔案儲存為
vmss-create.yml。建立名為
vmss-create.yml的新檔案。 將下列程式碼插入新檔案中:
- 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
執行劇本之前,請參閱以下注意事項:
- 在
vars區段中,將{{ admin_password }}預留位置替換成您自己的密碼。
使用 ansible-playbook 執行指令集
ansible-playbook vmss-create.yml
執行操作手冊之後,您會看到輸出結果如下:
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
檢視 VM 執行個體數目
已設定的擴展組當前有兩個實例。 下列步驟可用來確認該值:
登入 Azure 入口網站。
流覽至您設定的擴展集。
您會看到規模集名稱,以及括弧中顯示的執行個體數量:
Standard_DS1_v2 (2 instances)您也可以執行下列命令,以確認 Azure Cloud Shell 的執行個體數目:
az vmss show -n myScaleSet -g myResourceGroup --query '{"capacity":sku.capacity}'在 Cloud Shell 中執行 Azure CLI 命令的結果顯示存在兩個執行個體:
{ "capacity": 2, }
相應放大擴展集
本節中的教戰手冊程式碼會擷取縮放設定的相關資訊,並將其容量從兩個變更為三個。
有兩種方式可以取得範例操作手冊:
下載教戰手冊 並將其儲存至
vmss-scale-out.yml。建立名為
vmss-scale-out.yml的新檔案。 將下列程式碼插入新檔案中:
---
- 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 }}"
使用 ansible-playbook 執行指令集
ansible-playbook vmss-scale-out.yml
執行操作手冊之後,您會看到輸出結果如下:
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
確認結果
透過 Azure 入口網站驗證您的工作結果:
登入 Azure 入口網站。
導航至您設定的規模設定集。
您會看到規模設定名稱,並以括弧顯示執行個體數目:
Standard_DS1_v2 (3 instances)您也可以執行下列命令,以使用 Azure Cloud Shell 驗證變更:
az vmss show -n myScaleSet -g myResourceGroup --query '{"capacity":sku.capacity}'在 Cloud Shell 中執行 Azure CLI 命令的結果顯示現在存在三個實例:
{ "capacity": 3, }