Score:0

มีเทคนิคอื่นใดในการกระจายทราฟฟิกระหว่างโหลดบาลานเซอร์นอกเหนือจาก DNS หรือไม่

ธง it

ก่อนอื่นฉันได้อ่านสิ่งนี้แล้ว: ความพร้อมใช้งานสูงของโหลดบาลานเซอร์เอง

แต่คำถามนี้ไม่ได้ไปไกลพอ

ดูเหมือนว่า DNS load balancing คือ เท่านั้น วิธีกระจายการรับส่งข้อมูลระหว่างโหลดบาลานเซอร์ (นอกเหนือจากการใช้โหลดบาลานเซอร์ ซึ่งเห็นได้ชัดว่าไม่ได้ทำอะไรเพื่อกระจายโหลดหากท้ายที่สุดแล้วต้องผ่านเซิร์ฟเวอร์เดียว)

ดูเหมือนว่าจะเป็นการใช้โปรโตคอล DNS ในทางที่ผิด ความเข้าใจของฉันคือ DNS ได้รับการออกแบบมาสำหรับการจำแนกชื่อ ไม่ใช่การจัดสรรภาระงาน จะทำอย่างไรถ้าฉันต้องการอัลกอริธึมการทำโหลดบาลานซ์ที่ซับซ้อนมากขึ้นนอกเหนือจากการปัดเศษ นี่เป็นวิธีเดียวในการกระจายทราฟฟิกระหว่างโหลดบาลานเซอร์หรือไม่ ถ้าไม่ใช่วิธีเดียว จะมีวิธีอื่นอีกไหม

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

Patrick Mevzek avatar
cn flag
คำถามที่เชื่อมโยงนี้ควรเป็นที่สนใจของคุณเช่นกัน: https://serverfault.com/questions/774385/do-clients-typically-implement-failover-load-balancing-on-multiple-a-records?rq=1
Score:3
ธง cn

ความเข้าใจของฉันคือ DNS ได้รับการออกแบบมาสำหรับการจำแนกชื่อ ไม่ใช่การจัดสรรภาระงาน

สำหรับทั้งสองอย่าง เนื่องจาก (เกือบ) บันทึกทั้งหมดสามารถตั้งค่าได้ ดังนั้นสำหรับคำถามที่กำหนด ลูกค้าสามารถรับได้หลายคำตอบ จากนั้นจึงมีอิสระที่จะเลือกรายการใดก็ได้ที่ต้องการ

ซึ่งเป็นเหตุผลว่าทำไมรูปแบบที่พบบ่อยจึงเป็นการวนซ้ำระหว่างการตอบกลับ เพื่อให้ลูกค้าเลือกรายการ "แรก" แต่จะแตกต่างกันในแต่ละครั้ง

แน่นอน ลูกค้าสามารถใช้อัลกอริทึมที่ชาญฉลาดขึ้นได้ โดยเฉพาะอย่างยิ่งสำหรับการเปลี่ยนไปใช้ IPv6 ด้วย และ AAAA บันทึก ดู RFC 8305 "Happy Eyeballs เวอร์ชัน 2: การเชื่อมต่อที่ดีขึ้นโดยใช้การทำงานพร้อมกัน" แต่นี่ไม่ใช่ยอดโหลดอีกต่อไป

ดังนั้นทุกอย่างจึงขึ้นอยู่กับจำนวน "ความฉลาด" ที่มีอยู่ในฝั่งไคลเอ็นต์

เอส.อาร์.วี เร็กคอร์ดอนุญาตให้เข้ารหัสทั้งลำดับความสำคัญ (ล้มเหลว) และน้ำหนัก (โหลดบาลานซ์) สำหรับโปรโตคอลใดๆ ที่อาจผ่าน TCP หรือ UDP และช่วยให้ไม่ต้องฮาร์ดโค้ดหมายเลขพอร์ตอีกต่อไป น่าเศร้าที่เบราว์เซอร์ไม่เคยใช้งาน การทำซ้ำที่ใหม่กว่าคือ SVCB และ HTTPS บันทึกที่อนุญาตสิ่งเดียวกัน

โปรดสังเกตสิ่งนี้ในฉบับร่างปัจจุบัน:

บันทึก SRV ระบุ "น้ำหนัก" สำหรับการปรับสมดุลโหลดแบบสุ่มที่ไม่สมดุล SVCB รองรับเฉพาะโหลดบาลานซ์แบบสุ่มที่สมดุลเท่านั้น แม้ว่าจะสามารถเพิ่มน้ำหนักผ่าน SvcParam ในอนาคตได้

กำลังติดตาม:

จะทำอย่างไรถ้าฉันต้องการอัลกอริธึมการทำโหลดบาลานซ์ที่ซับซ้อนมากขึ้นนอกเหนือจากการปัดเศษ

