คำว่า “Galera พัง” หลายคนเข้าใจผิดครับ
จริง ๆ แล้วต้องแยกเป็น 2 เรื่อง
- DNS Service (PowerDNS)
- Database Cluster (Galera)
เคสที่ 1: DNS1 พัง 1 เครื่อง
จาก 3 Nodes
DNS1 ❌
DNS2 ✅
DNS3 ✅
Galera ยังมี 2 เสียงจาก 3 เสียง
Quorum = ผ่าน
ผลลัพธ์
✅ DNS ตอบได้ปกติ
✅ เพิ่ม Zone ได้
✅ แก้ Record ได้
✅ DNSSEC ทำงานได้
ผู้ใช้แทบไม่รู้สึกอะไร
เคสที่ 2: DNS1 และ DNS2 พัง
เหลือ
DNS1 ❌
DNS2 ❌
DNS3 ✅
ตอนนี้เหลือ 1 เสียง
Galera มองว่า
“ฉันไม่รู้ว่าอีก 2 เครื่องตายจริง หรือเครือข่ายขาด”
เพื่อป้องกันข้อมูลเพี้ยน
Galera จะหยุดรับ Write
แต่ DNS ใช้งานได้ไหม?
ขึ้นกับการออกแบบ
แบบที่เจอบ่อย
PowerDNS อ่านข้อมูลใน MariaDB
ข้อมูลเก่ายังอยู่ครบ
DNS3
├─ PowerDNS ✅
└─ MariaDB ✅
ผู้ใช้ยัง Query ได้
mail.mbu.ac.th
ยังตอบได้ตามปกติ
ตัวอย่าง
ลูกค้าทั่วโลก
dig www.mbu.ac.th @ns3.mbu.ac.th
ยังได้
171.5.xxx.xxx
ปกติ
แต่ Admin จะเจอปัญหา
สมมุติคุณต้องการเพิ่ม
vpn.mbu.ac.th
หรือ
test.mbu.ac.th
แล้วรัน
INSERT INTO records …
Galera จะตอบประมาณ
WSREP has not yet prepared node for application use
หรือ
No quorum
หรือ
NON-PRIMARY state
สรุปคือ
❌ แก้ไขข้อมูลไม่ได้
✅ อ่านข้อมูลเดิมได้
ยกตัวอย่างในชีวิตจริง
นึกถึงกลุ่มไลน์กรรมการ 3 คน
A
B
C
กฎคือ
ต้องมีคนมากกว่าครึ่งเห็นด้วยก่อนถึงจะแก้ไขเอกสารได้
เหลือ A คนเดียว
A ✅
B ❌
C ❌
A ไม่รู้ว่า
- B กับ C ตาย
- หรือ Internet ขาด
ถ้า A แก้เอกสารต่อ
แล้ววันหนึ่ง B กับ C กลับมา
ข้อมูลจะขัดกันทันที
ดังนั้น Galera จึงบอกว่า
“อ่านได้ แต่ห้ามแก้”
เคสที่อันตรายที่สุด
Network Split (Split Brain)
สมมุติ
DNS1 <-> DNS2
คุยกันได้
แต่คุยกับ
DNS3
ไม่ได้
มุมมองของ DNS1/DNS2
DNS3 หาย
มุมมองของ DNS3
DNS1 DNS2 หาย
Galera จะเลือกฝั่งที่มีเสียงมากกว่า
DNS1 + DNS2 = 2 เสียง
ทำงานต่อ
✅ Write
✅ Read
ส่วน
DNS3 = 1 เสียง
ถูกบังคับเป็น
Non-primary
✅ Read
❌ Write
ป้องกันข้อมูลแตกคนละชุด
ในระบบ DNS จริงของคุณ
สมมุติ
ns1.mbu.ac.th
ns2.mbu.ac.th
ns3.mbu.ac.th
ผูกกับ
DNS1
DNS2
DNS3
แล้ว DNS1 กับ DNS2 พัง
จะเหลือ
ns3.mbu.ac.th
ถ้า Registrar มี NS ทั้ง 3 ตัว
Resolver ทั่วโลกจะลอง
ns1 > ไม่ตอบ
ลอง
ns2 > ไม่ตอบ
ลอง
ns3 > ตอบ
เว็บไซต์ยังเข้าได้, อีเมลยังเข้าได้, DNS ยังทำงานได้
แต่ช่วงนั้นคุณจะ
❌ เพิ่ม Zone ไม่ได้
❌ เปลี่ยน IP ไม่ได้
❌ แก้ Record ไม่ได้
จนกว่าอีก Node จะกลับมาอย่างน้อย 1 ตัว
วิธีแก้ในเหตุฉุกเฉิน
ถ้าคุณมั่นใจว่า
DNS1
DNS2
ตายจริง
และเหลือ
DNS3
เครื่องเดียว
สามารถสั่ง
galera_new_cluster
หรือ bootstrap node ใหม่
ให้ DNS3 กลายเป็น Primary Cluster ชั่วคราวได้
หลังจากนั้น
Write ได้
Read ได้
แต่ต้องทำด้วยความเข้าใจ เพราะหากอีก 2 เครื่องยังไม่ตายจริง อาจเกิดข้อมูลขัดแย้งได้
สรุปสั้นที่สุด
เมื่อ Galera 3 Nodes เหลือ 1 Node
| ความสามารถ | ใช้งานได้ |
|---|---|
| ตอบ DNS Query | ✅ |
| เปิดเว็บไซต์ | ✅ |
| รับอีเมล | ✅ |
| อ่านข้อมูลในฐานข้อมูล | ✅ |
| เพิ่ม Zone | ❌ |
| แก้ไข Record | ❌ |
| ทำ DNSSEC Key Update | ❌ |
| เขียนข้อมูลใหม่ | ❌ |
ดังนั้นคำว่า “Galera พัง” ในกรณีเหลือ 1 Node ไม่ได้หมายความว่า DNS ล่มทั้งระบบ แต่หมายถึง Cluster สูญเสีย Quorum จึงหยุดการเขียนข้อมูลใหม่เพื่อป้องกันข้อมูลเสียหาย ครับ।
