ทางเลือกแทน Heartbeat, Pacemaker และ CoroSync?


26

มีทางเลือกอื่นที่สำคัญสำหรับการ failover อัตโนมัติบน Linux นอกเหนือจาก Heartbeat / Pacemaker / CoroSync โดยเฉพาะอย่างยิ่งฉันกำลังตั้งค่า failover บนอินสแตนซ์ของ EC2 ซึ่งรองรับ unicast เท่านั้น - ไม่มีมัลติคาสต์หรือการออกอากาศ ฉันพยายามจัดการกับซอฟต์แวร์บางส่วนที่เรายังไม่มีซึ่งล้มเหลวโดยอัตโนมัติและไม่สนับสนุนสภาพแวดล้อมแบบหลายต้นแบบ ซึ่งรวมถึงเครื่องมือต่าง ๆ เช่น HAProxy และ Solr

ฉันมี Heartbeat + Pacemaker ทำงาน แต่ฉันไม่ได้ตื่นเต้นกับมัน นี่คือปัญหาของฉัน:

  • Heartbeat - จำกัด เพียงสองโหนดเท่านั้น ฉันต้องการมี 3+
  • Pacemaker - เป็นไปไม่ได้ที่จะกำหนดค่าโดยอัตโนมัติ คลัสเตอร์ต้องทำงานด้วยองค์ประชุมและจากนั้นก็ยังต้องการการกำหนดค่าด้วยตนเอง
  • CoroSync - ไม่รองรับ unicast

ผู้นำในกิจการใด ๆ ทำงานได้ดีแม้ว่าจะมีกำลังไฟทำให้การติดตั้งทำได้ยาก ปัญหาที่แท้จริงของ Pacemaker คือไม่มีวิธีง่ายๆในการตั้งค่าอัตโนมัติ ฉันต้องการเปิดตัวอินสแตนซ์ EC2 จริง ๆ ติดตั้ง Chef / Puppet และมีการเปิดตัวของคลัสเตอร์ทั้งหมดโดยไม่ต้องดำเนินการใด ๆ

คำตอบ:


17

ฉันชอบที่จะใช้keepalivedสำหรับความพร้อมใช้งานสูง ฉันพบว่าการติดตั้ง (หนึ่งดีมอนและการกำหนดค่า) ทำได้ง่ายกว่าฮาร์ทบีทและ บริษัท ข้อเสียเปรียบเดียวที่ฉันพบคือ keepalived ไม่มีตัวเลือก unicast ตามค่าเริ่มต้นและใช้ VRRP สำหรับการสื่อสารเท่านั้น (ผู้เขียน HAProxy ได้เขียนโปรแกรมแก้ไขแบบ unicastสำหรับเก็บไว้อย่างไรก็ตาม)


Unicast เป็นสิ่งจำเป็น แต่ฉันจะดูแพทช์
organicveggie

4
+1 ฉันเคยชินกับการใช้ heartbeat ในทุกสถานการณ์ "failover" จนกว่าฉันจะอ่านโพสต์ (ที่ใดที่หนึ่ง) โดยผู้เขียน haproxy ว่าทำไมฉันถึงทำผิด (หรืออย่างน้อยก็ไม่มีประสิทธิภาพ) และควรใช้ที่เก็บไว้แทน . ทุกอย่างขึ้นอยู่กับว่าสิ่งสำคัญล้มเหลวบนเส้นทางของเครือข่ายหรือไม่เช่นย้าย IP ไปที่เซิร์ฟเวอร์อื่นเก็บไว้หรือต้องการให้เข้าถึงทรัพยากรเพียงครั้งเดียว (เช่นการเชื่อมต่อ SAN - การเต้นของหัวใจ)
Coops

5
นี่คืออีเมล @Cops ที่อ้างถึงฉันเชื่อว่าformilux.org/archives/haproxy/1003/3259.html
Henrik

4
ตั้งแต่รีลีส 1.2.8 (2013-08-05) Keepalived รองรับ Unicast ( keepalived.org/changelog.html )
Dynom

บทความเบื้องต้น: opentodo.wordpress.com/2012/04/29/…
Vadzim

14

จริง ๆ แล้วฉันกำลังทำงานกับสิ่งที่คล้ายกับที่คุณอธิบาย (คลัสเตอร์ล้มเหลวบน EC2) และหลังจากลองใช้ Heartbeat ตัดสิน Corosync เป็นเลเยอร์การส่งข้อความของฉัน Corosync จะทำงานบนเซิร์ฟเวอร์หลายเครื่องและรองรับ Unicast (UDPU) ตั้งแต่เวอร์ชัน 1.3.0 (ตั้งแต่ พ.ย. , 2010) ฉันมีการตั้งค่าและทดสอบ Corosync บนคลาวด์ EC2 ของ Amazon (ใช้ Linux AMI ของ Amazon) และสามารถยืนยันได้ว่าทำงานได้โดยไม่มีปัญหา

ไฟล์ udpu ตัวอย่างถูกติดตั้งใน / etc / corosync

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

เช่น:

totem {
        version: 2
        secauth: off
        interface {
                member {
                        memberaddr: 10.xxx.xxx.xxx
                }
                member {
                        memberaddr: 10.xxx.xxx.xxx
                }
                ringnumber: 0
                bindnetaddr: 10.xxx.xxx.xxx
                mcastport: 694
        }
        transport: udpu
}

(Heartbeat ควรให้การสนับสนุนโหนด 3+ คลัสเตอร์ในเวอร์ชัน 1.2.3+ แม้ว่าฉันไม่เคยลองเป็นการส่วนตัวและไม่รู้ว่ามันจะทำงานกับ Unicast ได้หรือไม่)


ฉันติดตั้งคลัสเตอร์ 3 เครื่องโดยใช้ udpu และใช้งานได้ดี คุณเพียงแค่เพิ่มการบล็อกสมาชิกต่อไป
devicenull

11

ขออภัยส่วนที่เกี่ยวกับผู้นำทางธุรกิจนั้นไม่เป็นความจริง การทดสอบการถดถอยและการปล่อย Pacemaker ใช้ประโยชน์จากระบบอัตโนมัติอย่างกว้างขวาง

หากต้องการกำหนดค่าโดยไม่มีคลัสเตอร์ที่ใช้งานอยู่ให้นำหน้าคำสั่งทั้งหมดด้วยCIB_file=/var/lib/heartbeat/crm/cib.xmlหรือตั้งค่าในสภาพแวดล้อมของคุณ ตรวจสอบให้แน่ใจว่าคุณลบไฟล์. sig ก่อนเริ่มต้นคลัสเตอร์

สำหรับกลุ่มที่ไม่มีองค์ประกอบส่วนใหญ่เครื่องมือที่ไม่ควรสนับสนุน-fหรือ--forceซึ่งจะแนะนำให้กลุ่มยอมรับการเปลี่ยนแปลงต่อไป หากคุณพบเครื่องมือที่ไม่ - โปรดยื่นข้อบกพร่อง


ขออภัยความเห็นของฉันมาจากข้อเสนอแนะที่ฉันได้รับจากรายชื่อผู้รับจดหมาย Pacemaker ฉันจะให้ข้อเสนอแนะของคุณยิง
organicveggie

3

ในโลกที่มาเปิดมีRedHat คลัสเตอร์สวีท เป็นเวลาหลายปีแล้วที่ฉันติดตั้ง RHCS ดังนั้นฉันจึงไม่มีสิ่งที่เกี่ยวข้องมากมายที่จะพูดเกี่ยวกับเรื่องนี้ในวันนี้

ในเชิงพาณิชย์มีVeritas เซิร์ฟเวอร์คลัสเตอร์ ไม่มีประสบการณ์กับมัน

มากง่ายและเปิดแหล่งเครื่องมือ HA มีUCARP UCARP ไม่ได้ให้ "โครงสร้างพื้นฐาน" แบบเดียวกับที่ Heartbeat / Pacemaker / CoroSync ทำ แต่คุณสามารถสร้างโซลูชัน HA รอบตัวได้

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


ขอบคุณ ฉันจะดูที่ RHcS, VCS และ UCARP ฉันได้อัปเดตคำถามของฉันเพื่อสะท้อนถึงความจริงที่ว่าฉันใช้ Amazon EC2 ดังนั้นความพร้อมใช้งานระดับโฮสต์จึงไม่ใช่สิ่งที่ฉันสามารถควบคุมได้มาก ... ดังนั้นทำไมฉันจึงดูความพร้อมใช้งานระดับแอปพลิเคชัน
organicveggie


1

หากคุณใช้ EC2 อยู่แล้วทำไมไม่ลองใช้Elastic Load Balancing ? มันจะช่วยให้คุณบรรลุระดับความพร้อมใช้งานของแอพพลิเคชั่นโดยไม่ต้องกำหนดค่า failover ด้วยตัวเอง


มีหลายเหตุผลที่ ELB ไม่เหมาะสม ประการแรก ELB ใช้งานได้เฉพาะกับคำขอที่เข้ามาจากอินเทอร์เน็ตสาธารณะเท่านั้นไม่สามารถใช้สำหรับคำขอภายในได้เว้นแต่ว่าคุณจะส่งคำขอของคุณไปยังที่อยู่สาธารณะของ ELB แล้วชำระค่ารับส่งข้อมูลทั้งหมด ประการที่สอง ELB เป็นเครื่องมือสร้างสมดุลอย่างง่าย - คุณไม่สามารถใช้กฎหรือรูปแบบใด ๆ กับวิธีการทำงานและคุณไม่สามารถใช้เซิร์ฟเวอร์สแตนด์บายได้ ตัวอย่างเช่นคุณไม่ต้องการให้อินสแตนซ์ HAProxy สองรายการแยกกันชี้ไปที่เว็บเซิร์ฟเวอร์เดียวกันเพราะพวกเขาจะไม่ทราบว่าการโหลดจริงบนเว็บเซิร์ฟเวอร์เป้าหมาย
organicveggie

1

Veritas Cluster นั้นยอดเยี่ยม (เมื่อเทียบกับ Linux-Heartbeat, AIX-hacmp, HP-Serviceguard และ Sun cluster) แต่ก็คุ้มค่ากับเงินจำนวนมาก ครั้งสุดท้ายที่ฉันดูราคาของมันอิงตาม cpu-cores ของคลัสเตอร์ ผู้ขายปัจจุบัน ist Symantec ...



0

opensvc ( https://www.opensvc.com ) รองรับไดรเวอร์ heartbeat หลายตัว:

  • unicast
  • หลายผู้รับ
  • ดิสก์ที่ใช้ร่วมกัน
  • สับเปลี่ยนไซต์ 3

และยังมีโควรัม mecanisms ในกรณีที่สมองแตก

ฉันจัดการเพื่อตั้งค่าคลัสเตอร์ 4 โหนดโดยอัตโนมัติซึ่งประกอบด้วย 2 อินสแตนซ์ของกูเกิลคลาวด์ + อินสแตนซ์อะเมซอน 2 พร้อมกับ Terraform + ansible

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