Install Galera Cluster di CentOs 7

Assalamualaikum Wr. Wb.

Hal yang sangat penting dan dibutuhkan dalam suatu aplikasi adalah kebutuhan database atau manajemen database server yang dapat mengelola data aplikasi dengan baik. Terkadang administrator tidak ingin rumit dalam manajemen database, seperti membuat cluster database. Akan tetapi jika hal tersebut tidak dilakukan akan lebih rumit, apabila database down sehingga menyebabkan aplikasi tidak bisa diakses. Sehingga adanya cluster database berguna untuk menghindari terjadinya database yang down/redundancy.

Sebut saja membuat sistem high availability, jika tidak memiliki database cluster akan sangat membahayakan keperluan administrator maupun pengguna pada saat mengakses aplikasi tersebut. Untuk membangun sebuah database cluster, Anda dapat menggunakan konsep master – slave atau master-master. Nah, pada pembahasan kali ini saya ingin membagikan tulisan saya mengenai cara membuat database cluster menggunakan galera dengan metode master-master.

Galera Cluster merupakan multi master cluster database yang dapat saling melakukan replikasi secara sinkron. Galera mudah digunakan seperti kebutuhan sistem high availability dimana menyediakan up-time sistem yang tinggi, tidak ada data yang hilang (loss) dan skalabilitas untuk perkembangan yang lebih baik. Untuk lebih detailnya Anda dapat melihat referensinya secara resmi pada tautan galera .

Sebelum melakukan instalasi dan konfigurasi galera, kita harus mengetahui topologi galera cluster yang akan kita gunakan seperti salah satu contoh berikut ini :

Topologi Galera Cluster
Keterangan : pada gambar tersebut untuk melakukan replikasi database membutuhkan tiga node master. 

Langsung saja kita menuju ke inti pembahasan, untuk melakukan instalasi siapkan terlebih dahulu sistem operasi CentOs 7 server Anda. Anda dapat menggunakan Virtual Machine (VM) di komputer lokal Anda, atau menggunakan Virtual Private Server (VPS). Selain itu Anda perlu membutuhkan paket mariadb, kali ini saya menggunakan versi 10.4.

  1. 1. Tambahkan repo mariadb 10.4 terlebih dahulu

vim /etc/yum.repos.d/mariadb.repo

Isikan dengan repo pada teks berikut ini :

[mariadb]

name = MariaDB

baseurl = http://yum.mariadb.org/10.4/centos7-amd64

gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB

gpgcheck=1

Simpan konfigurasi dan update repo CentOs 7 server Anda dengan perintah : yum update -y.

Install mariadb 10.4 pada masing-masing node master dengan menggunakan perintah yum install MariaDB-server MariaDB-client

Start dan aktifkan service mariadb 10.4 agar dapat digunakan dengan perintah : systemctl start mariadb dan systemctl enable mariadb.

Mariadb 10.4 tersebut masih belum memiliki password, sehingga kita harus membuat password root terlebih dahulu. Masuk sebagai user root dengan perintah :

mysql -uroot

Buat password dengan perintah sebagai berikut :

set password = password("your_password");

Keluar dari shell MariaDB dengan perintah :

quit;

Setelah Anda berhasil membuat password, akan ada pesan seperti dibawah ini :

Output

Query OK, 0 rows affected (0.001 sec)

2. Konfigurasi Pada Node Pertama :

Buat nama file galera.cnf pada direktori /etc/my.cnf.d, Anda dapat menambahkannya dengan teks editor favorit Anda. (/etc/my.cnf.d/galera.cnf), berikut konfigurasinya :

[mysqld]

binlog_format=ROW default-storage-engine=innodb innodb_autoinc_lock_mode=2 bind-address=0.0.0.0

# Galera Provider Configuration wsrep_on=ON wsrep_provider=/usr/lib64/galera-4/libgalera_smm.so

# Galera Cluster Configuration wsrep_cluster_name="test_cluster" wsrep_cluster_address="gcomm://First_Node_IP,Second_Node_IP,Third_Node_IP"

# Galera Synchronization Configuration wsrep_sst_method=rsync

# Galera Node Configuration wsrep_node_address="This_Node_IP" wsrep_node_name="This_Node_Name"

Keterangan : 
Pada bagian pertama, modifikasi atau menambahkan pengaturan aset MariaDB/MySQL akan mengizinkan fungsi cluster dapat bekerja dengan baik. Sebagai contoh, galera tidak akan bekerja dengan MyISAM atau mesin penyimpanan transaksional dan mysqld tidak diharuskan melakukan bounding di lingkungan localhost.

