ถ้าจะอธิบาย Galera Cluster 3 Nodes สำหรับ DNS (PowerDNS + MariaDB Galera) แบบง่ายที่สุด ให้นึกถึงว่า
DNS Server ปกติ (เครื่องเดียว)
DNS1
┌─────────────┐
│ PowerDNS │
│ MariaDB │
└─────────────┘
ข้อเสียคือ
- เครื่องพัง = DNS ดับ
- HDD เสีย = ข้อมูลหาย
- อัปเดตระบบ = ต้องหยุดบริการ
DNS แบบ Galera Cluster 3 Nodes
มี 3 เครื่อง
DNS1
DNS2
DNS3
ทุกเครื่องมี
- PowerDNS
- MariaDB
เหมือนกันทั้งหมด
┌────────┐ ┌────────┐ ┌────────┐
│ DNS1 │◄────►│ DNS2 │◄────►│ DNS3 │
│Galera │ │Galera │ │Galera │
└────────┘◄────►└────────┘◄────►└────────┘
ทุกเครื่องคุยกันตลอดเวลา
ตัวอย่างข้อมูล
สมมุติมี Zone
mbu.ac.th
กับ Record
www.mbu.ac.th A 171.5.xxx.xxx
เมื่อเพิ่มที่ DNS1
INSERT INTO records …
Galera จะส่งข้อมูลไป
DNS1
↓
DNS2
↓
DNS3
ทันที
ผลคือ
DNS1 มีข้อมูล
DNS2 มีข้อมูล
DNS3 มีข้อมูล
เหมือนกันทุกเครื่อง
เปรียบเทียบง่าย ๆ
นึกถึง Google Docs
มี 3 คนเปิดไฟล์เดียวกัน
คน A
คน B
คน C
คน A พิมพ์
Hello
คน B เห็นทันที
คน C เห็นทันที
Galera ทำงานคล้ายกัน
ทำไมต้อง 3 Nodes
Galera มีแนวคิดเรื่อง
Quorum
ต้องมีเสียงข้างมาก
สำหรับ
3 เครื่อง
จำนวนเสียง
DNS1 = 1
DNS2 = 1
DNS3 = 1
รวม
3 เสียง
ต้องเหลือมากกว่า
3/2 = 1.5
คืออย่างน้อย
2 เสียง
กรณี DNS1 พัง
เหลือ
DNS2
DNS3
มี 2 เสียง
Cluster ยังทำงานได้
✅ เขียนข้อมูลได้
✅ อ่านข้อมูลได้
กรณี DNS1 และ DNS2 พัง
เหลือ
DNS3
มี 1 เสียง
ไม่ถึง Quorum
Galera จะหยุดเขียนข้อมูล
❌ ไม่รับ Write
✅ อ่านได้
เพื่อป้องกันข้อมูลแตกเป็นหลายชุด (Split Brain)
ในงาน DNS จริง
มักจะเป็นแบบนี้
Internet
│
┌─────────────┼─────────────┐
│ │ │
▼ ▼ ▼
ns1 ns2 ns3
DNS1 DNS2 DNS3
PowerDNS PowerDNS PowerDNS
Galera Galera Galera
ตัวอย่าง
ns1.mbu.ac.th
ns2.mbu.ac.th
ns3.mbu.ac.th
Registrar จะประกาศ NS ทั้ง 3 ตัว
NS ns1.mbu.ac.th
NS ns2.mbu.ac.th
NS ns3.mbu.ac.th
เวลาเพิ่ม Zone ใหม่
เช่น
test.mbu.ac.th
คุณสั่งเพิ่มแค่เครื่องเดียว
pdnsutil create-zone test.mbu.ac.th
ข้อมูลจะถูกบันทึกลง MariaDB
Galera จะ Sync
DNS1 → DNS2
DNS1 → DNS3
ทันที
PowerDNS ทุกตัวจึงเห็น Zone ใหม่พร้อมกัน
เชื่อมโยงกับ DNSSEC
ตอนนี้ที่คุณทำอยู่
Root
↓
th
↓
ac.th
↓
mbu.ac.th
เป็น Chain of Trust
ส่วน Galera Cluster ทำหน้าที่
เก็บข้อมูล DNSSEC
เช่น
- DNSKEY
- DS
- RRSIG
- NSEC
ไว้เหมือนกันทั้ง 3 เครื่อง
ดังนั้นเมื่อมี Key Rollver
pdnsutil add-zone-key mbu.ac.th
หรือ
pdnsutil rectify-zone mbu.ac.th
ข้อมูล DNSSEC ที่ถูกสร้างขึ้น จะถูก Sync ไปทุก Node อัตโนมัติ
DNS1
DNS2
DNS3
ไม่ต้องสร้างซ้ำทีละเครื่อง
สรุปสั้น ๆ
- DNSSEC = ทำให้ข้อมูล DNS เชื่อถือได้ ไม่ถูกปลอมแปลง
- Galera Cluster = ทำให้ฐานข้อมูล DNS มีหลายสำเนาและ Sync กันตลอดเวลา
- 3 Nodes = รองรับเครื่องเสียได้ 1 เครื่องโดยยังทำงานต่อได้
- เพิ่ม/แก้ไข Zone ที่ Node ใด Node หนึ่ง ข้อมูลจะกระจายไปทุก Node
- ใช้งานร่วมกับ PowerDNS ได้ดีมาก เพราะ PowerDNS ทุกเครื่องอ่านข้อมูลจาก MariaDB Galera ชุดเดียวกัน
เปรียบเทียบง่าย ๆ:
DNSSEC = ลายเซ็นรับรองเอกสาร
Galera = เครื่องถ่ายเอกสาร 3 เครื่อง
ที่มีเอกสารเหมือนกันตลอดเวลา
สองอย่างนี้ทำคนละหน้าที่ แต่เมื่อใช้ร่วมกันจะได้ทั้ง ความถูกต้องของข้อมูล (DNSSEC) และ ความทนทานต่อความเสียหายของระบบ (High Availability) ครับ।