Masdika Loading..
Masdika.ID

DevOps Engineer

Cloud Engineer

System Administrator

  • Home
  • Portfolio
  • Services
  • Resume
  • Skills
  • Blog
  • Contact
Masdika.ID

DevOps Engineer

Cloud Engineer

System Administrator

Download CV

Recent Posts

  • Panduan Lengkap Install K3s di Ubuntu dan Konfigurasi Remote Kubectl dari Windows PC/Laptop
  • Deploy Next.js di Kubernetes dengan Ingress + SSL Let’s Encrypt
  • Tutorial Lengkap: Membuat Cloudflare API Token & Menggunakannya di Kubernetes dengan cert-manager
  • Panduan Lengkap Deploy WordPress + Redis + MySQL di Kubernetes dengan SSL Cloudflare
  • Panduan Lengkap Install & Konfigurasi Ceph 3 Node dengan RGW (S3 Compatible)

Recent Comments

  1. Rudy on Panduan Lengkap Install K3s di Ubuntu dan Konfigurasi Remote Kubectl dari Windows PC/Laptop
  2. Masdika.ID on Tutorial Lengkap: Membuat Cloudflare API Token & Menggunakannya di Kubernetes dengan cert-manager
  3. Sahrull on Tutorial Lengkap: Membuat Cloudflare API Token & Menggunakannya di Kubernetes dengan cert-manager
  4. Masdika.ID on Tutorial Lengkap: Membuat Cloudflare API Token & Menggunakannya di Kubernetes dengan cert-manager
  5. Sahrull on Tutorial Lengkap: Membuat Cloudflare API Token & Menggunakannya di Kubernetes dengan cert-manager

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.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
Related Posts
Cara Menjadi DevOps Engineer dari Nol: Panduan Lengkap untuk Pemula

DevOps Itu Apa, Sih? 🀝 Bayangkan tim yang bisa merilis fitur cepat tapi tetap stabil. Kuncinya bukan hanya tool, melainkan…

Update Docker Image Tanpa Hentikan Layanan: Solusi untuk Production!

Menjaga agar layanan tetap berjalan tanpa henti adalah kunci keberhasilan sebuah sistem production. Artikel ini membahas cara update Docker container…

Post navigation

Prev
Next
Write a comment Cancel Reply


Β© 2025 www.masdika.id β€” Semua hak cipta dilindungi