Your HomeLab DNS Needs a Backup // Technitium
สรุปย่อ
ประเด็นสำคัญจากวิดีโอ
- **ช่อง:** Christian Lempa · **ความยาว:** ~21 นาที · **ลิงก์:** https://www.youtube.com/watch?v=-mc6-uem7vM
# สรุป: Your HomeLab DNS Needs a Backup // Technitium - **ช่อง:** Christian Lempa · **ความยาว:** ~21 นาที · **ลิงก์:** https://www.youtube.com/watch?v=-mc6-uem7vM ## ประเด็นหลัก - การตั้งค่า DNS บนเซิร์ฟเวอร์เดียวเป็นอันตราย เพราะถ้าเซิร์ฟเวอร์ล้มเหลวทุกอย่างจะหยุดทำงาน - Technitium DNS มีฟังก์ชันการกลุ่มเซิร์ฟเวอร์ (clustering) ที่ช่วยให้สามารถซิงโครไนซ์การตั้งค่า DNS ข้ามหลายคอนเทนเนอร์ - การตั้งค่าสามารถทำบนเซิร์ฟเวอร์แยกกัน (แนะนำ) หรือบนโน๊ดเดียวกันสำหรับการทดสอบ - เซิร์ฟเวอร์สำรองไม่ใช่แค่ cold backup แต่สามารถรับคำขอ DNS ได้ทันทีจากไคลเอนต์ - ใช้ Docker Compose สำหรับการปรับใช้คอนเทนเนอร์ Technitium DNS - ต้องใช้เวอร์ชันเดียวกันบนทุกเซิร์ฟเวอร์ใน cluster - ตั้งค่า DNS_SERVER_DOMAIN สำหรับทุกเซิร์ฟเวอร์ด้วยชื่อที่ไม่ซ้ำกัน - เซิร์ฟเวอร์หลักคือที่ทำการเปลี่ยนแปลง และการเปลี่ยนแปลงจะซิงโครไนซ์ไปยังเซิร์ฟเวอร์อื่นๆ อัตโนมัติ ## ความเห็นสรุป วิดีโอนี้แสดงให้เห็นวิธีการสร้างระบบ DNS ที่เชื่อถือได้สำหรับโฮมแล็บด้วยการใช้ Technitium clustering แนวคิดคือการใช้หลายเซิร์ฟเวอร์ที่สามารถตอบสนองคำขอได้พร้อมกัน ไม่ใช่รอเซิร์ฟเวอร์หลักล้มเหลวก่อน การตั้งค่าซับซ้อนพอสมควรแต่ไม่ยากเกินไปสำหรับผู้ใช้งานระดับกลาง สิ่งสำคัญคือการใช้เซิร์ฟเวอร์ฮาร์ดแวร์ที่แยกกันเพื่อความเสถียรของระบบ
คำแปลเต็ม
แปลตามบทสนทนาต้นฉบับ ปรับเป็นภาษาไทยธรรมชาติ
ในบทสอน Technitiumก่อนหน้านี้ ผมสร้างการตั้งค่า DNS ที่ต้องการอย่างแท้จริงสำหรับโฮมแล็บของผม เซิร์ฟเวอร์ DNS ที่มีความสามารถในการค้นห้ย้อนกลับ (recursive DNS server) ทำงานผ่าน Docker จัดการผ่านส่วนติดต่อเว็บที่สะอาดและทำงานอัตโนมัติผ่าน infrastructure as code ปัญหาเดียวคือผมสร้างมันบนเซิร์ฟเวอร์เดียวเท่านั้น และเมื่อเซิร์ฟเวอร์หรือคอนเทนเนอร์นั้นเกิดขัดข้อง ทุกอย่างในโฮมแล็บของผมจะไม่ทำงานอีกต่อไป นั่นเป็นเหตุผลว่าทำไมวันนี้ผมจะแสดงให้คุณเห็นวิธีการเพิ่มเซิร์ฟเวอร์ Technitium ที่สองหรือแม้กระทั่งเซิร์ฟเวอร์ที่สามเป็นเซิร์ฟเวอร์สำรอง เราจะใช้ฟังก์ชันการกลุ่มเซิร์ฟเวอร์ (clustering function) ที่มีอยู่แล้วใน Technitium ซึ่งช่วยให้คุณสามารถซิงโครไนซ์การตั้งค่า DNS ผ่านหลายคอนเทนเนอร์ที่คุณสามารถทำงานบนเซิร์�วอร์แยกกัน ซึ่งทั้งหมดสามารถตอบสนองคำขอ DNS จากไคลเอนต์ของคุณได้อย่างแท้จริงในภายหลัง
นี่นับเป็นการตั้งค่าที่ค่อนข้างพบเห็นได้บ่อยในสภาพแวดล้อม IT ระดับมืออาชีพเพราะในเครือข่าย สิ่งมากมายขึ้นอยู่กับ DNS ดังนั้นในความคิดเห็นของผม นี่คือสิ่งจำเป็นสำหรับการตั้งค่าเครือข่ายที่เชื่อถือได้ และเชื่อเถอะผมสิ มันก็ไม่ได้ซับซ้อนเลยที่จะตั้งค่า
อะไรนะครับผม เรามาดูรูปแบบง่ายๆ ที่สรุปว่าเราจะสร้างสิ่งที่ไหนวันนี้แบบละเอียด เป็นไปได้ว่าผมได้นำการตั้งค่านี้ไปใช้ในโฮมแล็บของตัวเองแล้ว มันกำลังทำงานจริงอยู่แล้วและทำงานได้ดีเยี่ยมมาก อาจจะแสดงให้คุณเห็นในภายหลังแต่ผมก็ได้เพิ่มเซิร์ฟเวอร์ DNS ที่สามด้วย ดังนั้นคุณสามารถขยายการตั้งค่านี้ได้อย่างง่ายดายถ้าคุณต้องการ เนื่องจากมันสมเหตุสมผลที่สุดเมื่อคุณจะปรับใช้คอนเทนเนอร์ DNS Technitium บนเครื่องจักรฮาร์ดแวร์ที่แยกกันในการตั้งค่าของผม ผมกำลังทำงานบน Proxmox cluster โดยฟรีโน๊ด และผมได้กระจายคอนเทนเนอร์ DNS Technitium ไปยังทุกฟรีโน๊ดดังนั้น ทุกครั้งที่ผมรีบูตเซิร์ฟเวอร์ Proxmox หนึ่งในนั้น เซิร์ฟเวอร์ DNS ที่สองหรือที่สามสามารถเข้ามาเป็นตัวทดแทนและตอบสนองคำขอจากไคลเอนต์ของผมได้
เป็นไปได้มากว่าถ้าคุณยังไม่ได้ดูวิดีโอแรกของผมเกี่ยวกับวิธีการปรับใช้ Technitium ด้วยการตั้งค่า Docker Compose ง่ายๆ ให้ไปดูวิดีโอนั้นก่อน แน่นอนว่าผมได้วางลิงก์ไว้ในคำอธิบายวันนี้ เราจะขยายบนการตั้งค่านี้ ดังนั้นผมจะไม่อธิบายทุกอย่างตั้งแต่ต้น แค่บางส่วนเท่านั้น
## การตั้งค่าการกลุ่มเซิร์ฟเวอร์ DNS Technitium
ในบทนี้ผมได้เตรียมไว้สำหรับการสาธิตสองเครื่องจำลองเครื่องเสมือนเล็กๆ บน Proxmox cluster ของผมที่ทำงานบน Ubuntu Linux และ Docker engine และแน่นอนว่าผมได้ปรับใช้เซิร์ฟเวอร์ DNS Technitium ด้วย Docker Compose แล้ว เหมือนเช่นในบทสอนแรกของผม ผมทำเพราะผมสามารถแสดงให้คุณเห็นได้ดีว่าคุณสามารถตั้งค่าสิ่งนี้จากศูนย์ได้อย่างสมบูรณ์โดยไม่ต้องทำลายการตั้งค่า DNS ที่มีอยู่แล้วดังนั้นนั่นคือเหตุผลว่าทำไมเราใช้สาธิตเล็กๆ นี้ แต่คุณสามารถเพิ่มเซิร์ฟเวอร์เพิ่มเติมได้อย่างง่ายดาย เช่นที่ผมบอกไปว่าเซิร์ฟเวอร์ที่สามหรือแม้กระทั่งเซิร์�วอร์ที่สี่อาจจะทำงานบนเครื่องจักรฮาร์ดแวร์แยกกันซึ่งจะดีที่สุด แต่สำหรับสาธิตนี้ผมคิดว่าสมควรที่จะทำงานบนโน๊ดเดียวกัน และสำหรับสิ่งนี้ผมยังได้ปรับใช้เซิร์ฟเวอร์ทดสอบไคลเอนต์ที่ทำงานบน Ubuntu desktop ดังนั้นที่นี้ผมสามารถแสดงให้คุณเห็นว่ามันทำงานอย่างไรเมื่อเซิร์ฟเวอร์หนึ่งในนี้เกิดขัดข้อง ขณะนี้มาเข้าไปที่เทอมินัล ดังนั้นที่นี่ผมเชื่อมต่อกับเซิร์ฟเวอร์ DNS ทั้งสอง ดังนั้นในไดเรกทอรีนี้ผมได้เพิ่มไฟล์ docker-compose.yml ไฟล์นี้มีการปรับใช้แอปพลิเคชันของ technitium ทำงานเวอร์ชันล่าสุด มันสำคัญที่จะใช้เวอร์ชันเดียวกันบนทุกโน๊ด cluster ผมคิดว่านั่นคือที่แนะนำและควรจะเป็นภาษาที่อธิบายตัวเองได้ และแต่ละคอนเทนเนอร์จะได้ชื่อโฮสต์แยกกัน ตัวแรกคือ DNS-test1 เซิร์ฟเวอร์ที่สองคือ DNS-test2 แน่นอนว่าดังนั้นนั่นจึงสมควร และผมยังได้ตั้งค่าค่าแวริเอิบิลสภาพแวดล่่ง DNS_SERVER_DOMAIN สำหรับเซิร์ฟเวอร์ DNS เหล่านี้ทุกตัว คุณสามารถตั้งค่านี้ใน web UI ในภายหลังได้ด้วย ผมแสดงให้คุณเห็นสิ่งนี้ แต่สิ่งที่สำคัญคือคุณต้องตั้งค่าทั้งสองเซิร์ฟเวอร์ DNS ด้วย primary identity ใน cluster domain ดังนั้นนั่นหมายความว่าทุกเซิร์ฟเวอร์ DNS ควรจะมีชื่อที่ไม่ซ้ำกัน จุด แล้ว cluster domain ในตัวอย่างของผมผมเรียกว่า technitiumcluster.est ใน production homelab ของผมมันคือ DNSC cluster.home.crave.de ดังนั้นเพียงเลือกชื่อที่ไม่ซ้ำกันที่สุด ควรเป็น zone แยกสำหรับการระบุตัวตนของ technitium cluster ดังนั้นอย่าวางมันไว้บน DNS zone ทั่วไปที่คุณใช้สำหรับเซิร์ฟเวอร์อื่นๆ ที่เป็น uh Technicium ใช้ cluster domain สำหรับตัวตนของ node, บันทึก cluster, catalog zone และ TLSA records ซึ่งจำเป็นสำหรับการสื่อสารที่ปลอดภัย ดังนั้นเลือก domain ที่ไม่ซ้ำกันและไม่ขัดแย้งกับ zone ที่มีอยู่
## การทดสอบการล้มเหลว
ขอให้เราทำการทดสอบ failover อย่างรวดเร็วด้วย เพื่อให้เราปิดเซิร์ฟเวอร์ technitium ที่สองด้วย docker-compose down ถ้าเรากลับมาที่เซิร์ฟเวอร์แรก เมื่อเราไปที่ administration clustering คุณควรจะเห็นว่าตัวที่สองกลายเป็น unreachable ดังนั้นถ้าเกิดเช่นนี้คุณจะรู้ว่ามีอะไรผิดพลาดกับเซิร์ฟเวอร์ DNS และการซิงโครไนซ์ถูกหยุดชั่วคราวจนกว่าจะออนไลน์อีกครั้ง แต่ถ้าเรากลับไปที่เครื่อง Ubuntu ให้เราเช่นเดียวกันทำ DNS query อีกครั้ง คุณสามารถเห็นว่า response มาทันทีและคุณควรจะสามารถแก้ไข DNS queries ได้เมื่อเซิร์ฟเวอร์ใดเซิร์ฟเวอร์หนึ่งเป็น offline ไม่ใช่ปัญหา และใช่นี่คือวิธีที่ผมได้ทำให้การตั้งค่า DNS ในโฮมแล็บของผมเชื่อถือได้มากขึ้น
บทสรุปที่ผมต้องการสรุปท้ายนี้คือคำเตือนสองสามอย่างที่ผมได้เรียนรู้ ดังนั้นก่อนอื่นนี่คือสิ่งที่คุณสามารถทำเพื่อให้ได้ host redundancy จริงสำหรับ DNS queries ของคุณ และนี่ไม่ใช่แค่ cold backup ดังนั้นเซิร์ฟเวอร์ที่สองหรือที่สามไม่ได้นั่งรอให้เซิร์ฟเวอร์แรกล้มเหลว ไคลเอนต์ใดๆ สามารถส่ง DNS requests ไปยังเซิร์ฟเวอร์ใดๆ ได้ ทั้งหมดตอบกลับ และสิ่งสำคัญคือเซิร์ฟเวอร์ DNS แรก เซิร์ฟเวอร์หลักยังคงเป็นเซิร์ฟเวอร์ DNS หลักของคุณ ไม่ว่าคุณจะทำการเปลี่ยนแปลงอะไรเช่นถ้าคุณลบ zones หรือ records ที่นี่ มันสามารถซิงโครไนซ์ไปยังเซิร์ฟเวอร์อื่นๆ ได้เช่นกัน นี่ก็คือสถานที่ที่คุณเชื่อมต่อ infrastructure as code และ automation tools หรือใช้ technitium API คุณเสมอทำการเปลี่ยนแปลงเหล่านี้บนเซิร์ฟเวอร์หลักและนั่นคือการส่งออกการเปลี่ยนแปลงไปยังตัวอื่นๆ ดังนั้นนี่คือทั้งหมดสำหรับวันนี้ ขอบคุณมากสำหรับการรับชม ฉันหวังว่าฉันสามารถช่วยคุณได้ในการตั้งค่า DNS clustering ที่เชื่อถือได้สำหรับโฮมแล็บของคุณเอง
อภิธานศัพท์เทคนิค
คำศัพท์และชื่อผลิตภัณฑ์ที่คงรูปภาษาอังกฤษ
| ศัพท์ | คำแปล / คำอธิบาย |
|---|---|
| | คำศัพท์ | คำแปล / คำอธิบาย |
| Technitium | เซิร์ฟเวอร์ DNS โอเพนซอร์ส (เก็บศัพท์เป็นภาษาอังกฤษ) |
| DNS clustering | การกลุ่มเซิร์ฟเวอร์ DNS เพื่อให้เซิร์ฟเวอร์หลายตัวทำงานร่วมกันและซิงโครไนซ์ข้อมูล |
| recursive DNS server | เซิร์ฟเวอร์ DNS ที่มีความสามารถในการค้นห้ย้อนกลับจากชื่อโดเมนไปยัง IP address |
| Docker container | คอนเทนเนอร์ที่รันบน Docker (เก็บศัพท์เป็นภาษาอังกฤษ) |
| Docker Compose | เครื่องมือสำหรับจัดการแอปพลิเคช์ Docker หลายตัวพร้อมกัน (เก็บศัพท์เป็นภาษาอังกฤษ) |
| clustering function | ฟังก์ชันการกลุ่มเซิร์ฟเวอร์ใน Technitium ที่ช่วยให้ซิงโครไนซ์การตั้งค่า |
| primary server | เซิร์ฟเวอร์หลักที่ทำหน้าที่เป็นแหล่งข้อมูลหลักใน cluster |
| secondary server | เซิร์ฟเวอร์รองที่ทำหน้าที่รับคำขอเมื่อเซิร์ฟเวอร์หลักพร้อมใช้งาน |
| cold backup | ข้อมูลสำรองที่ไม่ได้ทำงานจนกว่าจะมีปัญหาเกิดขึ้น |
| failover | การสลับไปใช้ระบบสำรองเมื่อระบบหลักเกิดขัดข้อง |
| Proxmox | ซอฟต์แวร์เซิร์ฟเวอร์เสมือน (เก็บศัพท์เป็นภาษาอังกฤษ) |
| DHCP server | เซิร์ฟเวอร์สำหรับจัดการ IP address ให้กับอุปกรณ์ในเครือข่าย (เก็บศัพท์เป็นภาษาอังกฤษ) |
| zone | พื้นที่การจัดการ DNS สำหรับโดเมนหนึ่งๆ |
| DNS records | บันทึกข้อมูลในระบบ DNS เช่น A record, PTR record |
| TLSA records | บันทึกสำหรับความปลอดภัยของการเชื่อมต่อ TLS (เก็บศัพท์เป็นภาษาอังกฤษ) |
| infrastructure as code | การใช้โค้ดเพื่อจัดการและปรับใช้โครงสร้างพื้นฐาน |
ซับไตเติ้ลภาษาไทย
ดาวน์โหลดหรือดูซับทั้งหมด
1 00:00:00,000 --> 00:00:06,610 ในบทสอน Technitiumก่อนหน้านี้ 2 00:00:06,610 --> 00:00:11,397 ผมสร้างการตั้งค่า DNS 3 00:00:11,397 --> 00:00:20,514 ที่ต้องการอย่างแท้จริงสำหรับโฮมแล็บของผม 4 00:00:20,514 --> 00:00:23,934 เซิร์ฟเวอร์ DNS
เปิดดูซับไตเติ้ลทั้งหมด (138 segments)
1 00:00:00,000 --> 00:00:06,610 ในบทสอน Technitiumก่อนหน้านี้ 2 00:00:06,610 --> 00:00:11,397 ผมสร้างการตั้งค่า DNS 3 00:00:11,397 --> 00:00:20,514 ที่ต้องการอย่างแท้จริงสำหรับโฮมแล็บของผม 4 00:00:20,514 --> 00:00:23,934 เซิร์ฟเวอร์ DNS 5 00:00:23,934 --> 00:00:33,963 ที่มีความสามารถในการค้นห้ย้อนกลับ (recursive 6 00:00:33,963 --> 00:00:40,345 DNS server) ทำงานผ่าน Docker 7 00:00:40,345 --> 00:00:52,426 จัดการผ่านส่วนติดต่อเว็บที่สะอาดและทำงานอัตโนมัติผ่าน 8 00:00:52,426 --> 00:00:57,440 infrastructure as code 9 00:00:57,440 --> 00:01:08,609 ปัญหาเดียวคือผมสร้างมันบนเซิร์ฟเวอร์เดียวเท่านั้น 10 00:01:08,609 --> 00:01:19,778 และเมื่อเซิร์ฟเวอร์หรือคอนเทนเนอร์นั้นเกิดขัดข้อง 11 00:01:19,778 --> 00:01:28,896 ทุกอย่างในโฮมแล็บของผมจะไม่ทำงานอีกต่อไป 12 00:01:28,896 --> 00:01:44,396 นั่นเป็นเหตุผลว่าทำไมวันนี้ผมจะแสดงให้คุณเห็นวิธีการเพิ่มเซิร์ฟเวอร์ 13 00:01:44,396 --> 00:01:46,675 Technitium 14 00:01:46,675 --> 00:01:59,668 ที่สองหรือแม้กระทั่งเซิร์ฟเวอร์ที่สามเป็นเซิร์ฟเวอร์สำรอง 15 00:01:59,668 --> 00:02:07,645 เราจะใช้ฟังก์ชันการกลุ่มเซิร์ฟเวอร์ 16 00:02:07,645 --> 00:02:16,079 (clustering function) ที่มีอยู่แล้วใน 17 00:02:16,079 --> 00:02:18,358 Technitium 18 00:02:18,358 --> 00:02:28,388 ซึ่งช่วยให้คุณสามารถซิงโครไนซ์การตั้งค่า DNS 19 00:02:28,388 --> 00:02:40,696 ผ่านหลายคอนเทนเนอร์ที่คุณสามารถทำงานบนเซิร์�วอร์แยกกัน 20 00:02:40,696 --> 00:02:47,990 ซึ่งทั้งหมดสามารถตอบสนองคำขอ DNS 21 00:02:47,990 --> 00:02:57,336 จากไคลเอนต์ของคุณได้อย่างแท้จริงในภายหลัง 22 00:02:57,336 --> 00:03:10,328 นี่นับเป็นการตั้งค่าที่ค่อนข้างพบเห็นได้บ่อยในสภาพแวดล้อม 23 00:03:10,328 --> 00:03:17,622 IT ระดับมืออาชีพเพราะในเครือข่าย 24 00:03:17,622 --> 00:03:23,321 สิ่งมากมายขึ้นอยู่กับ DNS 25 00:03:23,321 --> 00:03:29,019 ดังนั้นในความคิดเห็นของผม 26 00:03:29,019 --> 00:03:41,556 นี่คือสิ่งจำเป็นสำหรับการตั้งค่าเครือข่ายที่เชื่อถือได้ 27 00:03:41,556 --> 00:03:45,203 และเชื่อเถอะผมสิ 28 00:03:45,203 --> 00:03:55,688 มันก็ไม่ได้ซับซ้อนเลยที่จะตั้งค่า อะไรนะครับผม 29 00:03:55,688 --> 00:03:59,791 เรามาดูรูปแบบง่ายๆ 30 00:03:59,791 --> 00:04:10,276 ที่สรุปว่าเราจะสร้างสิ่งที่ไหนวันนี้แบบละเอียด 31 00:04:10,276 --> 00:04:23,724 เป็นไปได้ว่าผมได้นำการตั้งค่านี้ไปใช้ในโฮมแล็บของตัวเองแล้ว 32 00:04:23,724 --> 00:04:34,437 มันกำลังทำงานจริงอยู่แล้วและทำงานได้ดีเยี่ยมมาก 33 00:04:34,437 --> 00:04:46,746 อาจจะแสดงให้คุณเห็นในภายหลังแต่ผมก็ได้เพิ่มเซิร์ฟเวอร์ 34 00:04:46,746 --> 00:04:49,937 DNS ที่สามด้วย 35 00:04:49,937 --> 00:05:03,841 ดังนั้นคุณสามารถขยายการตั้งค่านี้ได้อย่างง่ายดายถ้าคุณต้องการ 36 00:05:03,841 --> 00:05:16,606 เนื่องจากมันสมเหตุสมผลที่สุดเมื่อคุณจะปรับใช้คอนเทนเนอร์ 37 00:05:16,606 --> 00:05:19,797 DNS Technitium 38 00:05:19,797 --> 00:05:30,738 บนเครื่องจักรฮาร์ดแวร์ที่แยกกันในการตั้งค่าของผม 39 00:05:30,738 --> 00:05:40,084 ผมกำลังทำงานบน Proxmox cluster โดยฟรีโน๊ด 40 00:05:40,084 --> 00:05:49,201 และผมได้กระจายคอนเทนเนอร์ DNS Technitium 41 00:05:49,201 --> 00:05:54,216 ไปยังทุกฟรีโน๊ดดังนั้น 42 00:05:54,216 --> 00:06:02,650 ทุกครั้งที่ผมรีบูตเซิร์ฟเวอร์ Proxmox 43 00:06:02,650 --> 00:06:08,804 หนึ่งในนั้น เซิร์ฟเวอร์ DNS 44 00:06:08,804 --> 00:06:25,443 ที่สองหรือที่สามสามารถเข้ามาเป็นตัวทดแทนและตอบสนองคำขอจากไคลเอนต์ของผมได้ 45 00:06:25,443 --> 00:06:41,171 เป็นไปได้มากว่าถ้าคุณยังไม่ได้ดูวิดีโอแรกของผมเกี่ยวกับวิธีการปรับใช้ 46 00:06:41,171 --> 00:06:51,656 Technitium ด้วยการตั้งค่า Docker Compose ง่ายๆ 47 00:06:51,656 --> 00:06:56,443 ให้ไปดูวิดีโอนั้นก่อน 48 00:06:56,443 --> 00:07:05,788 แน่นอนว่าผมได้วางลิงก์ไว้ในคำอธิบายวันนี้ 49 00:07:05,788 --> 00:07:11,259 เราจะขยายบนการตั้งค่านี้ 50 00:07:11,259 --> 00:07:19,921 ดังนั้นผมจะไม่อธิบายทุกอย่างตั้งแต่ต้น 51 00:07:19,921 --> 00:07:24,023 แค่บางส่วนเท่านั้น 52 00:07:24,023 --> 00:07:39,523 ในบทนี้ผมได้เตรียมไว้สำหรับการสาธิตสองเครื่องจำลองเครื่องเสมือนเล็กๆ 53 00:07:39,523 --> 00:07:48,869 บน Proxmox cluster ของผมที่ทำงานบน Ubuntu 54 00:07:48,869 --> 00:07:54,111 Linux และ Docker engine 55 00:07:54,111 --> 00:08:03,001 และแน่นอนว่าผมได้ปรับใช้เซิร์ฟเวอร์ DNS 56 00:08:03,001 --> 00:08:10,979 Technitium ด้วย Docker Compose แล้ว 57 00:08:10,979 --> 00:08:16,677 เหมือนเช่นในบทสอนแรกของผม 58 00:08:16,677 --> 00:08:41,750 ผมทำเพราะผมสามารถแสดงให้คุณเห็นได้ดีว่าคุณสามารถตั้งค่าสิ่งนี้จากศูนย์ได้อย่างสมบูรณ์โดยไม่ต้องทำลายการตั้งค่า 59 00:08:41,750 --> 00:08:42,849 DNS 60 00:08:42,849 --> 00:08:55,614 ที่มีอยู่แล้วดังนั้นนั่นคือเหตุผลว่าทำไมเราใช้สาธิตเล็กๆ 61 00:08:55,614 --> 00:08:56,713 นี้ 62 00:08:56,713 --> 00:09:08,565 แต่คุณสามารถเพิ่มเซิร์ฟเวอร์เพิ่มเติมได้อย่างง่ายดาย 63 00:09:08,565 --> 00:09:35,006 เช่นที่ผมบอกไปว่าเซิร์ฟเวอร์ที่สามหรือแม้กระทั่งเซิร์�วอร์ที่สี่อาจจะทำงานบนเครื่องจักรฮาร์ดแวร์แยกกันซึ่งจะดีที่สุด 64 00:09:35,006 --> 00:09:47,315 แต่สำหรับสาธิตนี้ผมคิดว่าสมควรที่จะทำงานบนโน๊ดเดียวกัน 65 00:09:47,315 --> 00:10:02,131 และสำหรับสิ่งนี้ผมยังได้ปรับใช้เซิร์ฟเวอร์ทดสอบไคลเอนต์ที่ทำงานบน 66 00:10:02,131 --> 00:10:05,322 Ubuntu desktop 67 00:10:05,322 --> 00:10:25,836 ดังนั้นที่นี้ผมสามารถแสดงให้คุณเห็นว่ามันทำงานอย่างไรเมื่อเซิร์ฟเวอร์หนึ่งในนี้เกิดขัดข้อง 68 00:10:25,836 --> 00:10:31,535 ขณะนี้มาเข้าไปที่เทอมินัล 69 00:10:31,535 --> 00:10:41,108 ดังนั้นที่นี่ผมเชื่อมต่อกับเซิร์ฟเวอร์ DNS 70 00:10:41,108 --> 00:10:50,910 ทั้งสอง ดังนั้นในไดเรกทอรีนี้ผมได้เพิ่มไฟล์ 71 00:10:50,910 --> 00:10:55,013 docker-compose.yml 72 00:10:55,013 --> 00:11:05,042 ไฟล์นี้มีการปรับใช้แอปพลิเคชันของ technitium 73 00:11:05,042 --> 00:11:09,373 ทำงานเวอร์ชันล่าสุด 74 00:11:09,373 --> 00:11:18,718 มันสำคัญที่จะใช้เวอร์ชันเดียวกันบนทุกโน๊ด 75 00:11:18,718 --> 00:11:20,314 cluster 76 00:11:20,314 --> 00:11:33,306 ผมคิดว่านั่นคือที่แนะนำและควรจะเป็นภาษาที่อธิบายตัวเองได้ 77 00:11:33,306 --> 00:11:42,196 และแต่ละคอนเทนเนอร์จะได้ชื่อโฮสต์แยกกัน 78 00:11:42,196 --> 00:11:51,313 ตัวแรกคือ DNS-test1 เซิร์ฟเวอร์ที่สองคือ 79 00:11:51,313 --> 00:11:59,975 DNS-test2 แน่นอนว่าดังนั้นนั่นจึงสมควร 80 00:11:59,975 --> 00:12:09,548 และผมยังได้ตั้งค่าค่าแวริเอิบิลสภาพแวดล่่ง 81 00:12:09,548 --> 00:12:18,438 DNS_SERVER_DOMAIN สำหรับเซิร์ฟเวอร์ DNS 82 00:12:18,438 --> 00:12:28,239 เหล่านี้ทุกตัว คุณสามารถตั้งค่านี้ใน web UI 83 00:12:28,239 --> 00:12:37,357 ในภายหลังได้ด้วย ผมแสดงให้คุณเห็นสิ่งนี้ 84 00:12:37,357 --> 00:12:48,754 แต่สิ่งที่สำคัญคือคุณต้องตั้งค่าทั้งสองเซิร์ฟเวอร์ 85 00:12:48,754 --> 00:12:58,555 DNS ด้วย primary identity ใน cluster domain 86 00:12:58,555 --> 00:13:07,673 ดังนั้นนั่นหมายความว่าทุกเซิร์ฟเวอร์ DNS 87 00:13:07,673 --> 00:13:16,790 ควรจะมีชื่อที่ไม่ซ้ำกัน จุด แล้ว cluster 88 00:13:16,790 --> 00:13:24,084 domain ในตัวอย่างของผมผมเรียกว่า 89 00:13:24,084 --> 00:13:33,885 technitiumcluster.est ใน production homelab 90 00:13:33,885 --> 00:13:42,547 ของผมมันคือ DNSC cluster.home.crave.de 91 00:13:42,547 --> 00:13:51,437 ดังนั้นเพียงเลือกชื่อที่ไม่ซ้ำกันที่สุด 92 00:13:51,437 --> 00:13:59,870 ควรเป็น zone แยกสำหรับการระบุตัวตนของ 93 00:13:59,870 --> 00:14:10,128 technitium cluster ดังนั้นอย่าวางมันไว้บน DNS 94 00:14:10,128 --> 00:14:19,701 zone ทั่วไปที่คุณใช้สำหรับเซิร์ฟเวอร์อื่นๆ 95 00:14:19,701 --> 00:14:33,605 ที่เป็น uh Technicium ใช้ cluster domain สำหรับตัวตนของ node, 96 00:14:33,605 --> 00:14:43,862 บันทึก cluster, catalog zone และ TLSA records 97 00:14:43,862 --> 00:14:52,068 ซึ่งจำเป็นสำหรับการสื่อสารที่ปลอดภัย 98 00:14:52,068 --> 00:14:56,399 ดังนั้นเลือก domain 99 00:14:56,399 --> 00:15:06,200 ที่ไม่ซ้ำกันและไม่ขัดแย้งกับ zone ที่มีอยู่ 100 00:15:06,200 --> 00:15:16,230 ขอให้เราทำการทดสอบ failover อย่างรวดเร็วด้วย 101 00:15:16,230 --> 00:15:24,435 เพื่อให้เราปิดเซิร์ฟเวอร์ technitium 102 00:15:24,435 --> 00:15:31,274 ที่สองด้วย docker-compose down 103 00:15:31,274 --> 00:15:41,075 ถ้าเรากลับมาที่เซิร์ฟเวอร์แรก เมื่อเราไปที่ 104 00:15:41,075 --> 00:15:46,773 administration clustering 105 00:15:46,773 --> 00:15:56,803 คุณควรจะเห็นว่าตัวที่สองกลายเป็น unreachable 106 00:15:56,803 --> 00:16:10,251 ดังนั้นถ้าเกิดเช่นนี้คุณจะรู้ว่ามีอะไรผิดพลาดกับเซิร์ฟเวอร์ 107 00:16:10,251 --> 00:16:11,350 DNS 108 00:16:11,350 --> 00:16:23,658 และการซิงโครไนซ์ถูกหยุดชั่วคราวจนกว่าจะออนไลน์อีกครั้ง 109 00:16:23,658 --> 00:16:30,953 แต่ถ้าเรากลับไปที่เครื่อง Ubuntu 110 00:16:30,953 --> 00:16:39,842 ให้เราเช่นเดียวกันทำ DNS query อีกครั้ง 111 00:16:39,842 --> 00:16:45,541 คุณสามารถเห็นว่า response 112 00:16:45,541 --> 00:16:54,886 มาทันทีและคุณควรจะสามารถแก้ไข DNS queries 113 00:16:54,886 --> 00:17:04,231 ได้เมื่อเซิร์ฟเวอร์ใดเซิร์ฟเวอร์หนึ่งเป็น 114 00:17:04,231 --> 00:17:08,562 offline ไม่ใช่ปัญหา 115 00:17:08,562 --> 00:17:18,364 และใช่นี่คือวิธีที่ผมได้ทำให้การตั้งค่า DNS 116 00:17:18,364 --> 00:17:25,658 ในโฮมแล็บของผมเชื่อถือได้มากขึ้น 117 00:17:25,658 --> 00:17:40,702 บทสรุปที่ผมต้องการสรุปท้ายนี้คือคำเตือนสองสามอย่างที่ผมได้เรียนรู้ 118 00:17:40,702 --> 00:17:52,098 ดังนั้นก่อนอื่นนี่คือสิ่งที่คุณสามารถทำเพื่อให้ได้ 119 00:17:52,098 --> 00:18:02,356 host redundancy จริงสำหรับ DNS queries ของคุณ 120 00:18:02,356 --> 00:18:08,510 และนี่ไม่ใช่แค่ cold backup 121 00:18:08,510 --> 00:18:24,466 ดังนั้นเซิร์ฟเวอร์ที่สองหรือที่สามไม่ได้นั่งรอให้เซิร์ฟเวอร์แรกล้มเหลว 122 00:18:24,466 --> 00:18:26,973 ไคลเอนต์ใดๆ 123 00:18:26,973 --> 00:18:37,458 สามารถส่ง DNS requests ไปยังเซิร์ฟเวอร์ใดๆ ได้ 124 00:18:37,458 --> 00:18:47,715 ทั้งหมดตอบกลับ และสิ่งสำคัญคือเซิร์ฟเวอร์ DNS 125 00:18:47,715 --> 00:18:57,517 แรก เซิร์ฟเวอร์หลักยังคงเป็นเซิร์ฟเวอร์ DNS 126 00:18:57,517 --> 00:18:59,796 หลักของคุณ 127 00:18:59,796 --> 00:19:09,597 ไม่ว่าคุณจะทำการเปลี่ยนแปลงอะไรเช่นถ้าคุณลบ 128 00:19:09,597 --> 00:19:15,296 zones หรือ records ที่นี่ 129 00:19:15,296 --> 00:19:24,413 มันสามารถซิงโครไนซ์ไปยังเซิร์ฟเวอร์อื่นๆ 130 00:19:24,413 --> 00:19:33,759 ได้เช่นกัน นี่ก็คือสถานที่ที่คุณเชื่อมต่อ 131 00:19:33,759 --> 00:19:43,560 infrastructure as code และ automation tools 132 00:19:43,560 --> 00:19:48,575 หรือใช้ technitium API 133 00:19:48,575 --> 00:20:10,001 คุณเสมอทำการเปลี่ยนแปลงเหล่านี้บนเซิร์ฟเวอร์หลักและนั่นคือการส่งออกการเปลี่ยนแปลงไปยังตัวอื่นๆ 134 00:20:10,001 --> 00:20:17,295 ดังนั้นนี่คือทั้งหมดสำหรับวันนี้ 135 00:20:17,295 --> 00:20:22,538 ขอบคุณมากสำหรับการรับชม 136 00:20:22,538 --> 00:20:32,795 ฉันหวังว่าฉันสามารถช่วยคุณได้ในการตั้งค่า DNS 137 00:20:32,795 --> 00:20:35,074 clustering 138 00:20:35,074 --> 00:20:43,280 ที่เชื่อถือได้สำหรับโฮมแล็บของคุณเอง