เซิร์ฟเวอร์ DNS ใช้ anycast แล้ว การเพิ่ม IP จะช่วยเพิ่มความสามารถในการปรับขยายได้หรือไม่


9

RFC 1034กำหนดให้เราต้องกำหนดอย่างน้อยสองที่อยู่ IP สำหรับเซิร์ฟเวอร์ DNS อย่างไรก็ตามความซ้ำซ้อนสามารถทำได้โดยที่อยู่ IP เดียวถ้าเราใช้ที่อยู่ใด ๆ ออกอากาศ BGP anycast ดูเหมือนว่าจะขยายได้ดีในเซิร์ฟเวอร์หลายร้อยหรือหลายพันเครื่อง

ถ้าเป็นเช่นนั้นทำไมเรายังต้องการที่อยู่ IP หลายแห่งสำหรับเซิร์ฟเวอร์ DNS จริง ๆ แล้วมันช่วยเพิ่มความซ้ำซ้อน (มีส่วนร่วมกับความพร้อม) ถ้าเรามี anycast ในสถานที่หรือเป็นเพียงตำนาน?

เราคาดหวังว่าจะพบปัญหาและข้อผิดพลาดอะไรหากเราใช้ที่อยู่ IP เดียวเท่านั้น

โดยที่ฉันหมายถึงละเว้นที่อยู่ DNS สำรองทั้งหมดหรือใช้ bogus IP (เช่น1.2.3.4) สำหรับที่อยู่ที่สองเมื่อการตั้งค่าบางอย่างต้องการอย่างน้อยสอง

คำตอบ:


16

ที่อยู่ IP ใด ๆ ในคาสต์เดียวไม่ได้ให้ความซ้ำซ้อนเช่นเดียวกับที่อยู่ IP สองรายการในคำนำหน้า IP ที่ต่างกัน

บ่อยครั้งปัญหาที่ยากที่สุดสำหรับความซ้ำซ้อนไม่ใช่เมื่อบางสิ่งผิดพลาดอย่างสมบูรณ์ แต่เมื่อมันทำงานผิดปกติเพียงพอที่จะผ่านการตรวจสุขภาพ แต่จริงๆแล้วไม่ใช่การทำงาน

ฉันเห็นการตั้งค่า DNS คาสต์ใด ๆ ที่เซิร์ฟเวอร์ DNS หยุดทำงาน แต่แพ็คเก็ตจะยังคงถูกส่งไปยังเซิร์ฟเวอร์ DNS นั้น สิ่งที่กำลังดูแลโฆษณาคำนำหน้าอาจไม่ทราบว่าเซิร์ฟเวอร์ DNS นั้นล้มเหลว

มันจะยิ่งยุ่งยากหากเซิร์ฟเวอร์ DNS ที่สงสัยไม่ใช่เซิร์ฟเวอร์ DNS ที่เชื่อถือได้ แต่จะเป็นตัวแก้ปัญหาแบบเรียกซ้ำ

ตัวแก้ไขแบบเรียกซ้ำดังกล่าวจะต้องมีทั้งที่อยู่ใดก็ได้ในการรับแบบสอบถามจากลูกค้าและที่อยู่แบบ unicast สำหรับการสอบถามเซิร์ฟเวอร์ DNS ที่มีสิทธิ์ แต่ถ้าที่อยู่ยูนิคาสต์ลดลงก็อาจดูมีสุขภาพดีพอที่จะส่งคำถาม

Anycast เป็นเครื่องมือที่ยอดเยี่ยมสำหรับความยืดหยุ่นและลดความล่าช้า แต่สำหรับความซ้ำซ้อนมันไม่ควรยืนอยู่คนเดียว

พูล anycast ที่ซ้ำซ้อนหลายตัวเป็นทางออกที่ดีสำหรับความพร้อมใช้งาน ตัวอย่างที่รู้จักกันดีคือ 8.8.8.8 และ 8.8.4.4 ทั้งสองเป็นที่อยู่ใด ๆ ที่ออกอากาศ แต่ไม่ควรกำหนดเส้นทางไปยังเซิร์ฟเวอร์ DNS จริง (สมมติว่า Google ทำงานได้ดี)

หากคุณมีเซิร์ฟเวอร์ DNS จริง 10 เซิร์ฟเวอร์คุณสามารถกำหนดค่าให้เป็น 2 พูลที่มี 5 เซิร์ฟเวอร์ในแต่ละพูลหรือ 5 พูลที่มี 2 ในแต่ละพูล คุณต้องการหลีกเลี่ยงการมีเซิร์ฟเวอร์ DNS หนึ่งตัวอยู่ในหลายกลุ่มพร้อมกัน

