จำลอง beanstalkd เพื่อความพร้อมใช้งานสูง


15

ชื่อกล่าวมันทั้งหมด

ไม่มีใครรู้วิธีที่จะเลียนแบบฝักถั่วเช่นนั้นถ้าเซิร์ฟเวอร์ฝักถั่วลงไปทาสคนอื่นอาจใช้เวลามากกว่า?

นี่เป็นวิธีหนึ่งที่ฉันคิด: ฉันสามารถทำให้ beanstalk เขียน binlog ของมัน (ด้วย -b) ไปยังตำแหน่งที่ใช้ร่วมกันแล้วมีเซิร์ฟเวอร์รอง / สำรองเริ่มต้น beanstalkd ถ้าหลักล้มเหลว

ต้องมีวิธีที่ดีกว่า

คำตอบ:


5

เนื่องจากมันเขียนลงดิสก์ผ่าน binlog ฉันคิดว่าคุณสามารถทำสิ่งที่คล้ายกับสิ่งที่ผู้ดูแลระบบ MySQL มักจะทำ: heartbeat w / DRBD ( ตัวอย่างที่นี่)

ครั้งล่าสุดที่ฉันพยายามใช้การเต้นของหัวใจแม้ว่ามันจะไม่สนับสนุนการตรวจสอบที่ไม่ใช่มัลติแคสต์ระหว่างโหนดซึ่งหมายความว่ามันเป็นไปไม่ได้ที่จะทำงานบนคลาวด์ / โครงสร้างพื้นฐาน VPS (AWS, Linode, Slicehost ฯลฯ ) มากขึ้นหรือน้อยลง บริการคลัสเตอร์ส่วนใหญ่ใช้มัลติคาสต์ อาจไม่เป็นเช่นนั้นอีกต่อไป แต่เป็นสิ่งที่ควรระวัง คุณอาจจะสามารถที่จะใช้keepalivedล้มเหลวที่จะให้ IP-based ซึ่งยังรองรับเฉพาะ multicast แต่มีแพทช์สามารถใช้ได้ผ่านทางวิลลี่ Tarreau (ผู้เขียนHAProxy ) เพื่อเพิ่มการสนับสนุน unicast ฉันได้ทำการทดสอบเป็นการส่วนตัวกับเซิร์ฟเวอร์ Linode VPS คู่หนึ่งและที่เก็บไว้จะสามารถล้มเหลวที่อยู่ IP ที่ใช้ร่วมกันในกรณีที่เซิร์ฟเวอร์หลักล้มเหลว

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


1
Corosync รองรับ unicast และเป็นเครื่องมือการจัดกลุ่มเริ่มต้นใน Distros ตาม Redhat
Terence Johnson

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