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.

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

Langkah berikutnya