ดังนั้นคุณควรจัดสรร IP กี่ตัว? คุณต้องมี IP ที่สามารถกำหนดค่าเป็น anycast แยกจากกัน ซึ่งโดยปกติจะหมายความว่าคุณจะต้องจัดสรรพื้นที่ที่อยู่ IPv4 ทั้งหมด / 24 หรือพื้นที่ 486 IPv6 สำหรับแต่ละพูล นี่อาจ จำกัด จำนวนพูลที่คุณมีได้เป็นอย่างดี

นอกจากนี้หากเรากำลังพูดถึงเซิร์ฟเวอร์ที่มีสิทธิ์การตอบกลับ DNS กับระเบียน NS ทั้งหมดของคุณและกาว A และ AAAA ควรจะพอดีกับแพ็คเก็ตขนาด 512 ไบต์เดียว สำหรับเซิร์ฟเวอร์รูทสิ่งนี้ใช้ได้ถึง 13 ที่อยู่ แต่นั่นไม่รวมกาวและ IPv6 ดังนั้นจำนวนที่คุณเข้าถึงจะต่ำกว่า

แต่ละพูลควรมีการกระจายทางภูมิศาสตร์มากที่สุด หากคุณมีเซิร์ฟเวอร์ 5 เครื่องในยุโรปและ 5 แห่งในอเมริกาและ IP ใดก็ได้ 2 รายการคุณจะไม่สร้างหนึ่งพูลซึ่งครอบคลุมแต่ละทวีป คุณวาง 2 จากยุโรปไว้ในสระว่ายน้ำโดย 3 จากอเมริกาเหนือและอีก 5 คนในสระอื่น

หากคุณมีแอพคาสต์มากกว่า 2 แอพคุณสามารถให้ฟิสิคัลเซิร์ฟเวอร์อยู่ในพูลมากกว่าหนึ่งแอพชั่วคราว แต่คุณไม่ควรอนุญาตให้เซิร์ฟเวอร์ที่มีอยู่จริงอยู่ในกลุ่มทั้งหมดพร้อมกัน

การรวมกันของ anycast และ unicast นั้นเป็นไปได้ แต่จะต้องระมัดระวัง หากคุณมี IP สำหรับสองพูลฉันจะไม่รวมกัน แต่ถ้าคุณมี IP ที่ใช้ร่วมกันเพียง anycast เพียงอย่างเดียวก็อาจรวมถึง unicast IP ด้วย ปัญหาคือการที่รวม IP ของ unicast จะไม่ทำให้คุณมีเวลาในการตอบสนองและโหลดบาลานซ์ที่ดี

หากเซิร์ฟเวอร์จริงมีให้บริการทั้งแบบ unicast และ anycast คุณอาจเสี่ยงต่อผู้ใช้ในการเข้าถึงเซิร์ฟเวอร์เดียวกันกับเซิร์ฟเวอร์หลักและเซิร์ฟเวอร์สำรองและไม่สามารถเข้าถึงหากเซิร์ฟเวอร์ล่ม สิ่งนี้สามารถหลีกเลี่ยงได้โดยการใช้ที่อยู่ unicast ของเซิร์ฟเวอร์ที่ไม่ได้อยู่ในกลุ่มการออกอากาศหรือโดยการให้ผู้ใช้ที่มีสองที่อยู่เดียว

ยิ่งที่อยู่เดียวที่คุณใส่ลงในการผสมยิ่งแบบสอบถามน้อยจะถูกส่งไปยังที่อยู่ใด ๆ ที่ออกอากาศและผลประโยชน์ที่น้อยกว่าที่คุณจะได้รับจากการออกอากาศใด ๆ ในแง่ของความล่าช้าและความยืดหยุ่น


คุณหมายถึงวิธีที่ดีที่สุดในการปรับขนาดได้คือการใช้ที่อยู่ยูนิคาสต์รองจำนวนมาก (หรือที่รู้จักในการตั้งค่า ns1.domain, ns2.d, ns3.d ... ns300.d) แทนการใช้ anycast?
Pacerier

@Pierier ไม่นั่นไม่ใช่สิ่งที่ฉันหมายถึง ฉันจะชี้แจงว่าในคำตอบของฉัน
kasperd

+1 ข้อผิดพลาดในการกำหนดเส้นทางอาจทำให้ยูนิคาสต์ของคุณตกนรก (ทางตัน) การมีที่อยู่ที่แยกจากกันเป็นครั้งที่สองหมายความว่าคุณมี "ตั๋ว" มากกว่าหนึ่งรายการในนั้น;)
TomTom

2
+1 ฉันต้องการที่จะเพิ่มที่เพิ่ม ip ปลอมเป็นที่อยู่ที่สองดูเหมือนความคิดที่น่ากลัว
Reaces

