Kali ini saya mau membuat catatan bagaimana caranya membangun CentOS High Availability Cluster menggunakan Ricci dan Luci. Dalam simulasinya kali ini topologi yang digunakan kira-kira seperti dibawah ini.
NOTES
Bedasarkan Topologi diatas, kondisi semua node yaitu.
- Selinux, dalam keadaan disabled.
- Iptables, dalam keadaan off. Untuk matiinnya /etc/init.d/iptables stop.
- NetworkManager services dalam keadaan off. Untuk matiinnya /etc/init.d/NetworkManager stop.
- Menggunakan DNS Server, kalo gak ada DNS Server bisa gunakan /etc/hosts dan definisikan semua IP Address dan Hostname seluruh node cluster. Konfigurasi /etc/hosts di masing-masing node pada topologi yang saya buat diatas adalah seperti dibawah ini, contoh dibawah diambil dari node-1.
[root@node-1 ~]# cat /etc/hosts
192.168.227.10 node-1 node-1.arifzulfikarp.net
192.168.227.20 node-2 node-2.arifzulfikarp.net
192.168.227.30 node-3 node-3.arifzulfikarp.net
Mengenal Komponen-Komponen Cluster
- Ricci adalah cluster management daemon dan daemon inilah yang bertugas untuk memanage resource dalam cluster kita nanti. Default port yang digunakan oleh ricci adalah 11111.
- Luci adalah cluster management tools yang sangat friendly. Sebenernya ketika implementasi cluster ini kita bisa saja menggunakan command line namun dengan menggunakan luci hampir sebagian banyak fiturnya dapat di manage menggunakan web, bahkan packages yang akan diinstall di node-node yang ada dalam cluster pun dapat di manage oleh luci.
Sebenarnya ada begitu banyak resource dan services yang dapat dikelola oleh linux cluster seperti mysql, filesystem, postgresql, tomcat, script, dsb. Namun kali ini saya mau mencontohkan membuat cluster web services dan service resource yang akan dimanage di dalam service groups adalah apache.
Apabila kita sudah membuat environment seperti topologi diatas, maka selanjutnya adalah tahap instalasi package dan konfigurasi semua node tersebut.
INSTALL PACKAGE & KONFIGURASI NODE-1
Install Luci & Ricci
[root@node-1 ~]# yum install ricci -y
[root@node-1 ~]# yum install luci -y
Setting Password Ricci
Password ricci di set karena digunakan oleh luci nanti untuk berkomunikasi antara node.
[root@node-1 ~]# passwd ricci
Lalu masukan password yang kamu inginkan.
Jalankan Service Luci & Ricci dan Buat Persistent On Boot
[root@node-1 ~]# chkconfig ricci on
[root@node-1 ~]# chkconfig luci on
[root@node-1 ~]# /etc/init.d/ricci start
[root@node-1 ~]# /etc/init.d/luci start
Setelah menjalankan service luci, akan ada notifikasi melalui prompt yang memberitahukan bahwa untuk mengakses Luci melalui web seperti ini.
Point your web browser to https://node-1.arifzulfikarp.net:8084 (or equivalent) to access luci.
Nah apabila kamu akses dari PC yang tidak terintegrasi dalam DNS domainnya, sebagai alternatif kita bisa juga akses luci melalui IP Addressnya seperti https://192.168.227.10:8084. Tampilan Luci Web Management ketika kita akses ialah seperti dibawah ini.
Sebagai catatan, untuk akses username dan password digunakan adalah.
username : root
password : <password root node yang kita setting>
Apabila sudah diakses luci web managementnya, kita skip dulu dan lanjut untuk install ricci di node lain.
INSTALL PACKAGE & KONFIGURASI NODE-2
Install Ricci
[root@node-2 ~]# yum install ricci -y
Setting Password Ricci
Password ricci di set karena digunakan oleh Luci nanti untuk berkomunikasi antara node.
[root@node-2 ~]# passwd ricci
Lalu masukan password yang kamu inginkan.
Jalankan Service Ricci dan Buat Persistent On Boot
[root@node-2 ~]# chkconfig ricci on
[root@node-2 ~]# /etc/init.d/ricci start
INSTALL PACKAGE & KONFIGURASI NODE-3
Install Ricci
[root@node-3 ~]# yum install ricci -y
Setting Password Ricci
Password ricci di set karena digunakan oleh Luci nanti untuk berkomunikasi antara node.
[root@node-3 ~]# passwd ricci
Lalu masukan password yang kamu inginkan.
Jalankan Service Ricci dan Buat Persistent On Boot
[root@node-3 ~]# chkconfig ricci on
[root@node-3 ~]# /etc/init.d/ricci start
Apabila sudah semua install package dan setting password ricci diatas saatnya kita masuk ke Luci Web Management dan mulai buat clusternya.
NOTES
- Agar managemennya mudah pastikan password ricci di setiap node sama, hal ini bertujuan akan lebih mudah managemen dan troubleshotnya dikemudian hari.
KONFIGURASI CLUSTER MELALUI LUCI WEB-MANAGEMENT
Karna kita install Luci di Node-1, akses Luci melalui browser ke arah IP Address node-1.Akses https://192.168.227.10:8084 melalui web browser.
username : root
password : <password root node yang kita setting di node-1>
BUAT CLUSTER & MASUKAN NODE-NODE YANG KITA INGINKAN
Setelah berhasil login maka langkah selanjutnya adalah membuat cluster. Langkah-langkahnya ialah seperti dibawah ini.
Pilih Tab Manage Clusters - Create
Setelah itu isi form create new cluster tersebut dengan menyesuaikan parameter saya konfigurasikan dibawah ini.
Notes
- Cluster Name : Isi sesuai dengan yang kita inginkan.
- Node Name : Isi sesuai dengan hostname node-node yang ingin kita daftarkan ke dalam cluster, karena luci ini ada di node-1 maka pastikan node-1 dapat resolve semua node name yang kita daftarkan diatas. Untuk memastikannya bisa menggunakan ping node-2, node-3 dari node-1.
- Pilih Download Packages, dengan memilih parameter ini maka Luci akan yang akan mengatur packages-packages installer yang dibutuhkan untuk membuat cluster pada node-node yang kita daftarkan tersebut. Agar proses tidak gagal, maka pastikan juga node-node tersebut sudah terkoneksi dengan repository pendukungnya.
- Checklist Reboot Nodes Before Joining Cluster, Luci akan melakukan reboot setelah package diinstall dan sebelum di insert kedalam cluster.
- Ricci Port, adalah port yang digunakan oleh ricci untuk saling berkomunikasi antara node-node yang membentuk cluster.
Setelah selesai semua maka pilih Create Cluster, tunggu beberapa saat sampai proses selesai karena lumayan lama.
Setelah selesai maka harusnya node-node yang kita daftarkan tadi sudah ada dalam cluster, seperti dibawah ini.
BUAT FAILOVER DOMAINS
Pada tahap ini kita harus mendefinisikan node-node yang masuk kedalam Failover Domains di dalam cluster kita. Node-node yang kita daftarkan disini akan berbagi resource untuk menghandle services yang kita definisikan di services group pada tahap selanjutnya apabila terjadi problem seperti hardware failure, service stuck/hang, dsb.
Pilih Tab Manage Clusters lalu pilih hacluster, selanjutnya pilih Failover Domains - Add
Setelah itu isi form Add Failover Domain to Cluster dengan menyesuaikan parameter yang saya konfigurasikan seperti dibawah ini.
Untuk option lainnya seperti prioritized, restricted, no failback bisa menyesuaikan dengan kebutuhan kita di lapangan.
Apabila tampilan seperti dibawah ini maka proses membuat failover domain telah berhasil.
DEFINISIKAN RESOURCE YANG AKAN DIMANAGE CLUSTER
Pada lab kita kali ini karena kita membuat cluster untuk webservices maka penerapannya mengikuti topologi yang saya buat diatas.
Ada 2 resource yang harus kita definisikan, yaitu.
- Virtual IP Address
- Apache
1) Buat Resource - Virtual IP Address
Pilih Tab Manage Clusters lalu pilih hacluster, selanjutnya pilih Resources - Add
Akan muncul banyak option, pilih IP Address dan isi form sesuai dengan yang topologi diatas, kita ingin membuat virtual IP Address dalam cluster dengan IP 192.168.227.100.
Setelah selesai submit.
2) Buat Resource - Apache
Pilih Tab Manage Clusters lalu pilih hacluster, selanjutnya pilih Resources - Add
Akan muncul banyak option, pilih Apache dan isi form konfigurasi sesuai dengan yang saya isi dibawah ini.
Setelah selesai submit.
Setelah selesai proses membuat kedua resource diatas, maka akan ada 2 resource yang akan menjadi global resource yang akan kita gunakan di services group seperti dibawah ini.
Notes
- Parameter Name, adalah nama yang akan muncul dan kita gunakan di service groups pada tahap selanjutnya.
- Parameter Server Root, adalah root direktori Apache. Apabila webservice yang kita gunakan adalah webserver lain seperti EngineX maka kita bisa sesuaikan root direktoriknya.
- Parameter Config file, adalah lokasi konfigurasi file untuk Apache. Apabila lokasi konfigurasi file yang kita gunakan terletak di direktori lainnya maka kita bisa sesuaikan dengan kebutuhan.
BUAT SERVICE GROUPS UNTUK WEB SERVICES DARI KUMPULAN RESOURCE YANG TELAH DIDEFINISIKAN
Pada tahap ini kita akan membuat resource web services tersebut berjalan dalam satu kesatuan, node-node di dalam cluster lain akan saling backup apabila node utama bermasalah. Dibawah ini langkah-langkah konfigurasinya.
Pilih Tab Manage Clusters lalu pilih hacluster, selanjutnya pilih Service Groups - Add
Lalu isi form Add Service Group to Cluster dan sesuaikan dengan parameter yang saya isi (kotak merah) seperti dibawah ini.
Apabila parameter yang dikotak merah sudah sesuai, klik Add Resource (kotak biru) lalu pilih IP Address 192.168.227.100 dari tab global resources yang telah kita konfigurasi di tahap sebelumnya. Seperti contoh dibawah ini.
Nah setelah langkah diatas selesai selanjutnya akan muncul tampilan dibawah ini. Pilih Add Child Resources.
Lalu kita pilih dari tab global resource yaitu apache_webservices sesuai dengan name resource apache yang kita konfigurasi di tahap sebelumnya.
Jika sudah benar maka di list service groups akan ada tampilan seperti dibawah ini.
Dari informasi diatas maka seharusnya services groups webservices sudah berjalan didalam cluster dan dari informasi status terlihat informasi "Running on node-1". Hal ini sudah sesuai dengan konfigurasi karena kita menggunakan option Prioritized dan priority 1 pada node-1.
OK sekarang seluruh tahap konfigurasi telah selesai, maka kita masuk ke tahap selanjutnya yaitu testing.
TESTING CLUSTER
1) TESTING MELALUI VIRTUAL IP ADDRESS
Sesuai dengan topologi diatas dan konfigurasi yang telah kita lakukan, kita membuat resource virtual ip address 192.168.227.100 maka untuk testingnya apakah website bisa diakses atau tidak coba akses dari PC Anda melalui browser http://192.168.227.100.
Apabila tampilan seperti diatas berarti webservices yang ada di node-node dalam cluster sudah bisa diakses melalui ip virtual yang telah kita buat.
2) TESTING FAILOVER
Untuk melakukan testing failover ini caranya mudah, seperti informasi yang kita dapatkan dari services groups ketika resource ini berjalan pada node-1.
Lalu akses lagi virtual IP address melalui browser http://192.168.227.100.
Apabila kita berhasil mengakses webserver seperti diatas berarti cluster berjalan dengan baik dan dalam hal ini ada node lain yang menggantikan tugas node-1 yang mati.
Untuk memastikan node mana yang menghandel resource tsb gunakan command clustat di node lain seperti node-2 atau node-3.
Dari hasil output diatas pada node-2 terlihat saat ini ketika node-1 mati maka node-2 yang mengantikan tugasnya menjalankan resource webservices. Hasil output ini juga menunjukan bahwa hasil output sudah sesuai dengan konfigurasi (node-2 sbg priority).
NOTES
Pada Implementasi Clustering HA di Linux terdapat beberapa command untuk pengecekan, command ini berguna untuk melakukan checklist pengecekan dan troubleshot.
- clustat
- corosync-objctl | grep members
- cman_tool nodes
- cman_tool status
- ccs_config_validate
- cman_tool version -r
- clusvcadm -r <namaservicegroups> -m <nodetujuan>
- clusvcadm -s <namaservicegroups>
Dan masih banyak lagi apabila ingin mengetahui lebih banyak option command lengkap clusvcadm bisa gunakan man clusvcadm.
Sekian dulu catatan saya mengenai Centos High Availability dan semoga bermanfaat buat temen-temen yang baca.
Selamat siang mas Arif,
ReplyDeleteSaya mau tanya mas, kalo pakai ricci dan luci ini database web nya apakah repicate mas ? apakah yang melaukan replicate ricci atau mesti configure manual di mysql nya.
Jika untuk web apache dan mysql lebig bagus mana mas menggunakan ricci dan luci atau HA PROXY.
Terima kasih
Untuk database kalo mau replicate harus di konfigurasi dari mysqlnya apabila yg digunakan mysql.
DeleteLuci & Ricci ini untuk Cluster level OS, jadi system akan HA Layer OS.
Kalo HA Proxy untuk reverse proxy, jadi bisa dianggap HA tapi layer network.
Mas mau nanya, kalau pake ricci sama luci jika 1 node mati, apakah node 1 lagi ada backup data? plisssssss..
ReplyDeleteTeknik HA selalu merekomendasikan node 1 dan node sebelahnya similar, artinya memiliki data yg sama.
DeleteAgar data syncronize biasanya menggunakan teknik sharing file seperti NFS,csync, centralized storage, dsb