ความแตกต่างระหว่าง keepalive และ heartbeat คืออะไร?


20

ฉันต้องการจัดโครงสร้างเซิร์ฟเวอร์คลัสเตอร์ที่มีความพร้อมใช้งานสูง ตอนนี้ฉันต้องการทราบรายละเอียดเกี่ยวกับ keepalive และ heartbeat ความแตกต่างระหว่างทั้งสองคืออะไรและวิธีเลือกอย่างใดอย่างหนึ่ง

คำตอบ:


26

เชื่อว่าคำถามที่ได้รับการตอบรับอย่างแม่นยำมากโดยวิลลี่ Tarreau, ผู้เขียนของ HAProxy ในhttp://www.formilux.org/archives/haproxy/1003/3259.html

การอ้างอิงจากลิงค์ด้านบน

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

ความแตกต่างระหว่างสองครอบครัวนั้นง่ายมาก

  1. ผลิตภัณฑ์ที่เน้นคลัสเตอร์เช่นการเต้นของหัวใจจะช่วยให้มั่นใจได้ว่าทรัพยากรที่ใช้ร่วมกันจะมีอยู่ในที่เดียว สิ่งนี้สำคัญมากสำหรับระบบไฟล์ที่ใช้ร่วมกันดิสก์ ฯลฯ ... มันถูกออกแบบมาเพื่อให้บริการลงบนโหนดหนึ่งและอีกหนึ่งโหนดในระหว่างการเปลี่ยนแปลง ด้วยวิธีนี้ทรัพยากรที่ใช้ร่วมกันอาจไม่สามารถเข้าถึงได้พร้อมกัน นี่เป็นงานที่ยากมากที่จะประสบความสำเร็จและทำได้ดี
  2. สินค้าที่มีเครือข่ายที่มุ่งเน้นเช่นkeepalivedจะให้แน่ใจว่าที่อยู่ IP ที่ใช้ร่วมกันจะนำเสนอที่อย่างน้อยหนึ่งในสถานที่ โปรดทราบว่าฉันไม่ได้พูดถึงบริการหรือทรัพยากรอีกต่อไปมันแค่เล่นกับที่อยู่ IP มันจะไม่พยายามดาวน์หรืออัพบริการใด ๆ แต่จะพิจารณาเกณฑ์จำนวนหนึ่งเพื่อตัดสินว่าโหนดใดเหมาะสมที่สุดที่จะให้บริการ แต่บริการจะต้องขึ้นอยู่กับทั้งสองโหนด ดังนั้นจึงเหมาะอย่างยิ่งสำหรับเราเตอร์ซ้ำซ้อนไฟร์วอลล์และพร็อกซี่ แต่ไม่เหมาะสำหรับดิสก์อาร์เรย์หรือระบบไฟล์

(ใช่ฉันรู้ว่ามันเป็นคำถามเก่า แต่สำหรับการอ้างอิงในอนาคต)


การอ้างอิงในอนาคตแน่นอน Heartbeat เป็นความเจ็บปวดในการเซ็ตอัพและทำงานได้ฉันพบว่า keepalived นั้นง่ายกว่ามากและด้วยการติดตั้ง MySQL Master Master Single Write ของฉันก็ทำงานได้ตามที่คาดไว้
Mike Purcell

3

ไม่มีความแตกต่างที่ชัดเจนและสอดคล้องกัน บางครั้งคำเหล่านั้นใช้มากหรือน้อยสลับกันได้

มีผู้ใช้ทั่วไป deamon สำหรับการตั้งค่าความพร้อมใช้งานสูงที่เรียกว่าKeepalivedและโครงการ Linux HA เคยใช้ชื่อ deamon ชื่อ Heartbeat ซึ่งตอนนี้เปลี่ยนเป็นPacemakerแล้ว (ฉันเชื่อว่าคุณไม่ได้ขอภาพรวมที่สมบูรณ์ของทั้งสองระบบและความแตกต่างทั้งหมดคือ IMHO ที่จะถูกปิดหัวข้อ)

ในการใช้ข้อกำหนดรายวันฉันจะบอกว่าการใช้งานบ่อยที่สุดคือ:

  • "Keepalive" หมายถึงระบบที่ให้บริการอย่างมาก

  • "Heartbeat" หมายถึงโปรโตคอลการสื่อสารโดยเฉพาะอย่างยิ่งที่สมาชิกหรือมากกว่าของการตั้งค่าความพร้อมใช้งานสูงส่งเป็นระยะ "ใช่ฉันยังมีชีวิตอยู่!" ข้อความ เพื่อนร่วมงานของพวกเขาจะดำเนินการหากพวกเขาไม่เห็นข้อความ "ใช่ฉันยังมีชีวิตอยู่" ก่อนเวลาที่กำหนด (เช่นโฮสต์อื่น ๆ ได้ลงไป) นี่เป็นความรู้สึกที่คล้ายกับชีพจรดังนั้นชื่อ


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