วันนี้หมายความว่า เอส.อาร์.วี บันทึกและข้อมูลข่าวกรองบางอย่างในแอปพลิเคชัน (ฝั่งไคลเอ็นต์) หรือเนมเซิร์ฟเวอร์ที่ฉลาดขึ้นซึ่งเปลี่ยนการตอบกลับตามปัจจัยไดนามิกภายนอก (เช่น CDN ทำอะไร)

ปัญหาพื้นฐานที่ต้องเผชิญกับการทำโหลดบาลานซ์ที่ระดับ DNS นั้นได้รับการปรับแต่งให้เหมาะกับ TTL และเนื่องจากตัวแก้ไขบางตัวจะไม่ปฏิบัติตามค่าที่น้อยเกินไปสำหรับมัน

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

Score:3
ธง cn

ไม่ DNS ไม่ใช่วิธีเดียวในการสลับระหว่างโหลดบาลานเซอร์

พิจารณาสิ่งนี้ การออกแบบโหลดบาลานเซอร์แบบหลายชั้น. ปรับขนาดได้และยืดหยุ่น

แผนภาพห้องปฏิบัติการสามชั้น

  • ระดับเลเยอร์ 7 มีหลายอินสแตนซ์ที่ให้แอปพลิเคชันรับรู้พร็อกซีไปยังแบ็กเอนด์ ยุติการเชื่อมต่อ TCP และอาจเป็น TLS ตัวอย่างเช่น HAProxy
  • เลเยอร์ 4 อยู่ข้างหน้าซึ่งกำหนดเส้นทางแพ็กเก็ตอย่างสม่ำเสมอ รักษาชีวิตด้วย IPVS เป็นต้น สามารถไร้สัญชาติได้ด้วยอัลกอริธึมการแฮชที่สอดคล้องกันอย่างเหมาะสม
  • เราเตอร์ ECMP จัดเตรียมเส้นทางที่ซ้ำซ้อนและการปรับขนาดลิงก์ในแนวนอน
  • และสุดท้าย DNS เพื่อให้ผู้ใช้สามารถค้นหาที่อยู่บริการได้

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

อย่างไรก็ตาม DNS ถูกแคชไว้มาก ดังนั้นจึงเปลี่ยนแปลงได้ช้า พฤติกรรมไคลเอนต์ที่ไม่สอดคล้องกันที่เล่นโวหารยังทำให้ DNS round-robin ไม่สามารถใช้งานได้ดังนั้น DNS อาจถูกจำกัดให้ค้นหาประตูหน้า ซึ่งเป็นพื้นที่ที่ถูกต้องซึ่งเป็นที่ตั้งของโฮสต์ตัวจัดสรรภาระงาน การเปิดใช้งานสภาพแวดล้อมการกู้คืนจากความเสียหายอาจก่อกวน แต่การเปลี่ยนแปลง DNS สามารถตัดผ่านไปยังโครงสร้างพื้นฐานที่แยกจากกันโดยสิ้นเชิง

Score:1
ธง cn
Bob

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

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

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

  • เนมเซิร์ฟเวอร์หลายตัวมีการใช้งานเพื่อให้ชุดข้อมูล DNS ที่แตกต่างกัน ซึ่งมักจะเลือกโดยที่อยู่ต้นทางของคำขอ DNS

    • กรณีการใช้งานเล็กน้อยที่เรียกว่ามักจะเป็น "DNS แยกขอบฟ้า" ที่ซึ่งคำขอจากลูกค้าในวิทยาเขตหรือภายในเครือข่ายองค์กรจะทำให้เกิดการตอบสนองที่แตกต่างจากที่อื่น
    • กรณีการใช้งานขั้นสูงจะเป็น "จีโอดีเอ็นเอส" หรือคล้ายกัน. ตัวอย่างเช่น เว็บไซต์อาจมีเซิร์ฟเวอร์ 2 เครื่อง (หรือคลัสเตอร์ที่อยู่หลัง IP ของตัวโหลดบาลานเซอร์) เครื่องหนึ่งอยู่ในฝรั่งเศสและอีกเครื่องหนึ่งอยู่ในสหรัฐอเมริกาด้วย GeoDNS คุณสามารถสร้างระเบียน DNS ซึ่งลูกค้าจากยุโรปจะได้รับที่อยู่ IP ของเซิร์ฟเวอร์ฝรั่งเศส และลูกค้าจากสหรัฐอเมริกาจะได้รับที่อยู่อเมริกัน

แต่มีแนวทางอื่นๆ อีกมากมายนอกเหนือจากโซลูชันที่ใช้ DNS

  • "Anycast" โดยที่ที่อยู่ IP ปลายทางเดียวถูกแบ่งปันโดยเซิร์ฟเวอร์/ตัวโหลดบาลานเซอร์ในหลายตำแหน่ง และเราเตอร์ส่งแพ็กเก็ตโดยตรงที่ส่งไปยังปลายทางนี้ไปยังตำแหน่งที่ใกล้ผู้ส่งที่สุด

  • ตรรกะในตัวในแอปพลิเคชันที่มีการค้นหาบริการและแทนที่เมื่อเกิดข้อผิดพลาด

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา