การฟังฮาร์ดแวร์บนที่อยู่ IP ของ Facebook หรือ Wikipedia คืออะไร


32

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

ส่วนที่ทำให้ฉันสับสนคือท้ายที่สุด DNS จะจับคู่โดเมนทั้งหมดกับที่อยู่ IP เดียวหรือที่อยู่ IP จำนวนหนึ่งในกรณีของ round-robin DNS

ตัวอย่างเช่น wikipedia.org มีระเบียน DNS A ประเภทเดียวเท่านั้น ดังนั้นผู้คนจากทั่วทุกมุมโลกที่เยี่ยมชม Wikipedia ต้องส่งคำขอไปยังที่อยู่ IP เดียวที่ระบุใน DNS

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

แก้ไข 1:ขอบคุณสำหรับคำตอบทั้งหมด! Anycast ดูเหมือนจะเป็นคำตอบที่เป็นไปได้ ... ไม่มีใครรู้วิธีตรวจสอบว่าที่อยู่ IP ที่เฉพาะเจาะจงใด ๆ ที่ถูกกำหนดเส้นทางออกอากาศเพื่อให้ฉันสามารถตรวจสอบว่านี่เป็นเคล็ดลับที่ใช้ในการปฏิบัติจริงโดยเว็บไซต์ขนาดใหญ่

แก้ไข 2:หลังจากอ่านเพิ่มเติมในหัวข้อปรากฏว่า anycast ไม่ได้ใช้สำหรับเนื้อหาเว็บแบบไดนามิก Anycast มักใช้สำหรับ UDP (เช่นการค้นหา DNS) หรือบางครั้งสำหรับเนื้อหาแบบคงที่

สิ่งหนึ่งที่น่าสนใจคือ Facebook ใช้ profile.ak.fbcdn.net เพื่อโฮสต์เนื้อหาคงที่เช่นสไตล์ชีทและไลบรารีจาวาสคริปต์ ทุกครั้งที่ฉัน ping ชื่อนี้ฉันจะได้รับการตอบกลับจากที่อยู่ IP อื่น อย่างไรก็ตามฉันไม่สามารถบอกได้ว่านี่เป็นการกระทำใด ๆ หรือเป็นเทคนิคที่แตกต่างอย่างสิ้นเชิง

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


เป็นคำถามที่ดีมากคนส่วนใหญ่ไม่เข้าใจ ฉันหวังว่าบางคนจะได้คำตอบพร้อมรายละเอียดบางอย่าง อาจประมาณ 50 ล้านดอลลาร์ควอนตัมคอมพิวเตอร์เชิงควอนตัมของโปรเซสเซอร์
OliverS

คำตอบ:


9

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

จุดเริ่มต้นที่ดีสำหรับความอยากรู้ของคุณในการค้นหาว่าไซต์ขนาดใหญ่บางแห่งมีความสามารถในการปรับขนาดสูง - เริ่มต้นที่นี่และมีความยืดหยุ่นสูงในสถาปัตยกรรม Wikimedia , FacebookและTwitterเป็นตัวอย่าง

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

สำหรับคำอธิบายที่ดีในหัวข้อนี้รวมถึงการเปรียบเทียบของฮาร์ดแวร์และซอฟแวร์โหลด balancers / ผู้รับมอบฉันทะและวิธีการเปรียบเทียบกับ DNS Round Robin ที่ได้อ่านของโหลดโปรแกรม Balancing เว็บ


ขอบคุณ Sim ฉันอ่านบทความเหล่านี้ส่วนใหญ่ก่อนถามคำถามของฉัน แต่ฉันไม่พบคำตอบที่เป็นรูปธรรม ดังนั้นจริงๆแล้วมันมีฮาร์ดแวร์บาลานเซอร์โหลดเดียว (หรือเครื่องเดียวที่รันซอฟต์แวร์โหลดบาลานซ์) ที่มีการเข้าชมทุกครั้งที่มีคนดูหน้าวิกิพีเดีย หรือมีเคล็ดลับอื่นเพื่อหลีกเลี่ยงปัญหาคอขวดหรือไม่
Igor Ostrovsky

ฉันไม่แน่ใจว่า Wikipedia กำลังทำอะไร แต่บทความนี้พูดถึงพวกเขาในปี 2008 โดยใช้ Squid reverse proxy servers servers.sun.com/WebScale/entry/scaling_wikipedia_with_lamp_7
ซิม

