Rumahweb Journal
Banner - Cara Install Galera Cluster di Centos 7

Cara Install Galera Cluster di Centos 7

Galera Cluster adalah salah satu solusi untuk sistem database yang terdistribusi. Dengan menggunakan replikasi multi-master, Galera Cluster memberikan high availability serta skalabilitas yang tinggi. Dalam artikel ini, kami akan berbagi cara install Galera Cluster pada CentOS 7.

Seperti yang telah kita ketahui bersama, database clustering memungkinkan implementasi failover dan high availability. Apabila satu node mengalami kegagalan, maka secara otomatis sistem akan dialihkan ke node lain yang masih memiliki resource yang cukup.

Dengan demikian, waktu downtime dapat diatasi secara signifikan dan ketersediaan layanan dapat meningkat.

Pada artikel ini, Kami akan membahas tentang apa itu Galera Cluster, fungsi hingga cara install Galera Cluster pada server CentOS 7. Berikut informasi selengkapnya.

Apa itu Galera Cluster?

Galera Cluster adalah sebuah teknologi yang digunakan untuk replikasi serta penggabungan data secara real-time dalam beberapa server yang terdistribusi. Galera Cluster dirancang khusus untuk basis data MySQL dan MariaDB, dan memungkinkan pengguna untuk membangun cluster basis data yang terdiri dari beberapa node yang saling terhubung menjadi 1 sistem yaitu Galera Cluster.

Fungsi utama dari Galera Cluster adalah untuk meningkatkan ketersediaan, keandalan, dan skalabilitas sistem basis data. Dalam cluster Galera, setiap node memiliki salinan lengkap dari basis data yang sama.

Pindah Hosting ke Rumahweb Gratis

Ketika ada pembaruan data (misalnya, penambahan atau pengubahan data), maka perubahan tersebut nantinya akan disebarkan ke semua node dalam satu klaster secara konsisten mirroring/sama di setiap node. Dengan demikian, data tetap konsisten di seluruh klaster.

Fungsi Galera Cluster

Berikut ini adalah beberapa fungsi dan keunggulan dari Galera Cluster.

1. Replikasi Multi-Master

Setiap node server dalam cluster Galera dapat merubah dan membaca di dalam database(read & write). Ini berarti setiap node dapat bertindak sebagai master database yang dapat melakukan replikasi dari server lain atau melakukan replikasi ke server lainnya jika memiliki data baru.

2. Sinkronisasi Real-time

Galera Cluster menggunakan replikasi sinkronisasi langsung, yang berarti setiap operasi penulisan dikirimkan ke semua node dalam klaster sebelum dianggap berhasil. Hal ini memastikan konsistensi data yang tinggi di seluruh klaster, karena setiap node memiliki data yang sama pada saat yang sama.

3. Pemulihan Otomatis

Jika terjadi kegagalan pada salah satu node dalam cluster, Galera Cluster secara otomatis mendeteksi kegagalan tersebut dan memulihkan node yang rusak (melakukan recovery). Data yang hilang di node yang rusak akan dipulihkan menggunakan data yang ada dari server klaster lainnya yang normal.

4. Skalabilitas Untuk Maintenance

Galera Cluster memungkinkan penambahan atau pengurangan node dalam klaster dengan mudah. Ketika kita menambahkan node/server baru di Galera, kita hanya perlu melakukan editing pada file galera dan menambahkan ip server baru, kapasitas klaster meningkat, sehingga memungkinkan aplikasi untuk menangani beban yang lebih besar, dan dapat di upgrade kapan saja.

5. Penyebaran Geografis

Cluster Galera dapat digunakan dalam konfigurasi yang terdistribusi secara geografis. Ini berarti server server database dapat berada di lokasi yang berbeda secara geografis, seperti berada di berbagai negara. Selain meningkatkan kecepatan respon database, juga dapat meningkatkan ketersediaan backup pada berbagai lokasi.

Dengan menggunakan Galera Cluster, kita dapat membangun dan mengelola sistem basis data yang terdistribusi dengan tingkat ketersediaan yang tinggi dan isi database yang Konsisten.

Cara Install Galera Cluster di CentOS 7

Pada panduan kali ini kita akan melakukan instalasi dan konfigurasi Galera Cluster pada CentOS 7 dengan menggunakan database MariaDB 10.4.

Step 1. Persiapan Sistem

Pada demo ini, kami menggunakan VPS Murah dari Rumahweb dengan spesifikasi berikut.

  • OS Centos 7
  • MariaDB
  • Minimal Ram 2GB tiap Node
  • Server node 1 : 203.175.8.223
  • Server node 2 : 203.175.8.224
  • Server node 3 : 203.175.8.226

Step 2. Install Mariadb di Tiap server Node

1. Menambahkan repository MariaDB.

nano /etc/yum.repos.d/mariadb.repo
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.4/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

2. Setelah menambah repository MariaDB, terapkan repository untuk installasi.

yum makecache --disablerepo='*' --enablerepo='mariadb'

3. Installasi MariaDB dan konfigurasi user root.

