Tutorial Lengkap: Setup MariaDB Galera Cluster dengan TLS di Ubuntu 24.04

MariaDB Galera Cluster adalah solusi database multi-master yang memungkinkan replikasi data secara sinkron di antara beberapa node. Tutorial ini membahas cara membangun Galera Cluster terenkripsi dengan TLS menggunakan dua VPS berbasis Ubuntu 24.04, serta menyelesaikan error umum seperti perbedaan wsrep_node_name
antar node.
πΊοΈ Arsitektur Cluster
- VPS 1:
- IP:
103.168.146.180
- Hostname:
mariadb.cluster
-1
- IP:
- VPS 2:
- IP:
103.168.146.181
- Hostname:
mariadb.cluster-2
- IP:
Tujuan kita adalah membuat dua node ini saling mereplikasi database menggunakan Galera Cluster dengan komunikasi TLS terenkripsi.
π§ Tahap 1: Instalasi MariaDB + Galera
Lakukan di kedua VPS:
sudo apt update
sudo apt install mariadb-server galera-4 -y
Verifikasi:
mariadb --version
π Tahap 2: Membuat Sertifikat TLS
Lakukan di salah satu VPS, lalu copy ke node lain.
1οΈβ£ Buat direktori dan pindah:
sudo mkdir -p /etc/ssl/mysql
cd /etc/ssl/mysql
2οΈβ£ Buat CA dan sertifikat:
# Generate CA
openssl genrsa 2048 > ca-key.pem
openssl req -new -x509 -nodes -days 3650 \
-key ca-key.pem -out ca.pem \
-subj "/CN=Galera-CA"
# Generate server key & CSR
openssl req -newkey rsa:2048 -days 3650 -nodes \
-keyout server-key.pem -out server-req.pem \
-subj "/CN=$(hostname)"
# Sign cert
openssl x509 -req -in server-req.pem -days 3650 \
-CA ca.pem -CAkey ca-key.pem -set_serial 01 \
-out server-cert.pem
3οΈβ£ Copy ke node lain:
scp *.pem [email protected]:/etc/ssl/mysql
βοΈ Tahap 3: Konfigurasi Galera
Edit file konfigurasi Galera di kedua node:
sudo nano /etc/mysql/mariadb.conf.d/60-galera.cnf
Isi:
[mysqld]
bind-address=0.0.0.0
log_error=/var/log/mariadb.log
innodb-buffer-pool-size=512M
[galera]
wsrep_on=ON
wsrep_provider=/usr/lib/galera/libgalera_smm.so
wsrep_cluster_name="mariadb-cluster"
wsrep_cluster_address="gcomm://103.168.146.180,103.168.146.181"
wsrep_node_address="<IP_NODE_INI>" # Ganti dengan IP VPS ini
wsrep_node_name="<NAMA_NODE_UNIK>" # Ganti dengan hostname unik VPS ini
wsrep_sst_method=rsync
wsrep_provider_options="gcache.size=128M; socket.ssl_key=/etc/ssl/mysql/server-key.pem; socket.ssl_cert=/etc/ssl/mysql/server-cert.pem; socket.ssl_ca=/etc/ssl/mysql/ca.pem"
π Contoh konfigurasi:
- VPS 1:
wsrep_node_name=mariadb.cluster
danwsrep_node_address=103.168.146.180
- VPS 2:
wsrep_node_name=mariadb.cluster
danwsrep_node_address=103.168.146.181
π Tahap 4: Bootstrap Node Pertama
Lakukan di VPS 1:
systemctl stop mariadb
rm -f /var/lib/mysql/grastate.dat
/usr/bin/galera_new_cluster
β Cek Status Cluster
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size';"
π Output:
+--------------------+-------+
| Variable_name | Value |
+--------------------+-------+
| wsrep_cluster_size | 1 |
+--------------------+-------+
π€ Tahap 5: Join Node Kedua
Lakukan di VPS 2:
systemctl stop mariadb
rm -f /var/lib/mysql/grastate.dat
systemctl start mariadb
β Cek Status Cluster
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size';"
π Output:
+--------------------+-------+
| Variable_name | Value |
+--------------------+-------+
| wsrep_cluster_size | 2 |
+--------------------+-------+

β
Jika Value = 2
, berarti cluster sudah berhasil sinkron.
β Tahap 6: Uji Replikasi
Di VPS 1:
CREATE DATABASE herza_test;
Di VPS 2:
SHOW DATABASES;

β
Jika database herza_test
muncul di VPS 2, berarti replikasi berhasil!
π οΈ Troubleshooting Umum
πΉ Error 00000000-0000...:-1
saat recovery:
Solusi: Hapus
grastate.dat
, lalu bootstrap ulang node utama dengangalera_new_cluster
.
πΉ Service gagal start:
Jalankan:
systemctl unset-environment _WSREP_NEW_CLUSTER
systemctl unset-environment _WSREP_START_POSITION
πΉ Node gagal join:
Pastikan port berikut terbuka pada firewall:
3306
(MySQL)4567
(Galera)4568
(IST)4444
(SST)
π§Ύ Kesimpulan
Dengan mengikuti tutorial ini, kamu telah:
β
Menginstal MariaDB + Galera di 2 node
β
Mengaktifkan replikasi TLS terenkripsi
β
Menangani error seperti perbedaan wsrep_node_name
dan galera_recovery
Cluster kamu sekarang tersinkronisasi dan siap untuk produksi. π
Jika ingin menambahkan node ke-3, cukup ulangi langkah di VPS 2 dan pastikan semua konfigurasi konsisten.
π‘ Tips Produksi:
Gunakan load balancer atau DNS round-robin agar aplikasi (seperti WordPress/Laravel) dapat konek ke cluster dengan lebih stabil.