2
นอกจากนี้ยังมีที่อยู่ใด ๆ ที่ออกอากาศซึ่งคุณ ping หนึ่ง IP- ที่อยู่ แต่พวกเขาจะกระจาย (สุ่ม \ โดยพลการ \ เจตนาโดยเจตนา) ไปยังหนึ่งในช่วงของปลายทาง "ของจริง" ฉันไม่แน่ใจว่า Wikipedia \ Google ใช้สิ่งนี้หรือไม่ แต่ฉันค่อนข้างแน่ใจว่าเซิร์ฟเวอร์ DNS บางตัวทำ การส่ง Ping ไปที่ Wikipedia ของฉันตรงกับของคุณ (และฉันอยู่ในไอร์แลนด์) ดังนั้นฉันจึงสงสัยว่าอาจใช้สิ่งนั้นได้
Helvick

1
Anycast ใช้ในการสืบค้น DNS เพื่อให้ได้ที่อยู่ IP ใกล้คุณที่สุดจากนั้นตัวโหลดบาลานซ์จะฟังที่อยู่ IP นั้นและกระจายการร้องขอไปยังเซิร์ฟเวอร์สำรอง
Andy Shellam

2
วิกิพีเดียยังเกิดขึ้นกับการใช้แบ็กเอนด์ทางภูมิศาสตร์ของ pdns สำหรับการทำโหลดบาลานซ์จำนวนมาก ข้อมูลเพิ่มเติมได้ที่นี่: wikitech.wikimedia.org/view/PowerDNSและที่นี่: wikitech.wikimedia.org/view/DNS
faultyserver

3

Anycast สามารถใช้สำหรับการเชื่อมต่อ TCP โดยสมมติว่าการเชื่อมต่อมีอายุสั้นดังนั้นเส้นทางจะไม่เปลี่ยนแปลงในช่วงอายุการเชื่อมต่อ นี่เป็นข้อสันนิษฐานที่ดีกับการเชื่อมต่อ HTTP (โดยเฉพาะถ้าการเชื่อมต่อ: Keep-Alive ถูกเก็บไว้ในการหมดเวลาสั้น ๆ หรือปิดใช้งาน)

CDNs จำนวนมาก (CacheFly, MaxCDN และอื่น ๆ อีกมากมาย) ใช้การออกอากาศใด ๆ สำหรับการเชื่อมต่อ TCP (HTTP) และไม่ใช่แค่ DNS เมื่อคุณแก้ไขชื่อโฮสต์ใน CacheFly คุณจะได้รับที่อยู่ IP เดียวกันทั่วโลกมันจะถูกส่งไปยังกลุ่ม CacheFly "ที่ใกล้เคียงที่สุด" "ใกล้เคียงที่สุด" ที่นี่จะเป็นความยาวเส้นทาง BGP และตัวชี้วัดซึ่งโดยปกติจะเป็นวิธีที่ดีกว่าในการวัดเวลาแฝงของเครือข่ายกว่าระยะทางทางภูมิศาสตร์ที่เรียบง่าย

ในกรณีของวิกิพีเดียโดยเฉพาะ: http://www.datacenterknowledge.com/archives/2008/06/24/a-look-inside-wikipedias-infrastructure/


3

วิธีที่ง่ายที่สุดในการตรวจสอบว่าที่อยู่ IP กำลังใช้ Anycast คือทำการติดตามจากตำแหน่งอื่น คุณสามารถลองทำสิ่งต่อไปนี้: ไปที่ traceroute.org เลือกสถานที่แล้วลองทำ traceroute ไปยังที่อยู่ IP 8.8.8.8 (Google Public DNS ที่ใช้ anycast) คุณควรจะเห็นว่า traceroute จากเซิร์ฟเวอร์ในออสเตรเลีย 8.8.8.8 อยู่ในออสเตรเลีย

แทนที่จะพยายาม ping ลองทำการค้นหาชื่อโฮสต์: เช่น: http://network-tools.com/default.asp?prog=dnsrec&host=profile.ak.fbcdn.net

คุณจะเห็นรายการที่อยู่ IP หลังชื่อนั้น ที่อยู่ IP เหล่านี้จะถูกใช้ในลักษณะวนรอบเมื่อคุณ ping เซิร์ฟเวอร์


ที่เกี่ยวข้อง: serverfault.com/q/178319/87017
Pacerier

2

อิกอร์คำถามของคุณยอดเยี่ยมและเช่นเดียวกับคำถามที่ไร้เดียงสามากมายมีคำตอบมากมายมากมายในรายละเอียดที่แตกต่างกัน

