ต้นไม้ไฟล์ขนาดใหญ่ฉันหมายถึงไฟล์ประมาณ 200k และเพิ่มขึ้นตลอดเวลา แม้ว่าจะมีการเปลี่ยนแปลงจำนวนไฟล์ค่อนข้างน้อยในเวลาใดก็ตาม
โดยสองทิศทางฉันหมายความว่าการเปลี่ยนแปลงอาจเกิดขึ้นบนเซิร์ฟเวอร์ใดเซิร์ฟเวอร์หนึ่งและจำเป็นต้องผลักดันไปยังเซิร์ฟเวอร์อื่นดังนั้น rsync จึงดูไม่เหมาะสม
โดยไกลฉันหมายความว่าเซิร์ฟเวอร์ทั้งคู่อยู่ในศูนย์ข้อมูล แต่อยู่ห่างจากกันทางภูมิศาสตร์ ขณะนี้มีเซิร์ฟเวอร์เพียง 2 เครื่องเท่านั้น แต่อาจขยายได้ตามเวลา
ตามเวลาจริงมันก็โอเคที่จะมีเวลาแฝงเล็กน้อยระหว่างการซิงค์ แต่การเรียกใช้ cron ทุก 1-2 นาทีดูเหมือนจะไม่ถูกต้องเนื่องจากไฟล์ขนาดเล็กมากอาจมีการเปลี่ยนแปลงในชั่วโมงใดก็ตาม
แก้ไข : นี่ทำงานบน VPS ดังนั้นฉันอาจถูก จำกัด ประเภทของระดับเคอร์เนลที่ฉันสามารถทำได้ ยิ่งไปกว่านั้น VPS นั้นไม่ได้อุดมไปด้วยทรัพยากรดังนั้นฉันจึงอายที่จะแก้ปัญหาที่ต้องใช้ RAM จำนวนมาก (เช่น Gluster?)
อะไรคือวิธีที่ "ยอมรับ" ที่ดีที่สุดในการทำสิ่งนี้? ดูเหมือนว่ามันจะเป็นความต้องการทั่วไป แต่ฉันยังไม่สามารถหาวิธีการที่ยอมรับกันโดยทั่วไปได้ซึ่งน่าแปลกใจ (ฉันกำลังมองหาความปลอดภัยของฝูง :)
ฉันเจอlsyncdเพื่อเรียกการซิงค์ที่ระดับการเปลี่ยนแปลงของระบบไฟล์ ดูเหมือนจะฉลาด แต่ไม่ใช่เรื่องธรรมดาและฉันก็สับสนเล็กน้อยกับวิธีการต่างๆของ lsyncd มีเพียงการใช้ lsyncd กับ rsync แต่ดูเหมือนว่านี่อาจจะเปราะบางสำหรับ bidirectionality เนื่องจาก rsync ไม่มีแนวคิดเกี่ยวกับหน่วยความจำ (เช่น - เพื่อทราบว่าไฟล์ที่ถูกลบใน A ควรลบใน B หรือไม่ว่าเป็นไฟล์ใหม่ใน B ที่ควรคัดลอกไปยัง A) lipsyncดูเหมือนจะเป็นเพียงการใช้ lsyncd + rsync ใช่มั้ย
จากนั้นมีการใช้ lsyncd กับcsync2เช่นนี้: https://icicimov.github.io/blog/devops/File-system-sync-with-Csync2-and-Lsyncd/ฉันกำลังเข้าใกล้แนวทางนี้ แต่ csync2 ค่อนข้างแปลก แต่ฉันก็ทำการทดสอบได้สำเร็จ ฉันกังวลเป็นส่วนใหญ่ว่าฉันไม่สามารถหาคำยืนยันจากชุมชนจำนวนมากเกี่ยวกับวิธีนี้
ผู้คนที่นี่ดูเหมือนจะพร้อมเพรียงกันมาก แต่ดูเหมือนว่ามันจะไม่ได้อยู่ภายใต้การพัฒนาที่ใช้งานได้อีกต่อไปและไม่ชัดเจนว่ามันมีทริกเกอร์อัตโนมัติเช่น lsyncd
ฉันเคยเห็นกลอสเตอร์กล่าวถึง แต่อาจเกินความจำเป็นสำหรับสิ่งที่ฉันต้องการ
อัปเดต: fyi- ฉันลงเอยด้วยโซลูชันดั้งเดิมที่ฉันพูดถึง: lsyncd + csync2 ดูเหมือนว่าจะทำงานได้ค่อนข้างดีและฉันชอบวิธีการสถาปัตยกรรมในการเชื่อมต่อเซิร์ฟเวอร์อย่างหลวม ๆ เพื่อให้เซิร์ฟเวอร์แต่ละเครื่องสามารถทำงานได้อย่างไม่มีกำหนดด้วยตนเองโดยไม่คำนึงถึงคุณภาพลิงก์ระหว่างพวกเขา