Pada bagian "Galera Provider Configuration", konfigurasi komponen MariaDB yang menyediakan sebuah WriteSet replication API. 

Pada bagian "Galera Cluster Configuration" mendefinisikan cluster, dimana mendeklarasikan IP Address yang digunakan oleh masing-masing node sehingga dapat saling dikenali. Anda dapat merubah wsrep_cluster_name sesuai dengan keinginan Anda dan menyesuaikan IP Address pada masing-masing node. 

Pada bagian "Galera Synchronization Configuration" metode sinkroniasi yang digunakan oleh galera cluster menggunakan rsync.

Pada bagian "Galera Node Configuration" mengklarifikasi IP Address yang digunakan pada node saat ini. Selain itu Anda dapat mengganti nama node untuk memudahkan identifikasi log.  

Lakukan pada masing-masing node cluster dan menyesuaikan IP Address serta nama node masing-masing node cluster, kemudian simpan hasil konfigurasinya.

Langkah selanjutnya, matikan service pada masing-masing node galera cluster menggunakan perintah : systemctl stop mariadb

Lakukan bootstrap untuk membangun interkoneksi pada masing-masing node cluster dengan mengeksekusi perintah : galera_new_cluster pada node satu. Apabila perintah berhasil dilakukan, tidak akan muncul pesan apa-apa dan akan mendaftarkan node saat ini pada sebuah cluster. Untuk dapat memastikannya, Anda dapat menggunakan perintah :

mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"

Masukkan password root mysql Anda, akan muncul pesan seperti pada gambar dibawah ini :

Satu node cluster aktif

Sekarang coba hidupkan kembali service mariadb pada node cluster kedua dengan perintah : systemctl start mariadb dan lakukan pengecekan node kembali dengan peritah : mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'" dan masukkan password rootnya. Jika berhasil, maka node cluster akan bertambah 1 menjadi dua node cluster yang aktif seperti pada gambar berikut :

Dua node cluster aktif

Lakukan hal yang sama pada node cluster ketiga, sehingga node cluster yang aktif benar-benar berjumlah tiga node cluster seperti pada gambar berikut ini :

Tiga node cluster aktif

3. Mencoba Replikasi

Buat salah satu database sekaligus buat saatu tabelnya dan isikan nilainya, berikut salah satu perintahnya :

mysql -u root -p -e 'CREATE DATABASE cluster;
CREATE TABLE cluster.member ( id INT NOT NULL AUTO_INCREMENT, nama VARCHAR(50), devisi VARCHAR(25), PRIMARY KEY(id));
INSERT INTO cluster.member (nama, devisi) VALUES ("imron", "sysadmin");'

4. Read dan Write pada Node Cluster Kedua

Verifikasi database dan tabel yang sudah dibuat sebelumnya di node cluster pertama dengan cara perintah berikut :

mysql -u root -p -e 'SELECT * FROM cluster.member;'

Apabila hasilnya sesuai dengan node cluster pertama, maka akan tampil seperti pada berikut ini :

Read data cluster

Pada node cluster kedua, Anda juga dapat menambahkan nilai pada tabel yang sudah dibuat sebelumnya seperti contoh berikut :

mysql -u root -p -e 'INSERT INTO cluster.member (nama, devisi) VALUES ("leon", "technical support");'

5. Read dan Write pada Node Cluster Ketiga

Lakukan verifikasi seperti sebelumnya pada node cluster ketiga dengan melihat daftar tabelnya :

mysql -u root -p -e 'SELECT * FROM cluster.member;'

Masukkan password rootnya, dan apabila isi tabel sesuai dengan pengisian sebelumnya maka data tampil seperti berikut :

Read data cluster

Sekarang coba masukkan data pada tabel tersebut di node cluster ketiga dengan perintah seperti berikut :

mysql -u root -p -e 'INSERT INTO cluster.member (nama, devisi) VALUES ("agus", "direktur");'

6. Baca pada Node Cluster Pertama

Lakukan verifikasi kembali pada node cluster pertama untuk memastikan apakah data yang sudah diisi pada node cluster sebelumnya sudah update atau belum atau bahkan belum terupdate sama sekali. Anda dapat melakukannya dengan perintah :

mysql -u root -p -e 'SELECT * FROM cluster.member;'

Jika sudah sesuai seperti berikut, maka replikasi database cluster menggunakan galera Anda sudah benar-benar bisa diimplementasikan dengan baik.

Read data cluster

Itulah cara bagaimana membuat cluster database menggunakan galera, semoga bermanfaat dan barokah. Aamiin 🙂

Referensi :

Official Galera Website

Leave a Reply

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