การปรับใช้ไฟล์ไปยังเซิร์ฟเวอร์หลายเครื่อง


11

เรามีพื้นที่เก็บข้อมูลส่วนกลางของไฟล์ในการพูดเซิร์ฟเวอร์ /srv/www1 จากนั้นเรามีเซิร์ฟเวอร์จำนวน N เช่นกัน เราต้องการให้เซิร์ฟเวอร์ -1 สามารถปรับใช้ไฟล์ใน/srv/wwwเซิร์ฟเวอร์ทั้งหมดได้อย่างรวดเร็วและมีประสิทธิภาพที่สุด

มีบางอย่างเช่น rsync แต่แทนที่จะระบุเป้าหมายเดียวโดยระบุคลัสเตอร์ (เซิร์ฟเวอร์ N) ของเป้าหมายหรือไม่

ฉันคิดว่าgitอาจใช้งานได้ แต่เราสามารถระบุรีโมตหลายตัวเพื่อผลักดันได้หรือไม่

อะไรคือทางออกที่ดีที่สุดโดยสมมติว่าเซิร์ฟเวอร์ N อาจมีจำนวนหลายร้อย


2
ฉันคิดว่าระบบไฟล์เครือข่ายเป็นไปไม่ได้?
cjc

stackoverflow.com/questions/849308/…สำหรับเคล็ดลับคอมไพล์เพื่อผลักดันไปยังรีโมตหลายตัว ไม่แน่ใจเกี่ยวกับหลายร้อย แต่
cjc

คำตอบ:


14

ทั้งTwitterและFacebookเริ่มใช้ bittorrent ในกลุ่มเพื่อแจกจ่ายรหัสใหม่ การทำเช่นนี้พวกเขาสามารถส่งรหัสไปยังเซิร์ฟเวอร์นับหมื่นในเวลาอันสั้นเมื่อเทียบกับวิธีการปรับใช้แบบรวมศูนย์ในโรงเรียนเก่า

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


1
พวกเขาใช้ bittorrent อย่างไร
Dragos

3
ดูบทความที่ฉันเชื่อมโยง
EEAA

@EEAA ลิงก์ twitter ใช้งานไม่ได้
gprasant

@gprasant แก้ไขแล้ว
EEAA

7

ฉันไม่แนะนำ git สำหรับตาชั่งที่คุณกำลังพูดถึง มันสามารถทำงานได้ แต่ฉันเห็นการขาดดุลโดยใช้โมเดลนั้นในการดึง

มีสองสิ่งที่กำหนดว่าจะทำอย่างไรดีที่สุด:

  1. มีการแบ่งปัน repo ขนาดใหญ่เท่าใด
  2. มันต้องมาบรรจบกันเร็วแค่ไหน

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

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

สำหรับทั้งสองข้อข้างต้นอาจเป็นความคิดที่ดีที่จะวางที่เก็บส่วนกลางในลิงค์ 10GbE สำหรับปริมาณงานสูงสุด

อีกทางเลือกหนึ่งคือ push-rsync ซึ่งจะเรียกใช้จาก repo ส่วนกลางเพื่อพุชอัปเดตไปยังเซิร์ฟเวอร์ของคุณ มันจะไม่มาบรรจบกันอย่างรวดเร็วเหมือนอย่างใดอย่างหนึ่งข้างต้น แต่จะเป็นมิตรกับแบนด์วิธภายในของคุณมากขึ้น ใช้โฮสต์หลายรายการที่ผลักไปสู่ช่วงที่แบ่งออกเพื่อความเร็วที่ดีกว่า



-1

[เครือ] ใช้ Kwatee ( http://www.kwatee.net ) คุณสามารถปรับใช้บนเซิร์ฟเวอร์ได้มากเท่าที่คุณต้องการ การปรับใช้เป็นแบบเพิ่มขึ้น (ส่งเฉพาะไฟล์ที่ถูกแก้ไขเท่านั้น) และสามารถขนานกันได้ดังนั้นจึงรวดเร็วมาก คุณยังสามารถกำหนดค่า Kwatee ให้เป็น load-balancer เพื่อให้เซิร์ฟเวอร์ถูกลบออกจาก LB ในระหว่างการอัพเดตและจากนั้นใส่ใหม่ มีอินเทอร์เฟซแบบกราฟิกเพื่อกำหนดค่าพารามิเตอร์การปรับใช้จากนั้นการปรับใช้สามารถเรียกใช้ด้วยตนเองผ่าน GUI หรืออัตโนมัติโดยใช้คำสั่งหลาม


สนใจอธิบายการลงคะแนนเสียงไหม?
แม็

1
การเข้าร่วมไซต์กับแมงดาผลิตภัณฑ์ของตัวเองมักจะทำให้เกิดการลงคะแนนที่นี่
ceejayoz

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