ฮาร์ดแวร์คือเว็บเซิร์ฟเวอร์ เห็นได้ชัดว่า ;-)

ชิ้นส่วนของฮาร์ดแวร์จริง ๆ แล้วเป็นกลุ่มของตัวโหลดบาลานซ์ซึ่งทั้งหมดได้รับการกำหนดค่าให้ดึงจากที่เก็บข้อมูลที่ใช้ร่วมกันดังนั้นทั้งหมดจึงถูกกำหนดค่าเหมือนกันด้วยวัสดุที่เหมือนกัน

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


1

Google เปิดตัวบิตบนสถาปัตยกรรมฮาร์ดแวร์พื้นบ้านปีที่ผ่านมาและมันก็ทำให้การอ่านที่ดี


นี่คือการอ่านที่น่าสนใจ แต่ไม่ตอบคำถามเฉพาะของฉัน ฉันอยากรู้ว่าฮาร์ดแวร์ชิ้นส่วนใดบ้างที่รับฟังจากที่อยู่ IP สาธารณะของ Google ทั้งสี่และแจกจ่ายภาระให้กับเซิร์ฟเวอร์หลายพันเครื่อง
Igor Ostrovsky

1

ที่อยู่ IP เดียวไม่ได้แปลว่าเซิร์ฟเวอร์เดียว: http://en.wikipedia.org/wiki/Anycast


1
Anycast เป็นการตั้งค่าที่ยากต่อการบำรุงรักษาหากคุณมีการซิงโครไนซ์ส่วนกลาง (เช่น Facebook) มันใช้งานได้ดีมากสำหรับเซิร์ฟเวอร์ DNS ที่อินสแตนซ์ไม่ต้องการการสื่อสารมากหรือเว็บเซิร์ฟเวอร์ที่มีเนื้อหาคงที่

1
คุณอยู่ในที่ IP เดียวไม่ได้หมายความว่าเซิร์ฟเวอร์เดียว แต่ anycast จะใช้ในการค้นหา DNS เมื่อคุณไม่ได้ใส่ใจใครตอบกลับตราบใดที่คุณได้รับหนึ่งและดังนั้นจึงเป็นประโยชน์กับโปรโตคอล UDP เท่านั้น DNS ใช้ ด้วย TCP (ใช้ใน HTTP) คุณต้องแน่ใจว่าเซิร์ฟเวอร์ที่ตอบสนองนั้นเป็นเซิร์ฟเวอร์ที่คุณขอมาโดยเฉพาะ
Andy Shellam

@AndyShellam บทความen.wikipedia.org/wiki/Anycast#Details nanog.org/meetings/nanog37/presentations/matt.levine.pdfดูเหมือนจะไม่เห็นด้วยกับคุณ ...
Pacerier

1

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

"กลุ่ม" เหล่านั้นในดาต้าเซ็นเตอร์นี้ประกอบด้วยเครื่องที่แตกต่างกันหลายตัว (เซิร์ฟเวอร์ DB, เว็บเซิร์ฟเวอร์, ตัวโหลดบาลานซ์ ฯลฯ ) ขึ้นอยู่กับสิ่งที่คุณให้กับเว็บไซต์ของคุณคุณอาจมีเซิร์ฟเวอร์บางตัวสำหรับเนื้อหาแบบคงที่เป็นต้น


1

เว็บไซต์ Mmassive เช่น Facebook หรือ Wikipedia พึ่งพาเทคโนโลยีที่แตกต่างกันหลายประการเพื่อให้เกิดความยืดหยุ่น

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

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

ตัวโหลดบาลานซ์ที่ใช้สำหรับไซต์ขนาดใหญ่ไม่ใช่อุปกรณ์ราคาแพงขนาดใหญ่พวกเขาเป็นเซิร์ฟเวอร์สินค้าโภคภัณฑ์ที่ใช้งาน LVS http://www.linuxvirtualserver.org/


0

เว็บไซต์ขนาดใหญ่อย่าง Google ก็เกือบจะออกแบบฮาร์ดแวร์ของตัวเอง ไซต์ขนาดใหญ่อาจใช้สวิตช์หลายชั้นเพื่อโหลดการเชื่อมต่อสมดุลไปยังเซิร์ฟเวอร์จริงหลายเครื่อง http://en.wikipedia.org/wiki/Multilayer_switch

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.