Skip to main content
  1. Posts/

Implementasi Autoscaling VM di Azure

·4 mins·
azure azure
Table of Contents

Azure Virtual Machine Scale Sets (VMSS) adalah fitur dari Microsoft Azure untuk secara otomatis menyesuaikan jumlah Virtual Machine (VM) dalam sebuah grup (scale set) berdasarkan kriteria tertentu. Misalnya, VMSS dapat menambahkan instance VM (scale out) ketika penggunaan CPU melebihi 70%, dan menguranginya (scale in) saat penggunaan CPU turun di bawah 30%.

Membuat Virtual Machine Scale Set
#

Buat Resource Group
#

az group create \
  --name $MY_RESOURCE_GROUP_NAME \
  --location <REGION>

Buat Virtual Machine Scale Set
#

az vmss create \
  --resource-group $MY_RESOURCE_GROUP_NAME \
  --name $MY_SCALE_SET_NAME \
  --vnet-name $VNET_NAME \
  --subnet $SUBNET_NAME \
  --nsg $NSG_NAME \
  --image Ubuntu2404 \
  --vm-sku Standard_B1s \
  --lb-sku Basic \
  --storage-sku Standard_LRS \
  --orchestration-mode Flexible \
  --instance-count 2 \
  --admin-username azureuser \
  --ssh-key-values @<path-ke-file-public-key> \
  --security-type TrustedLaunch \
  --enable-secure-boot true \
  --enable-vtpm true

Penjelasan Parameter:

  • --resource-group $MY_RESOURCE_GROUP_NAME: Menentukan resource group tempat VMSS akan dibuat.
  • --name $MY_SCALE_SET_NAME: Menentukan nama dari Virtual Machine Scale Set.
  • --vnet-name $VNET_NAME: Nama Virtual Network (VNet) tempat VMSS akan dihubungkan.
  • --subnet $SUBNET_NAME: Nama subnet di dalam VNet yang akan digunakan VMSS.
  • --nsg $NSG_NAME: Nama Network Security Group (NSG) yang akan diterapkan pada subnet.
  • --image Ubuntu2404: Menggunakan image Ubuntu 24.04 LTS untuk VM yang dibuat dalam scale set.
  • --vm-sku Standard_B1s: Menentukan spesifikasi VM (CPU, RAM, dll). Standard_B1s, Standard_B2s adalah tipe VM ekonomis.
  • --lb-sku Basic: Mengatur Load Balancer ke opsi tipe Basic atau Standard.
  • --storage-sku Standard_LRS: Menggunakan tipe penyimpanan HDD standar dengan replikasi Locally Redundant Storage (LRS). Standard_LRS, StandardSSD_LRS adalah tipe storage ekonomis.
  • --orchestration-mode Flexible: Mode orchestration Flexible, memungkinkan VM bekerja lebih independen (misalnya untuk workload stateful atau availability zones).
  • --instance-count 2: Jumlah instance (VM) yang akan dibuat di dalam scale set, dalam hal ini 2 VM.
  • --admin-username azureuser: Membuat username admin bernama azureuser untuk akses VM.
  • --ssh-key-values @<path-ke-file-public-key>: Menggunakan SSH public key untuk autentikasi (menggantikan password).
  • --security-type TrustedLaunch: Mengaktifkan fitur keamanan Trusted Launch untuk proteksi tingkat firmware.
  • --enable-secure-boot true: Mengaktifkan Secure Boot untuk memastikan hanya OS yang terenkripsi dan terverifikasi yang bisa boot.
  • --enable-vtpm true: Mengaktifkan virtual Trusted Platform Module (vTPM), menyediakan enkripsi tingkat hardware untuk perlindungan tambahan seperti disk encryption.

Menentukan Profil Autoscale
#

Buat profil Auto-Scaling, misalnya dengan menetapkan kapasitas minimum 2 instance VM dan maksimum 10 instance:

az monitor autoscale create \
  --resource-group $MY_RESOURCE_GROUP_NAME \
  --resource $MY_SCALE_SET_NAME \
  --resource-type Microsoft.Compute/virtualMachineScaleSets \
  --name autoscale \
  --min-count 2 \
  --max-count 10 \
  --count 2

Keterangan:

  • --count adalah jumlah instance awal saat autoscale pertama kali diterapkan.
  • Pastikan resource scale set sudah dibuat sebelumnya.

Membuat Aturan Autoscale
#

Scale Out (Menambah Jumlah Instance)
#

Contoh rule untuk melakukan scale out jika rata-rata penggunaan CPU melebihi 70% selama 5 menit. Jika kondisi ini terpenuhi, jumlah instance akan bertambah sebanyak 3:

az monitor autoscale rule create \
  --resource-group $MY_RESOURCE_GROUP_NAME \
  --autoscale-name autoscale \
  --condition "Percentage CPU > 70 avg 5m" \
  --scale out 3

Scale In (Mengurangi Jumlah Instance)
#

Contoh rule untuk melakukan scale in jika rata-rata penggunaan CPU kurang dari 30% selama 5 menit. Jika kondisi ini terpenuhi, jumlah instance akan dikurangi sebanyak 1:

az monitor autoscale rule create \
  --resource-group $MY_RESOURCE_GROUP_NAME \
  --autoscale-name autoscale \
  --condition "Percentage CPU < 30 avg 5m" \
  --scale in 1

Mensimulasikan Beban CPU
#

Untuk mensimulasikan beban CPU, Anda dapat menjalankan skrip berikut di instance VM:

for i in {1..3}; do
  yes > /dev/null &
done
sleep 3600
pkill yes

Penjelasan:

  • Perintah yes > /dev/null & digunakan untuk membebani CPU.
  • Tiga proses dijalankan secara paralel untuk meningkatkan beban.
  • Proses akan berjalan selama 1 jam (3600 detik), kemudian dihentikan dengan pkill yes.

Tunggu sekitar 5 menit (agar autoscaling memiliki waktu untuk bereaksi), lalu jalankan perintah berikut untuk memeriksa jumlah instance VM saat ini:

az vmss list-instances \
  --resource-group $MY_RESOURCE_GROUP_NAME \
  --name $MY_SCALE_SET_NAME \
  --output table

Contoh output:

InstanceId              Location       Name                    ResourceGroup
----------------------  -------------  ----------------------  ------------------
web-autoscale_0ea45584  southeastasia  web-autoscale_0ea45584  bisacloud-asia
web-autoscale_4b050a16  southeastasia  web-autoscale_4b050a16  bisacloud-asia
web-autoscale_5fd67caf  southeastasia  web-autoscale_5fd67caf  bisacloud-asia
web-autoscale_72615833  southeastasia  web-autoscale_72615833  bisacloud-asia
web-autoscale_be9dbc5b  southeastasia  web-autoscale_be9dbc5b  bisacloud-asia
web-autoscale_c2b76515  southeastasia  web-autoscale_c2b76515  bisacloud-asia
web-autoscale_f2851a81  southeastasia  web-autoscale_f2851a81  bisacloud-asia
web-autoscale_f755aebb  southeastasia  web-autoscale_f755aebb  bisacloud-asia

Anda juga dapat menggunakan perintah berikut untuk melihat status autoscale log atau metrik CPU:

az monitor metrics list \
  --resource /subscriptions/<subscription-id>/resourceGroups/$MY_RESOURCE_GROUP_NAME/providers/Microsoft.Compute/virtualMachineScaleSets/$MY_SCALE_SET_NAME \
  --metric "Percentage CPU" \
  --interval PT1M \
  --output table
# Menghentikan VM Scale Set
az vmss stop --resource-group $myResourceGroup --name $myScaleSet

# Menyalakan VM Scale Set
az vmss start --resource-group $myResourceGroup --name $myScaleSet

# Memulai ulang (restart) VM Scale Set
az vmss restart --resource-group $myResourceGroup --name $myScaleSet

Membuat Load Balancer Rule
#

Untuk menambahkan Load Balancer Rule, gunakan perintah berikut:

az network lb rule create \
  --resource-group <nama-resource-group> \
  --lb-name <nama-load-balancer> \
  --name <nama-rule> \
  --protocol <TCP|UDP> \
  --frontend-port <nomor-port-frontend> \
  --backend-port <nomor-port-backend>

Contoh jika ingin meneruskan trafik HTTPS dari port 443 ke backend port 443:

az network lb rule create \
  --resource-group myResourceGroup \
  --lb-name myLoadBalancer \
  --name https-rule \
  --protocol tcp \
  --frontend-port 443 \
  --backend-port 443

Referensi:

Related

Azure CLI Cheat sheet
·5 mins
azure azure
Create Simple Systemd Service in Linux
·2 mins
linux linux
Membangun Git Server Sendiri dengan Gitea
·3 mins
gitea git gitea
Menjalankan GitHub Actions Secara Lokal dengan Act
·1 min
git git
Memahami Format XML Domain Libvirt
·41 mins
libvirt libvirt kvm
Setup WireGuard VPN
·3 mins
wireguard wireguard vpn