DNS แบบ Galera Cluster 3 Nodes

Written by

in

ถ้าจะอธิบาย 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) ครับ।