Masdika Loading..
Masdika.BIZ.ID

DevOps Engineer

Cloud Engineer

System Administrator

  • Home
  • Portofolio
  • Services
  • Resume
  • Skills
  • Blog
  • Contact
Masdika.BIZ.ID

DevOps Engineer

Cloud Engineer

System Administrator

Download CV

Recent Posts

  • CI/CD Laravel: Otomatisasi Deployment dengan Jenkins & Docker
  • Cara Kirim Notifikasi Otomatis SSL Expired via Email (Lengkap + Bash Script)
  • Panduan Lengkap Autoscaling di Kubernetes Bare-Metal (Lengkap untuk Pemula)
  • Panduan Lengkap: Deploy Website Statis ke Kubernetes Menggunakan Docker + NodePort
  • Cara Cerdas Menguasai Kubernetes (K8s): Panduan Lengkap Orkestrasi Kontainer untuk Developer Modern

Recent Comments

  1. Masdika.BIZ.ID on Cara Cerdas Menguasai Kubernetes (K8s): Panduan Lengkap Orkestrasi Kontainer untuk Developer Modern
  2. VSTRA on Cara Cerdas Menguasai Kubernetes (K8s): Panduan Lengkap Orkestrasi Kontainer untuk Developer Modern
  3. Rikiy on Cara Mudah Deploy Website Node.js Menggunakan Docker
  4. Masdika.BIZ.ID on Disaster Recovery Cluster (DRC) WordPress dengan MariaDB Galera dan Load Balancer Caddy
  5. someone on Disaster Recovery Cluster (DRC) WordPress dengan MariaDB Galera dan Load Balancer Caddy

Archives

  • August 2025
  • July 2025
  • June 2025

Categories

  • Tutorial

Masddika.BIZ.ID

  • About
  • Terms & Conditions
  • Privacy Policy
Blog Post

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

July 19, 2025 Tutorial by Masdika.BIZ.ID
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
  • VPS 2:
    • IP: 103.168.146.181
    • Hostname: mariadb.cluster-2

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 dan wsrep_node_address=103.168.146.180
  • VPS 2: wsrep_node_name=mariadb.cluster dan wsrep_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 dengan galera_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.

Share:
Tags: galera clusterlinuxmariadbubuntu

Post navigation

Prev
Next
Write a comment Cancel Reply

Β© 2025 www.masdika.biz.id β€” Semua Hak Dilindungi