Tutorial: autoscale set skala komputer virtual di Azure menggunakan Ansible
Penting
Ansible 2.7 (atau lebih baru) diperlukan untuk menjalankan sampel playbook dalam artikel ini.
set skala komputer virtual Azure adalah fitur Azure yang memungkinkan Anda mengonfigurasi sebuah grup VM dengan beban seimbang yang identik. Tidak ada biaya tambahan untuk set skala dan ini dibangun dari mesin virtual. Anda hanya membayar untuk sumber daya komputasi dasar seperti instans VM, penyeimbang beban, atau penyimpanan Disk Terkelola. Dengan set skala, lapisan manajemen dan otomatisasi disediakan untuk menjalankan dan menskalakan aplikasi Anda. Anda dapat membuat dan mengelola VM individual secara manual. Namun, ada dua manfaat utama dari penggunaan set skala. Ini dibangun ke dalam Azure dan secara otomatis menskalakan mesin virtual Anda untuk memenuhi kebutuhan aplikasi.
Fitur menyesuaikan jumlah instans VM secara otomatis disebut skala otomatis. Keuntungan dari skala otomatis adalah mengurangi overhead manajemen untuk memantau dan mengoptimalkan performa aplikasi Anda. Skala otomatis dapat dikonfigurasi sebagai respons terhadap permintaan atau pada jadwal yang ditentukan. Dengan menggunakan Ansible, Anda dapat menentukan aturan skala otomatis yang menentukan kinerja yang dapat diterima untuk pengalaman pelanggan yang positif.
Dalam artikel ini, Anda akan mempelajari cara:
- Menentukan profil skala otomatis
- Skala otomatis berdasarkan jadwal berulang
- Skala otomatis berdasarkan performa aplikasi
- Mengambil informasi pengaturan skala otomatis
- Menonaktifkan pengaturan penskalaan otomatis
Prasyarat
- Langganan Azure: Jika Anda tidak memiliki langganan Azure, buat akun gratis sebelum memulai.
Instal Ansible: Lakukan salah satu opsi berikut:
- Menginstal dan mengonfigurasi Ansibel pada mesin virtual Linux
- Konfigurasikan Azure Cloud Shell dan - jika Anda tidak memiliki akses ke mesin virtual Linux - buat mesin virtual dengan Ansible.
- Set skala komputer virtual: Jika Belum memiliki set skala, Anda dapat mengonfigurasi kumpulan skala dengan Ansible.
Autoscale berdasarkan jadwal
Untuk mengaktifkan skala otomatis pada set skala, tentukan profil skala otomatis terlebih dahulu. Profil ini menentukan kapasitas set skala default, minimum, dan maksimum. Batas ini memungkinkan Anda mengontrol biaya dengan tidak terus-menerus membuat instans VM, dan menyeimbangkan kinerja yang dapat diterima dengan jumlah instans minimum yang tetap berada dalam peristiwa penskalaan.
Ansible memungkinkan Anda untuk menskalakan set skala Anda pada tanggal tertentu atau jadwal berulang.
Kode playbook di bagian ini meningkatkan jumlah instans VM menjadi tiga pada pukul 10:00 setiap hari Senin.
Simpan playbook berikut sebagai vmss-auto-scale.yml
:
---
- hosts: localhost
vars:
resource_group: myResourceGroup
vmss_name: myScaleSet
name: autoscalesetting
tasks:
- name: Create autoscaling
azure_rm_autoscale:
resource_group: "{{ resource_group }}"
name: "{{ name }}"
target:
namespace: "Microsoft.Compute"
types: "virtualMachineScaleSets"
name: "{{ vmss_name }}"
enabled: true
profiles:
- count: '3'
min_count: '3'
max_count: '3'
name: Auto created scale condition
recurrence_timezone: Pacific Standard Time
recurrence_frequency: Week
recurrence_days:
- Monday
recurrence_mins:
- '0'
recurrence_hours:
- '10'
Jalankan playbook menggunakan ansible-playbook.
ansible-playbook vmss-auto-scale.yml
Skala otomatis berdasarkan data performa
Jika permintaan aplikasi Anda meningkat, beban pada instans VM dalam set skala Anda juga akan meningkat. Jika peningkatan beban ini konsisten dan bukan permintaan singkat, Anda dapat mengonfigurasi aturan skala otomatis untuk meningkatkan jumlah instans VM dalam set skala. Ketika instans komputer virtual ini dibuat dan aplikasi Anda disebar, set skala akan mulai mendistribusikan lalu lintas kepada keduanya melalui penyeimbang beban. Ansible memungkinkan Anda mengontrol metrik apa yang harus dipantau, seperti penggunaan CPU, penggunaan disk, dan waktu buka aplikasi. Anda dapat scale in dan scale out di set skala berdasarkan ambang batas metrik performa, dengan jadwal berulang, atau pada tanggal tertentu.
Kode playbook di bagian ini memeriksa beban kerja CPU selama 10 menit sebelumnya pada pukul 18:00 setiap hari Senin.
Berdasarkan metrik persentase CPU, playbook melakukan salah satu tindakan berikut:
- Peluasan skala jumlah instans VM menjadi empat
- Penyempitan jumlah instans VM menjadi satu
Simpan playbook berikut sebagai vmss-auto-scale-metrics.yml
:
---
- hosts: localhost
vars:
resource_group: myResourceGroup
vmss_name: myScaleSet
name: autoscalesetting
tasks:
- name: Get facts of the resource group
azure_rm_resourcegroup_facts:
name: "{{ resource_group }}"
register: rg
- name: Get scale set resource uri
set_fact:
vmss_id: "{{ rg.ansible_facts.azure_resourcegroups[0].id }}/providers/Microsoft.Compute/virtualMachineScaleSets/{{ vmss_name }}"
- name: Create autoscaling
azure_rm_autoscale:
resource_group: "{{ resource_group }}"
name: "{{ name }}"
target: "{{ vmss_id }}"
enabled: true
profiles:
- count: '1'
max_count: '1'
min_count: '1'
name: 'This scale condition is executed when none of the other scale condition(s) match'
recurrence_days:
- Monday
recurrence_frequency: Week
recurrence_hours:
- 18
recurrence_mins:
- 0
recurrence_timezone: Pacific Standard Time
- count: '1'
min_count: '1'
max_count: '4'
name: Auto created scale condition
recurrence_days:
- Monday
recurrence_frequency: Week
recurrence_hours:
- 18
recurrence_mins:
- 0
recurrence_timezone: Pacific Standard Time
rules:
- cooldown: 5
direction: Increase
metric_name: Percentage CPU
metric_resource_uri: "{{ vmss_id }}"
operator: GreaterThan
statistic: Average
threshold: 70
time_aggregation: Average
time_grain: 1
time_window: 10
type: ChangeCount
value: '1'
- cooldown: 5
direction: Decrease
metric_name: Percentage CPU
metric_resource_uri: "{{ vmss_id }}"
operator: LessThan
statistic: Average
threshold: 30
time_aggregation: Average
time_grain: 1
time_window: 10
type: ChangeCount
value: '1'
Jalankan playbook menggunakan ansible-playbook.
ansible-playbook vmss-auto-scale-metrics.yml
Mengambil informasi pengaturan skala otomatis
Kode playbook di bagian ini menggunakan modul azure_rm_autoscale_facts
untuk mengambil detail pengaturan skala otomatis.
Simpan playbook berikut sebagai vmss-auto-scale-get-settings.yml
:
- hosts: localhost
vars:
resource_group: myResourceGroup
name: autoscalesetting
tasks:
- name: Retrieve autoscale settings information
azure_rm_autoscale_facts:
resource_group: "{{ resource_group }}"
name: "{{ name }}"
register: autoscale_query
- debug:
var: autoscale_query.autoscales[0]
Jalankan playbook menggunakan ansible-playbook.
ansible-playbook vmss-auto-scale-get-settings.yml
Menonaktifkan pengaturan skala otomatis
Ada dua cara untuk menonaktifkan pengaturan skala otomatis. Salah satu caranya adalah dengan mengubah kunci enabled
dari true
ke false
. Cara kedua adalah dengan menghapus pengaturan.
Kode playbook di bagian ini menghapus pengaturan skala otomatis.
Simpan playbook berikut sebagai vmss-auto-scale-delete-setting.yml
:
- hosts: localhost
vars:
resource_group: myResourceGroup
name: autoscalesetting
tasks:
- name: Delete autoscaling
azure_rm_autoscale:
resource_group: "{{ resource_group }}"
name: "{{ name }}"
state: absent
Jalankan playbook menggunakan ansible-playbook.
vmss-auto-scale-delete-setting.yml