ha-logo

CentOS 7 High Availability – Corosync Pacemaker Bag. 2

Pada tulisan sebelumnya, Aitech sudah melakukan instalasi Corosync, Pacemaker dan juga pcsd, ketiga node yang dimaksudkan untuk clustering juga sudah terhubung satu sama lainnya dan pcs cluster command sudah berhasil menjalankan ketiga node tersebut melalui 1 node tertentu saja.

Konfigurasi Cluster

pertama sekali, verifikasi terhadap konfigurasi cluster apakah masih ada yang error:

[root@node1 ~]# crm_verify -L -V

Jika muncul hasil seperti ini :

Berarti masih ada error yang harus diperbaiki pada konfig yang berkenaan dengan STONITH (Shoot The Other Node In the Head), merupakan satu mekanisme untuk memastikan bahwa antara node tidak saling meng-klaim dirinya sebagai active/master dan merasa memiliki hak akses terhadap virtual ip, kadang disebut juga dengan split brain. karena node yang disetup juga sedikit, kami rasa tidak perlu menggunakan STONITH ini:

Seharusnya jika perintah crm verify ini dijalankan lagi, sudah tidak muncul kesalahan seperti sebelumnya.

Virtual IP address

Tahapan berikutnya adalah menambahkan virtual IP ke dalam clustering, virtual IP ini akan digunakan oleh service yang berjalan dalam cluster (seperti mail server, web server dll). Virtual IP ini menggunakan opsi resource , seperti berikut:

[root@node1 ~]# pcs resource create virtual_ip ocf:heartbeat:IPaddr2 ip=172.18.64.28 cidr_netmask=24 nic=eno16777984 op monitor interval=30s

seperti yang terlihat diatas, Aitech membuat sebuah virtual IP dengan opsi IPaddr2 karena distro yang digunakan Centos7 dan menggunakan aplikasi /sbin/ip untuk setup ip address, IP Address yang ditambahkan adalah 172.18.64.28  dan virtual ip ini diberi nama virtual_ip. Jika sekarang dijalankan perintah ping pada setiap node, harus dipastikan virtual ip ini merespon :

untuk melihat node yang aktif menggunakan resource/virtual ip:

terlihat virtual_ip ini sekarang aktif di node1.

Apache webserver configuration

Setelah virtual ip sudah berjalan, saatnya sekarang Aitech akan melakukan konfigurasi service (web server) dan membuat service ini berjalan sebagai HA pada seluruh node dalam cluster. Namun sebelumnya terlebih dahulu harus di install paket Apache pada seluruh node dan juga membuat sebuah berkas html pada setiap webserver root directory untuk melihat perubahan dalam HA.

Agar HA ini bisa mengetahui satu service di node tersebut tidak aktif, maka pada Apache konfig juga harus diizinkan pengecekan server-status. 

Install Apache pada seluruh node:

dan pastikan juga firewal memberikan hak akses pada port tcp 80:

 

Untuk memberitahukan Cluster bahwa Apache pada node tertentu sedang aktif dan merespon, maka perlu dibuatkan sebuah mekanisme sederhana, Aitech membuat status-page dari webserver yang oleh cluster secara regular akan di query untuk mengetahui kondisi http service. Untuk menghindari kekeliruan query pada status-page maka perlu kita batasi hanya localhost saja yang bisa mengakses status-page.

Buatlah sebuah berkas dalam /etc/httpd/conf.d/serverstatus.conf  dengan isi sebagai berikut:

replikasikan berkasi tersebut ke seluruh node:

 

Jalankan Service Apache pada seluruh node untuk memverifikasi bahwa status page sudah berjalan:

[root@node1 ~]# systemctl restart httpd

selanjut memastikan bahwa localhost sudah bisa mengakses /server-status 

[root@node3 ~]# curl -q http://127.0.0.1/server-status

Setelah itu membuat sebuah berkas html sederhana ke dalam document-root dari Apache Web Server yang kira-kira berisi nama node yang sedang menggunakan Virtual IP untuk mengetahui node mana yang sedang aktif. Pada Web Server yang sudah produktif hal ini sudah tidak perlu lagi karena seharusnya setiap konten dari cluster itu sama 🙂 

 

Sekarang Aitech akan stop webserver pada seluruh node, Karena sekarang merupakan tanggung jawab dari cluster yang akan melakukan start ataupun stop pada service http. 

Mematikan Service Apache:

Nah, sekarang Apache sudah siap untuk di kontrol dan monitor oleh cluster, Aitech akan menambahkan cluster resource untuk web server. Untuk sekedar diketahui, perintah ini hanya perlu dilakukan pada salah satu node saja dalam cluster, tidak harus di terapkan satu persatu pada seluruh node karena semua sudah ditangani oleh PCS: 

[root@node1 ~]# pcs resource create webserver ocf:heartbeat:apache configfile=/etc/httpd/conf/httpd.conf statusurl="http://localhost/server-status" op monitor interval=1m

Secara default, cluster akan melakukan balancing resource terhadap seluruh node dalam cluster. Artinya, Virtual IP yang sudah disetup sebelumnya bisa juga berjalan pada node yang berbeda dengan web servernya, ini akan membuat web server tidak bisa aktif karena virtual ip tersebut tidak ditemukan karena web server berjalan pada node yang bukan owner virtual ip. Untuk menghindari hal tersebut, maka kita perlu memastikan bahwa Apache dan Virtual IP berjalan pada node yang sama, disini perlu ditambahkan opsi constraint:

[root@node1 ~]# pcs constraint colocation add webserver virtual_ip INFINITY

Untuk menghindari situasi dimana web server berjalan terlebih dahulu dari pada virtual IP pada node tertentu dalam cluster, perlu ditambahkan constraint yang memaksakan urutan yang mana yang harus aktif terlebih dahulu:

Perintah diatas, memastikan bahwa urutan yang prioritas ada virtual_ip baru setelahnya webserver, maka node yang bertanggung jawab menjaga kualitas HA ini akan memastikan web server tidak boleh aktif sebelum virtual_ip aktif.

Untuk melihat konfigurasi dari constraints:

Setelah seluruh constraint sudah terkonfigur, saatnya Aitech melakukan restart pada cluster dan melakukan pengecekan ulang pada masing-masing node:

Berikut hasil pengecekan pcs status :

pcs status

seperti yang terlihat pada gambar diatas, virtual_ip dan web server saat ini aktif pada node1. jika semua konfigurasi sudah benar, harusnya sekarang kita bisa mengakses virtual ip 172.18.64.28 pada node1 :

Tahap selanjutnya adalah pengetesan failover, Aitech akan mencoba mematikan cluster untuk node1.alifia.co.id dan coba sama-sama kita perhatikan virtual_ip dan website akan pindah ke node yang aktif lainnya: 

Dengan perintah yang sama seperti sebelumnya, maka sekarang terlihat bahwa virtual ip ditangani oleh node2 :

Untuk Server Production, sebaiknya menggunakan cluster filesystem seperti drbd ataupun glusterfs sehingga setiap data terdistribusi merata dan tidak ada perbedaan.

 

Demikian tulisan pengenalan clustering dari Aitech, semoga bermanfaat. Jika ada masalah atau ingin meng-hire konsultan Aitech – silahkan gunakan menu Kontak – kami siap membantu dan menjaga server Anda 🙂

 

 

Leave A Comment

Your email address will not be published. Required fields are marked (required):

Back to Top