1
@Pierier คุณจะได้รับ load balance จากการใช้ unicast หลายที่อยู่ ปัญหาคือเวลาแฝงลูกค้าไม่รู้ว่า IP ใดอยู่ใกล้และไกล มันไม่สามารถปรับขนาดได้ คุณจะใช้เซิร์ฟเวอร์ได้ประมาณ 5 เครื่องเท่านั้นหากคุณต้องการให้แถบกาว A และ AAAA มีขนาด 512 ไบต์ การรวมหนึ่ง anycast และ unicast หลายรายการเป็นปัญหาสำหรับการทำ load balance เนื่องจากคุณมีแนวโน้มที่จะรับภาระที่อยู่ unicast มากกว่าที่อยู่ anycast
kasperd

4

แนวทางปฏิบัติที่ดีที่สุดคือการใช้ที่อยู่อย่างน้อยสองที่อยู่จากคำนำหน้าที่แตกต่างกันและให้ชื่อพวกเขาภายใต้สอง TLD ที่แตกต่างกัน ที่อยู่ทั้งสองนั้นสามารถส่งสัญญาณได้หากต้องการ การมีที่อยู่ IP เพียงแห่งเดียวจะทำให้เกิดความล้มเหลวได้ หากการกำหนดเส้นทางไปยังที่อยู่นั้นไม่ทำงาน (ข้อผิดพลาดของการกำหนดค่าอินสแตนซ์ anycast ไม่ทำงานอย่างถูกต้องคำนำหน้าถูก hijacked ฯลฯ ) จากนั้นโดเมนทั้งหมดของคุณจะไม่สามารถเข้าถึงได้

ที่อยู่ใด ๆ ที่ออกอากาศใด ๆ จะต้อง/24มี/48คำนำหน้าอย่างน้อยIPv4 หรือIPv6 เพื่อกำหนดเส้นทางใน BGP คำนำหน้าเล็ก (ยาว) มักจะไม่ได้รับการยอมรับในตารางเส้นทางทั่วโลกในหลาย ๆ ที่

ไม่เคยใส่ที่อยู่ IP ปลอมเป็นเซิร์ฟเวอร์ DNS มันจะทำให้เกิดความล่าช้าอย่างรุนแรงสำหรับตัวแก้ปัญหา


ยิ่งไปกว่านั้นที่อยู่ IP "ปลอม" เป็นที่อยู่ของบุคคลอื่น พวกเขาจะได้รับข้อความค้นหา หากพวกเขารู้สึกรำคาญกับการรับส่งข้อมูลทั้งหมดที่พวกเขาสามารถส่งคำตอบด้วย TTL สูงเพื่อให้มันหายไปครู่หนึ่ง
kasperd

@kasperd แล้วที่อยู่ IP สำรองพิเศษที่เป็นของใคร
Pacerier

1
@Pacerier การใช้พื้นที่ที่อยู่ RFC 1918, 4193 หรือ 6598 จะ จำกัด อันตราย แต่มันก็ยังคงทำให้ความละเอียดที่จะชะลอตัวลงหรือแม้กระทั่งความล้มเหลว
kasperd

3

RFC 1034 ระบุว่าคุณต้องการเซิร์ฟเวอร์ DNS สองตัวเท่านั้น นี่ไม่ใช่ข้อกำหนดที่จำเป็น แต่เป็นข้อเสนอแนะให้ทำตามที่คุณต้องการ ไม่ว่าคุณต้องการ HA เซิร์ฟเวอร์ DNS 2 เครื่องของคุณสามารถกำหนด IP เดียวกันโดยใช้ anycast และสิ่งเดียวที่ผู้ใช้ปลายทางของคุณจะสังเกตเห็นเมื่อเซิร์ฟเวอร์ DNS หนึ่งล้มเหลวนั่นคือการขาดการเชื่อมต่อชั่วคราวเนื่องจากการเชื่อมต่อเครือข่าย

ดังนั้นโดยสรุปใช่ใช้ anycast เพียงพอที่จะเป็นไปตาม RFC 1034


อืมถ้าที่อยู่ IP เดียวก็เพียงพอแล้วทำไม Google จึงเสนอที่อยู่สองแห่ง ( 8.8.8.8และ8.8.4.4) สำหรับเซิร์ฟเวอร์ DNS ของพวกเขา พวกเขามีอยู่แล้วในสถานที่ anycast ดังนั้นทำไมไม่เพียงแค่นำเสนอหนึ่งอยู่8.8.8.8?
Pacerier

1
ที่ฉันเดาว่าจะไม่ขัดขวางการเชื่อมต่อระหว่างการบรรจบกันของเครือข่าย? เพราะพวกเขาเป็นผู้เล่นระดับโลกและต้องการให้แน่ใจว่าพวกเขามีขอบเขตที่กว้างที่สุดเท่าที่จะทำได้เพื่อกำจัดจุดที่อาจเกิดความล้มเหลวใด ๆ ฉันไม่แน่ใจทั้งหมด แต่ฉันรู้ว่าเราทุกคนไม่สามารถเป็น google :)
Reaces
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.