๐️ MySQL / MariaDB Active-Active ้ซๅฏ็จๆง:3 ใใผใ Galera Cluster ใซใใใใซใใในใฟใผๅๆ + ่ชๅใใงใคใซใชใผใใผๅฎๅ จใฌใคใ
ๅพๆฅใฎ MySQL Master/Slave ใฌใใชใฑใผใทใงใณใฏ、ใใงใคใซใชใผใใผใฎ้ ๅปถใใใผใฟไธๆดๅใ็บ็ใใใใ、 ้ซๅฏ็จๆงใๆฑใใใใ็พไปฃใฎใทในใใ ใซใฏไธๅๅใงใ。 ใใฎใฌใคใใงใฏ、็ใฎ Active-Active(ใใซใใในใฟใผ)ๆงๆใๅฎ็พใใ MariaDB Galera Cluster(3 ใใผใๆงๆ)ใ็จใใฆ、 ใชใขใซใฟใคใ ๅๆ・่ชๅๅพฉๆง・็กๅๆญข้็จใๅฎ็พใใๆนๆณใ่ฉณใใ่งฃ่ชฌใใพใ。
๐ 1. ใชใ Galera Cluster ใ้ธใถใฎใ?(True Multi-Master)
Galera ใฏๅๆๅผใใซใใในใฟใผๆนๅผใๅฎ็พใใๆใๆ็ใใใฝใชใฅใผใทใงใณใงใ。
- ✔ ใในใฆใฎใใผใใง่ชญใฟๆธใๅฏ่ฝ(Active-Active)
- ✔ ใฌใใชใฑใผใทใงใณ้ ๅปถใผใญ(ๅๆๆธใ่พผใฟ)
- ✔ Quorum ใซใใ split-brain ้ฒๆญข
- ✔ IST/SST ใซใใ่ชๅใใผใๅพฉๆง
- ✔ ้ซๅฏ็จๆงใ่ฆๆฑใใใจใณใฟใผใใฉใคใบใซๆ้ฉ
ๆจๅฅจใใใ 3 ใใผใๆงๆ:
node1: 192.168.1.10
node2: 192.168.1.11
node3: 192.168.1.12
๐ก 2. 3 ใใผใ Galera Cluster ใขใผใญใใฏใใฃ
┌────────────────────────┐
│ HAProxy + VIP │
│ (่ชญใฟๆธใ่ฒ ่ทๅๆฃๅฑค) │
└──────────┬──────────────┘
│
┌──────────────┴──────────────┐
│ │
┌────────┴────────┐ ┌────────┴────────┐
│ MariaDB Node 1 │ │ MariaDB Node 2 │
│ 192.168.1.10 │ │ 192.168.1.11 │
└────────┬─────────┘ └────────┬────────┘
│ │
└──────────────┬──────────────┬────┘
│ │
┌──────┴──────┐
│ MariaDB Node 3 │
│ 192.168.1.12 │
└──────────────┘
๐ 3. MariaDB + Galera ใฎใคใณในใใผใซ(ๅ จใใผใๅ ฑ้)
sudo dnf install mariadb mariadb-server galera -y
sudo systemctl enable mariadb
⚙️ 4. Galera ่จญๅฎ(ๅ จใใผใ)
/etc/my.cnf.d/galera.cnf ใ็ทจ้:
[galera]
wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_name="galera_cluster"
wsrep_cluster_address="gcomm://192.168.1.10,192.168.1.11,192.168.1.12"
wsrep_node_address="192.168.1.X"
wsrep_node_name="nodeX"
binlog_format=ROW
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
ๅใใผใใง wsrep_node_address / wsrep_node_name ใๅคๆดใใฆใใ ใใ。
๐ 5. ใฏใฉในใฟใฎ่ตทๅๆ้ (้่ฆ)
1️⃣ ๆๅใฎใใผใใใใผใในใใฉใใ
galera_new_cluster
2️⃣ ๆฎใใฎใใผใใ่ตทๅ
sudo systemctl start mariadb
ใฏใฉในใฟใตใคใบใ็ขบ่ช:
mysql -e "SHOW STATUS LIKE 'wsrep_cluster_size';"
ๆๅพ
ใใใๅบๅ:
3
๐ 6. ใฌใใชใฑใผใทใงใณๆนๅผ:SST / IST
- SST(State Snapshot Transfer):ๆฐ่ฆใใผใ・ใใซๅๆ
- IST(Incremental State Transfer):็ญๆ้ใฎๅๆญๅพใซ้ซ้ๅพฉๆง
๐งฉ 7. Quorum ใจ split-brain ๅ้ฟ
3 ใใผใ → ๆญฃๅธธ็จผๅ
2 ใใผใ → ้ๅๆฐ็ถญๆใง็จผๅๅฏ่ฝ
1 ใใผใ → ่ชๅๅๆญข(ๆดๅๆงไฟ่ญท)
⚖️ 8. HAProxy ใซใใ่ฒ ่ทๅๆฃ
ใคใณในใใผใซ:
sudo dnf install haproxy -y
่จญๅฎ:
/etc/haproxy/haproxy.cfg
frontend mysql-in
bind *:3306
mode tcp
default_backend galera
backend galera
mode tcp
balance roundrobin
option mysql-check user haproxy
server node1 192.168.1.10:3306 check
server node2 192.168.1.11:3306 check
server node3 192.168.1.12:3306 check
๐ท 9. Keepalived + VIP ใซใใ่ชๅใใงใคใซใชใผใใผ
HAProxy ๅฑคใ Active-Active ใงๅ้ทๅ。
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 50
priority 120
virtual_ipaddress {
192.168.1.200
}
}
ใฏใฉใคใขใณใใฏๅธธใซ VIP ใไฝฟ็จ:
mysql -h 192.168.1.200 -u user -p
๐ฆ 10. ใใผใๆ ้ใจๅพฉๆง
๐ก ใใผใ้ๅฎณ → ไปใใผใใๅณๆๅฆ็ใ็ถ็ถ
๐ข ใใผใๅพฉๆง → IST ใซใใ่ชๅๅๆ
๐ด ๆดๅๆง็ ดๆ → SST ใงๅๆง็ฏ
๐ ใพใจใ
3 ใใผใๆงๆใฎ MariaDB Galera Cluster ใฏ、็ใฎ Active-Active ใใซใใในใฟใผๆนๅผใๆไพใ、ไปฅไธใๅฎ็พใใพใ:
- ใในใฆใฎใใผใใง่ชญใฟๆธใๅฏ่ฝ
- ๅๆใฌใใชใฑใผใทใงใณใซใใๅผทๆดๅๆง
- HAProxy + VIP ใซใใ็กๅๆญขใใงใคใซใชใผใใผ
- IST/SST ใซใใ่ชๅๅพฉๆง
ใจใณใฟใผใใฉใคใบๅใใใผใฟใใผใน、API ใใใฏใจใณใ、้ซใใฉใใฃใใฏใทในใใ ใซๆ้ฉใชๆงๆใงใ。
๐ ้ข้ฃ่จไบ
- Linux Firewall ็ตฑๅ:firewalld / iptables / nftables
- OpenVPN + PKI ใฏใฉใคใขใณใใซใผใใฃใณใฐใฌใคใ
- Linux NFS ๅฎๅ จใใใญใคใฌใคใ
- Linux LVM PV / VG / LV Resize ใฌใคใ
— WWFandy・ใใผใฟใใผใน&ใทในใใ ใใผใ
ๆฒๆ็่จ:
ๅผต่ฒผ็่จ