ข้อกำหนด: มีโซลูชันที่ใช้งานได้จริงที่ทำงานกับคลาวด์หรือสภาพแวดล้อมทุกประเภทที่ไม่สามารถเข้าถึงตัวโหลดบาลานซ์ฮาร์ดแวร์โปรโตคอล BGP และทุกสิ่งนั้นได้
ไม่ทราบหมายเลขคำขอรายได้ของแอปพลิเคชัน แต่ควรสูงพอที่จะรองรับความคาดหวังในการโหลดที่เพิ่มขึ้นโดยไม่ต้องกลัว
ลองหาแอปพลิเคชั่นที่มีลักษณะการโหลดคล้ายกันเช่นที่เก็บบันทึกและแอปค้นหา ผมพบว่าหนึ่ง
พวกเขาต้องการอะไร:
- สมดุลภาระให้กับนักสะสม
- ให้การยอมรับข้อผิดพลาดทำให้เราสามารถนำเข้าข้อมูลต่อไปได้หากหนึ่งในนักสะสมเสียชีวิตหรือประสบปัญหา
- ปรับขนาดตามแนวนอนพร้อมกับการเติบโตของปริมาณบันทึก
พวกเขาลองทำอะไรและเรียนรู้เกี่ยวกับ ELB:
- ใช้งานไม่ได้ตามที่คาดไว้
- ปัญหาความล่าช้าเนื่องจากโหลดเพิ่มขึ้น
- สิ่งอำนวยความสะดวกการตรวจสอบไม่เพียงพอ
- มีข้อ จำกัด มากเกินไป (เปิดพอร์ตและหมายเลขโปรโตคอล)
ทำไมพวกเขาถึงเลือกใช้ Route53:
- "Round robin เป็นการปรับสมดุลภาระขั้นพื้นฐาน แต่มันทำงานได้ดีสำหรับเราจากจุดยืนด้านประสิทธิภาพ"
- "เราใช้ประโยชน์จากการตรวจสุขภาพที่ล้มเหลวของเส้นทาง 53"
- "หากมีปัญหาเกี่ยวกับตัวสะสมเส้นทาง 53 จะนำออกจากบริการโดยอัตโนมัติลูกค้าของเราจะไม่เห็นผลกระทบใด ๆ "
- ไม่ต้องอุ่นเครื่องล่วงหน้ากับถนนหมายเลข 53
เส้นทาง 53 กลายเป็นวิธีที่ดีที่สุดสำหรับ Loggly เพื่อใช้ประโยชน์จากนักสะสมที่มีประสิทธิภาพสูงของเราเนื่องจากปริมาณการบันทึกจำนวนมากการเปลี่ยนแปลงที่คาดเดาไม่ได้และการเติบโตอย่างต่อเนื่องในธุรกิจของเรา มันสอดคล้องกับจุดประสงค์หลักของนักสะสม: เพื่อรวบรวมข้อมูลที่ความเร็วของสายเครือข่ายโดยไม่มีการสูญเสียเป็นศูนย์และช่วยให้เราได้รับประโยชน์จากความยืดหยุ่นของบริการ AWS ทั้งหมดที่เราใช้ที่ Loggly
ตัวอย่างเฉพาะนั้นแสดงให้เห็นว่าในบางสถานการณ์ (ตัวรวบรวมบันทึกการบริการโฆษณาหรือสิ่งที่คล้ายกัน) ตัวโหลดบาลานซ์นั้นซ้ำซ้อนและ "วิธีแก้ปัญหาการตรวจสอบรอบการตรวจสุขภาพ DNS" ทำงานได้ดีมาก
มาดูกันว่า AWS พูดว่า DNS ขัดข้องอะไร
ด้วย DNS Failover, Route 53 สามารถตรวจพบการหยุดทำงานของเว็บไซต์ของคุณและเปลี่ยนเส้นทางผู้ใช้ปลายทางไปยังตำแหน่งสำรองหรือสำรองที่คุณระบุ Route 53 DNS Failover อาศัยการตรวจสุขภาพเป็นประจำทำให้การร้องขอทางอินเทอร์เน็ตไปยังจุดสิ้นสุดแอปพลิเคชันของคุณจากหลาย ๆ แห่งทั่วโลกเพื่อตรวจสอบว่าปลายทางแต่ละจุดของแอปพลิเคชันของคุณขึ้นหรือลง
เทคนิคดังกล่าวยังทำให้ ELB (ไม่จำเป็นสำหรับการบันทึก) ที่แข็งแกร่งยิ่งขึ้นอีกครั้งซึ่งเป็นไปตามการตรวจสุขภาพ RR +:
Route 53 DNS Failover จัดการสถานการณ์ความล้มเหลวทั้งหมดโดยรวมกับ ELB ที่อยู่เบื้องหลัง เมื่อเปิดใช้งานแล้วเส้นทาง 53 จะกำหนดค่าและจัดการการตรวจสอบสุขภาพโดยอัตโนมัติสำหรับแต่ละโหนด ELB
เรามาดูกันว่ามันทำงานอย่างไรเบื้องหลัง คำถามที่ชัดเจนคือวิธีจัดการกับการแคช DNS:
อย่างไรก็ตามการแคช DNS ยังคงเป็นปัญหาที่นี่ (ดูโพสต์ก่อนหน้าของเราที่มีปัญหา "หางยาว") หาก TTL ไม่ได้รับการเคารพจากเลเยอร์ทั้งหมดระหว่างไคลเอนต์ของคุณและถนนหมายเลข 53 จากนั้นคุณสามารถใช้เทคนิค ส่งคำขอไปยังโดเมนที่ไม่ซ้ำ
("http://<unique-id>.<your-domain>")
และกำหนดทรัพยากรไวด์การ์ด
Record "*.<your-domain>" to match it.
Algolia แนะนำ "กลยุทธ์การลองส่งไคลเอ็นต์" ซึ่งใช้งานได้ดีหากลูกค้าของคุณ (JS ในกรณีของคุณ) สามารถจัดการสิ่งต่อไปนี้:
เราลงเอยด้วยการใช้กลยุทธ์การลองใหม่พื้นฐานในลูกค้า API ของเรา แต่ละไคลเอนต์ API ได้รับการพัฒนาเพื่อให้สามารถเข้าถึงเครื่องที่แตกต่างกันสามเครื่อง ระเบียน DNS ที่แตกต่างกันสามรายการแสดงถึงผู้ใช้แต่ละราย: USERIDID-1.algolia.io, USERID-2.algolia.io และ USERID-3.algolia.io การใช้งานครั้งแรกของเราคือการสุ่มเลือกหนึ่งในเรกคอร์ดแล้วลองอีกครั้งในกรณีที่ล้มเหลว