Skip to main content

Membuat autoscaling instance pada openstack memanfaatkan layanan heat dan ceilometer

Heat autoscaling merupakan fitur tambahan pada openstack heat yang berfungsi untuk melakukan autoscaling pada sebuah mesin virtual. Komponen utama pada autoscaling adalah layanan orchestration. orchestration memungkinkan untuk mendefinisikan parameter atau aturan mengunakan template YAML yang mudah untuk dibaca. Pada aturan tersebut dapat diintegrasikan dengan layanan telemetri, sehingga ketika aturan tersebut sudah sesuai dengan aturan di layanan telemetri, maka telemetri dapat memberikan perintah ke heat orchestration untuk menambah atau mengurangi instance.

Sebelum mencoba membuat autoscaling ini, anda harus menginstall openstack bisa di coba disini.

tentunya anda akan menanyakan, kenapa kita butuh autoscaling? kapan kita memanfaatkan autoscaling? dan seterusnya…. ya pokoknya banyak pertanyaanlah :P,,,,,,

Sebelum kita membahas bagaimana konfigurasi autoscaling, kita juga harus mencari akar masalah kenapaย  autoscaling itu dibutuhkan,,, ayoo kita kupas ๐Ÿ˜€

Analisis Masalah

  • Variable Demand

Pada analisis ini lebih kearah penggunaan aplikasi website yang digunakan dalam rentang waktu tertentu. Penggunaan aplikasi website tersebut digunakan selama seminggu dengan instensitas yang rendah pada awal dan akhir minggu, sedangkan pertengahan minggu banyak user yang mengakses sehingga penggunaan website meningkat secara signifikan.

Gambar1

  • Secara tradisional untuk mengatasi perubahan kapasitas pada gambar 1 terdapat dua cara yaitu menambahkan server sehingga aplikasi selalu memiliki kapasitas yang cukup untuk memenuhi permintaan seperti pada gambar 2. Namun kelemahan dari pilihan ini adalah terdapat hari dimana suatu aplikasi tidak membutuhkan kapasitas sebanyak itu. Penambahan kapasitas tidak dipakai secara maksimal dan pada dasarnya hanya meningkatkan biaya supaya aplikasi tetap berjalan.

Gambar2

  • pilihan kedua adalah memiliki kapasitas yang cukup untuk menangani permintaan rata-rata pada aplikasi. Pilihan ini lebih murah karena tidak perlu membeli server yang hanyak digunakan sesekali saja. Namun terdapat resiko terhadap user yang mengakses jika permintaan di server sedang melebihi kapasitasnya, maka proses permintaan user akan terganggu. seperti pada gambar 3

Gambar3

  • Dengan menambahkan autoscaling ke aplikasi ini, maka terdapat pilihan ketiga yang lebih efektif dan efisien. Karena instance akan terbentuk jika hanya diperlukan saja dan instance akan diberhentikan ketika sudah tidak dibutuhkan lagi. Sehingga dengan solusi yang ketiga ini memiliki arsitektur yang hemat biaya dan mempercepat layanan tanpa campur tangan admin. seperti pada gambar 4

Gambar4

Analisis Fungsional

secara fungsional autoscaling dapat diterapkan sebagai berikut:

  1. Autoscaling berguna ketika suatu aplikasi membutuhkan sumber daya tambahan untuk memenuhi jumlah permintaan dari pengguna aplikasi secara dinamis.

  2. Autoscaling dapat merancang arsitektur terukur yang secara otomatis meningkatkan atau memperkecil skala untuk memenuhi kebutuhan pengguna.

  3. Autoscaling tidak hanya berguna dalam penanganan lonjakan lalu lintas data ke server namun autoscaling juga berfungsi mempersiapkan infrastruktur untuk satu sampai sepuluh tahun kedepan.

Flowchart autoscaling

Work Flow autoscaling

