Konfigurasi HAProxy dengan Galera Cluster pada CentOS 7 Server

Assalamualaikum Wr. Wb.

Sebelumnya saya sudah membagikan tulisan saya tentang cara konfigurasi HAProxy sebagai load balancer untuk web server nginx. Pada kali ini saya akan melanjutkan pembahasan yang sama tentang HAProxy akan tetapi mengimplementasikan load balancer-nya untuk galera cluster.

Sebenarnya caranya hampir sama, akan tetapi bedanya pada sisi konfigurasi HAProxy saja dan menggunakan port yang berbeda. Sebelumnya saya jelaskan dulu project yang saya kerjakan ini bersama dengan teman seperjuangan saya sebut saja namanya Leon :). Saya mengerjakan HAProxy untuk galera cluster , sedangkan teman saya mengerjakan HAProxy untuk web server. Jadi project ini mengkombinasikan dua HAProxy dengan mengimplementasikan backend server yang berbeda yaitu database server dan web server. Adapun web yang digunakan berbasis Content Mangement System (CMS) WordPress, untuk database WordPress tersebut mengambil dari galera cluster yang saya buat. Untuk koneksi antara HAProxy dengan galera cluster menggunakan IP privat, kemudian dari HAProxy tersebut menghubungkan ke web server menggunakan IP Privat sedangkan akses websitenya menggunakan IP publik. Untuk lebih jelasnya Anda dapat melihat topologinya seperti berikut :

Topologi HAProxy untuk galera cluster dengan Haproxy untuk web server

Oke, langsung saja kita menuju ke pokok pembahasannya. Sebelum melakukan instalasi dan konfigurasi siapkan beberapa syarat seperti dibawah ini :

  1. Sistem operasi CentOS 7 Server
  2. IP Publik dan IP Privat
  3. Install mariadb dan konfigurasi Galera Cluster menggunakan mariadb (tiga node)
  4. Install HAproxy

1. Menganti Hostname

Pertama kali yang harus dilakukan adalah mengganti hostname pada masing-masing node, untuk galera cluster silakan untuk mengganti hostname-nya menjadi mariadb01, mariadb02, dan mariadb03 sedangkan untuk node HAProxy ganti hostname menjadi haproxy. Setelah dilakukan perubahan hostname, langkah selanjutnya adalah menambahkan hostname galera cluster pada masing-masing node (mariadb & haproxy) seperti berikut :

<IP Address> (Tanpa tanda kurung) mariadb01
<IP Address> (Tanpa tanda kurung) mariadb02
<IP Address> (Tanpa tanda kurung) mariadb03

Langkah selanjutnya silakan untuk menginstall mariadb pada tiga node dan lakukan konfigurasi untuk membuat galera cluster, untuk lebih jelasnya Anda dapat melihat pada post sebelumnya tentang konfigurasi galera cluster berikut.

Karena sebelumnya kita sudah membahas bagaimana cara konfigurasi HAProxy juga, langsung saja kita buat konfigurasi HAProxy nya. Apabila Anda masih belum mengetahui caranya, Anda dapat melihatnya pada post berikut. Sebenarnya perubahan konfigurasi HAProxy pada kali ini hanya pada bagian frontend dan backend saja, kurang lebih contohnya seperti ini :

frontend galera_cluster_frontend
     bind 0.0.0.0:3306
    mode tcp
    option tcplog
    default_backend galera_cluster_backend

# Galera Cluster Backend configuration
backend galera_cluster_backend
    mode tcp
    option tcpka
    balance roundrobin
    server mariadb01 (IP_Address):3306  check weight 1
    server mariadb02 (IP_Address):3306  check weight 1
    server mariadb03 (IP_Address):3306  check weight 1

Keterangan :

Gunakan IP 0.0.0.0 agar mariadb dapat diakses oleh semua host dengan port 3306. Kemudian ganti IP Address dengan IP Address mariadb01,02,03 Anda. Setelah itu simpan hasil konfigurasinya dan restart service HAProxy menggunakan perintah systemctl restart haproxy. Namun perlu dicatat untuk port yang digunakan oleh HAProxy yaitu 3306, hal ini bermaksud untuk menghubungkan dengan galera cluster Anda. Adapun untuk algoritma loadbalancer yang digunakan adalah roundrobin.