# yum install MariaDB-server MariaDB-client
# systemctl start mariadb
# mysql -uroot
# set password = password("diisipassword");
# quit;

4. installasi rsync untuk sinkronisasi antar klaster database.

 yum install rsync policycoreutils-python

Step 3. Konfigurasi File Galera Cluster pada setiap node

Berikut adalah langkah-langkah konfigurasi file Galera Cluster pada setiap node server.

  1. Konfigurasi pada node 1.
    Buat file konfigurasi Galera pada folder /etc/my.cnf.d/
vi /etc/my.cnf.d/galera.cnf
[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
  • Berikan nama cluster dan isikan seluruh ip cluster
wsrep_cluster_name="galera_rw"
wsrep_cluster_address="gcomm://203.175.8.223,203.175.8.224,203.175.8.226"
  • Galera Synchronization Configuration
wsrep_sst_method=rsync
  • Ubah node address dengan ip server, dan berikan nama
wsrep_node_address="203.175.8.223"
wsrep_node_name="node1"
  1. Konfigurasi pada node 2.
    Buat file konfigurasi Galera pada folder /etc/my.cnf.d/
vi /etc/my.cnf.d/galera.cnf 
[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
  • Berikan nama cluster dan isikan seluruh ip cluster
wsrep_cluster_name="galera_rw"
wsrep_cluster_address="gcomm://203.175.8.223,203.175.8.224,203.175.8.226"
  • Galera Synchronization Configuration
wsrep_sst_method=rsync
  • Ubah node address dengan ip server, dan berikan nama
wsrep_node_address="203.175.8.224"
wsrep_node_name="node2"
  1. Konfigurasi pada node 3.
    Buat file konfigurasi Galera pada folder /etc/my.cnf.d/
 vi /etc/my.cnf.d/galera.cnf
[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
  • Berikan nama cluster dan isikan seluruh ip cluster
wsrep_cluster_name="galera_rw"
wsrep_cluster_address="gcomm://203.175.8.223,203.175.8.224,203.175.8.226"
  • Galera Synchronization Configuration
wsrep_sst_method=rsync
  • Ubah node address dengan ip server, dan berikan nama
wsrep_node_address="203.175.8.226"
wsrep_node_name="node3"

Image contoh:

cara install galera cluster dan konfigurasinya

Step 4. Konfigurasi Firewall pada tiap Server node

Secara default, galera menggunakan 4 Port berikut sebagai protokol transfer data dan kegunaan database.

  • 3306 : Untuk koneksi klien MariaDB dan State Snapshot Transfer yang menggunakan metode mysqldump.
  • 4567 : Untuk lalu lintas replikasi Galera Cluster. Replikasi multicast menggunakan transport pada port UDP dan TCP.
  • 4568 : Untuk Transfer Status Tambahan , atau IST, proses di mana keadaan yang hilang diterima oleh node lain di cluster.
  • 4444 : Untuk semua State Snapshot Transfer lainnya, atau SST, mekanisme dimana link joiner mendapatkan status dan data dari link distribusi.

Centos menggunakan Firewall CMD sebagai default Firewall, pastikan kita melakukan allow 4 port diatas pada “masing masing server node dengan konfigurasi yang sama”.

 firewall-cmd --permanent --zone=public --add-port=3306/tcp
 firewall-cmd --permanent --zone=public --add-port=4567/tcp
 firewall-cmd --permanent --zone=public --add-port=4568/tcp
 firewall-cmd --permanent --zone=public --add-port=4444/tcp
 firewall-cmd --permanent --zone=public --add-port=4567/udp

Setelah menambahkan port database diatas, langkah selanjutnya adalah menambahkan masing masing ip node Galera agar dapat saling mengakses.

firewall-cmd --permanent --zone=public --add-source=203.175.8.223/32
firewall-cmd --permanent --zone=public --add-source=203.175.8.224/32
firewall-cmd --permanent --zone=public --add-source=203.175.8.226/32

Muat ulang firewall untuk menerapkan perubahan:

systemctl reload firewalld

Step 5. Konfigurasi SeLinux

SELinux adalah modul kernel Linux yang meningkatkan keamanan sistem operasi dengan dukungannya untuk kontrol akses dan kebijakan kontrol akses wajib. selinux diaktifkan secara default pada CentOS 7 yang menyebabkan membatasi daemon MariaDB untuk melakukan banyak aktivitas.

Agar Selinux tidak membatasi untuk keperluan klaster, kita perlu membuat beberapa peraturan di selinux sebagai berikut.

  1. Pertama, izinkan akses ke port MariaDB dengan menjalankan perintah berikut di ketiga server:
 semanage port -a -t mysqld_port_t -p tcp 4567
 semanage port -a -t mysqld_port_t -p udp 4567
 semanage port -a -t mysqld_port_t -p tcp 4568
 semanage port -a -t mysqld_port_t -p tcp 4444
  1. Jalankan perintah ke mode permesif untuk sementara.
semanage permissive -a mysqld_t
  1. Matikan sementara server database di semua node sehingga agar kita dapat mem-bootstrap cluster database dengan kebijakan SELinux bersama, jalankan perintah berikut di ketiga server node:
systemctl stop mariadb
  1. Pada server node 1, jalankan perintah berikut agar dapat mem-bootstrap kebijakan selinux yang telah kita buat sebelumnya(pada titik ini semua server db di 3 node nonaktif).
# galera_new_cluster
# mysql -u root -p -e 'CREATE DATABASE selinux;
# CREATE TABLE selinux.selinux_policy (id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY(id));
# INSERT INTO selinux.selinux_policy VALUES ();'
  1. Setelah kebijakan di eksekusi, kita aktifkan kembali server MariaDB “hanya” pada server node 2 dan 3.
systemctl start mariadb
  1. Jalankan perintah berikut pada ketiga server node database.
mysql -u root -p -e 'INSERT INTO selinux.selinux_policy VALUES ();'

Aktifkan kebijakan selinux dengan menjalankan command berikut.

grep mysql /var/log/audit/audit.log |  audit2allow -M Galera

Setelah command diatas dieksekusi, maka akan menghasilkan sebuah output, yaitu semodule -i Galera.pp.

  1. Install modul sesuai output yang dihasilkan.
semodule -i Galera.pp

Setelah aktif, aktifkan kembali mode permesif Mariadb Selinux

semanage permissive -d mysqld_t

Step 6. Memulai Cluster Galera pada masing masing server node.

Pada tahapan ini, kita akan memulai Cluster Galera pada tiap node, Pastikan mengikuti langkah berikut dengan benar untuk menghindari adanya error dan miskonfigurasi.

  1. Nonaktifkan mariadb pada ketiga server node.
    Pastikan harus menonaktifkan dari server ke 3 dahulu secara urut ke server 1.
node 3 :  systemctl stop mariadb
node 2 :  systemctl stop mariadb
node 1 :  systemctl stop mariadb

Pastikan untuk menonaktifkan secara berurutan dari server node terakhir, hal ini dilakukan agar server utama node (node1) dapat mem-bootstrap semua server dari server ke 3.

  1. Jalankan skrip galera pada node 1 
# galera_new_cluster
# mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"

kita akan melihat terdapat 1 node di cluster seperti berikut :

  1. Aktifkan kembali MariaDB pada node ke 2
 systemctl start mariadb

Setelah kita aktifkan node 2, maka dapat dicek bahwa node sudah bertambah, pengecekan menggunakan command berikut pada node 1/2.

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

Pastikan angka sudah bertambah menjadi 2, berarti server cluster kita berhasil ditambahkan.

4. Aktifkan kembali MariaDB pada node ke 3

 systemctl start mariadb

Setelah kita aktifkan node 3, maka dapat dicek bahwa node sudah bertambah, pengecekan menggunakan command berikut pada node 1/2/3

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

Pastikan angka sudah bertambah menjadi 3, berarti server cluster kita berhasil ditambahkan dengan normal untuk ke 3 node.

Memulai Cluster Galera pada masing masing server node

Pada titik ini, seluruh klaster sudah online dan berhasil berkomunikasi. Selanjutnya, kita dapat memastikan penyiapan berfungsi dengan menguji replikasi di bagian berikutnya.

Pengujian Galera Cluster

Pada Galera Cluster, database yang kita buat/input maka akan otomatis replikasi ke server node lainnya secara realtime.

Apabila kita melakukan modifikasi data pada node 1, maka node 2 dan 3 akan berubah sesuai node 1. Begitupun sebaliknya, apabila kita melakukan update pada node ke 3, maka node 2 dan 1 akan otomatis ter replikasi sesuai dengan node ke 3.

  1. Terlebih dahulu kita uji dengan membuatkan database di server DB1 kemudian kita amati pada server DB2 dan server DB3 apakah database telah berhasil replikasi.
  2. Kemudian kita uji pada server DB2 dengan membuatkan tabel dan kita amati hasilnya pada server DB1 dan server DB3 apakah tabel tersebut sudah ada.
  3. Kemudian kita uji pada server DB3 dengan melakukan input/insert data pada tabel dan kita amati hasilnya pada server DB1 dan server DB2 apakah data yang telah kita input/insert sudah masuk ke tabel.

Pada titik ini, kita telah berhasil mengkonfigurasi Galera Cluster dengan 3 server node. Jika Anda berencana menggunakan cluster Galera untuk kebutuhan data di production, sebaiknya dapat menggunakan setidaknya minimal 5 node untuk hasil yang lebih baik.

Demikian artikel kami tentang cara install hingga konfigurasi Galera Cluster di CentOS 7, semoga bermanfaat.

Bermanfaatkah Artikel Ini?

Klik bintang 5 untuk rating!

Rating rata-rata 4.7 / 5. Vote count: 7

Belum ada vote hingga saat ini!

Kami mohon maaf artikel ini kurang berguna untuk Anda!

Mari kita perbaiki artikel ini!

Beri tahu kami bagaimana kami dapat meningkatkan artikel ini?

Cloud Hosting Terbaik Rumahweb

Andika Dwi Setyawan

Dika is a System Administrator, passionate about Linux, Networking, Cyber security and much love with Arista.