Alur kerja pada autoscaling memiliki komponen utama yaitu scalingmain yang digunakan untuk memasukan sebuah kode ke beberapa mesin virtual di autoscaling group. Pada awalnya autoscaling group memiliki dua instance. secara detail penjelasan alur kerjanya seperti berikut :

  1. Tahap pertama adalah layanan heat menggunakan ssh untuk melakukan menyisipkan kode dari scalingmain ke mesin virtual.

  2. Setelaah itu layanan ceilometer menggunakan alarm untuk memonitoring utilitas cpu dari semua mesin virtual di scaling group

  3. Kemudian jika rata-rata utilitas cpu dari stack (scaling group) lebih besar atau sama dengan 80% maka layanan ceilometer akan mengaktifkan alarm cpu_high dan jika penggunaan rata-rata cpu kurang dari 15% maka ceilometer akan mengaktifkan alarm cpu_low.

  4. Jika utilitas cpu lebih dari 80% maka ceilometer akan memberikan notifikasi alarm action ke url scaling policy untuk melakukan autoscaling up kemudian akan terbentuk satu instance, Namun jika utilitas cpu kurang dari 15% maka ceilometer akan memberikan notifikasi alarm action ke url scaling policy untuk melakukan autoscaling down dengan menghapus satu instance.

  5. Layanan ceilometer akan memonitoring utilitas cpu di scaling group secara terus-menerus

wah lumayan banyak juga ya penjelesanya, okee………. sekarang kita coba buat template heat orchestration untuk menerapkan autoscaling di openstack ๐Ÿ™‚

Membuat template network

sebelum menjalankan template ini, maka kita harus membuat netowrk external dengan nama net-ext, anda bisa coba disini

nama file template ini adalah network.yaml di host controller

kemudian jalankan pada cli, sebelumnya harus jalankan environment

jika stack sudah selesai terbentuk maka akan berstatus create_complate, kita bisa lihat hasilnya pada dashboard openstack

selain itu stack network.yaml yang sudah terbentuk akan muncul topologi stack pada heat orchestration

misalkan ada yang error waktu menjalankan file network.yaml, anda bisa lihat errornya pada events

Menjalankan Template Autoscaling

sebelum menjalankan autoscaling, kita harus mengkonfigurasi beberapa service diantaranya adalah layanan ceilometer pada controller yang berfungsi untuk memonitoring utilitas cpu.

selain itu mengkonfigurasi polling interval dan refresh pipeline pada /etc/ceilometer/ceilomter.conf

setelah itu restart laynan ceilomternya

sebelumnya kita harus membuat instance khusus nfs untuk menampung data website yang akan digunakan oleh instace autoscaling, sehingga ketika instance autoscaling terjadi down atau up, maka data website tidak akan terpengaruh karena tersimpan pada share storage

file nfs-server.yaml

kemudian jalankan file nfs-server.yaml

setelah itu 3 template utnuk autoscaling diantaranya adalah web-server.yaml, mail.yaml dan env.yaml

file web-server.yaml

file env.yaml

file main.yaml

pastikan atribut pada file untuk autoscaling tersebut sudah sesuai dengan environtment di openstack, seperti nama keypair, nama image dll.

pada file main.yaml berfungsi sebagai file autama autoscaling dimana didalamnya terdapat scale policy dan aodh alarm. pada scale policy berfungsi untuk menentukan ketika autoscaling up maka akan bertambah 1 instance berdasarkan scaling_adjustment: 1, dan ketika autoscaling down maka akan berkurang 1 instance berdasarkan scaling_adjustment: -1. dan pada aodh alarm berfungsi untuk pemicu yang akan arahkan ke scale policy, sehingga ketika utilitas cpu atau threshold lebih dari 80% selama periode 60 detik maka akan diteruskan ke scaleup policy , sebaliknya ketika rata-rata penggunaan cpu atau threshold kurang dari 15% selama 300 detik maka akan diteruskan ke scaledown policy.

tahap selanjutnya adalah menjalankan file autoscaling pada host controller

setelah stack autoscaling terbentuk maka akan membentuk topologi komposit di dashboard openstack

selain itu pada openstack akan terbentuk 2 instance karena sudah diset disired capacity sama dengan 2.

setelah file autoscaling sudah berjalan maka tahap selanjutnya adalah menguji autoscaling tersebut apakah dapat berjalan dengan baik atau tidak,

Topologi awal terbentuk

Topologi setelah terjadi autoscaling up

Topologi setelah terjadi autoscaling down

Untuk lebih jelasnya, anda dapat melihat video demo nya dibawah ini

mungkin cukup sekian dulu, pembahasan autoscaling di openstack semoga bermanfaat. sebenarnya autoscaling tidak hanya di openstack namun bisa juga di jalankan pada public cloud seperti aws, google cloud platform ataupun rackspace.

Wassalamualaikum ๐Ÿ™‚

Alan Adi Prastyo

System Engineer