2. Pengujian Akses Mariadb

Sekarang coba login mariadb di node HAProxy, namun sebelumnya Anda harus menginstall mariadb-client terlebih dahulu. Install dengan perintah yum install mariadb-client. Selanjutnya coba remote mariadb dari node HAProxy dengan perintah : mysql -u root -h (IP_Address HAProxy) -p masukkan passwordnya. Jika Anda berhasil masuk, berarti HAProxy dan galera cluster sudah terhubung dengan baik.

Database server bisa diakses normal

3. Membuat Database WordPress

Langkah selanjutnya adalah membuat user dan database WordPRess pada galera cluster, user dan database tersebut akan digunakan untuk membuat website WordPress. Untuk membuat user dan database tersebut gunakan perintah seperti biasanya.

create user '<username>'@'%' identified by '<password>';
grant all privileges on *.* to '<username>'@'%' identified by '<password>';
show grants for <username>;
flush privileges;

Keterangan :

% : agar database server dapat diakses oleh semua host

show grants for : digunakan untuk menunjukkan privileges pada suatu user database.

Setelah database WordPRess sudah dibuat, silakan untuk melakukan instalasi CMS WordPress dengan menggunakan database yang sudah dibuat sebelumnya. Namun, Anda harus memastikan bahwa koneksi yang dibuat sebelumnya sudah terhubung antara galera cluster dengan node websitenya. Berikut apabila galera cluster dan node website sudah berhasil terhubung dengan baik.

Database wordpress sudah terisi dengan baik
Website bisa diakses dengan normal

4. Akses Monitoring HAProxy

Untuk memudahkan dalam monitoring HAProxy, Anda dapat mengakses tool monitoring yang sudah disediakan oleh HAProxy sendiri. Sebelumnya kita sudah menambahkan konfigurasi untuk monitoring HAProxy nya pada file haproxy.conf. Agar dapat mengakses monitoring HAProxy tersebut, Anda dapat mengaksesnya melalui browser seperti url yang sudah saya deklarasikan sebelumnya : <IP_Address>:8080/stats, masukkan username dan passwordnya, berikut tampilannya :

Monitoring dapat diakses dengan normal

Pada bagian galera_cluster_backend menunjukkan node backend dengan status running secara keseluruhan. Anda dapat mencobanya untuk menonaktifkan salah satu node backend tersebut untuk memastikan bahwa website masih dapat diakses normal atau tidak, hal ini bermaksud untuk menguji apakah galera clusternya. Untuk mengentikan service mariadbnya Anda dapat menjalankan perintah pada node mariadb dengan perintah systemctl stop mariadb. Nantinya warna dari node backend tersebut akan berwarna kuning yang menunjukkan proses stop hingga akhirnya berwarna merah. Untuk mengembalikan service mariadbnya Anda dapat menjalankan perintah systemctl start mariadb.

Node mariadb01 mati
Node mariadb02 mati
Website tetap dapat diakses dengan normal

Walaupun beberapa node mariadb ada yang mati, website tetap bisa diakses dengan normal tanpa ada downtime karena salah satu keuntungan dari galera cluster menggunakan replikasi secara sinkron sehingga tidak ada slave lag dan tidak ada data hilang pada saat crash. Untuk informasi lebih detail terkait dengan keuntungan dari galera cluster, Anda dapat membacanya melalui tautan referensi berikut.

Itulah tutorial tentang bagaimana cara membuat HAProxy untuk galera cluster yang mengkombinasikan dengan HAProxy untuk web server. Semoga bermanfaat dan barokah. Aamiin.

Referensi :

HAProxy Galera

Keuntungan Galera Cluster

2 thoughts on “Konfigurasi HAProxy dengan Galera Cluster pada CentOS 7 Server

Leave a Reply

Your email address will not be published. Required fields are marked *