ขั้นตอนในการทำให้บริการ JNDI HornetQ ที่มีอยู่เป็น HA?


177

TL; DR

ขั้นตอนในการกำหนดค่าบริการ HA-JNDI ด้วยการตั้งค่า HornetQ คืออะไร? ฉันเชื่อว่าเอกสารนั้นกระจัดกระจายไปเล็กน้อย ฉันได้อ่านเอกสารที่นี่แล้วแต่ดูเหมือนจะไม่แสดงรายละเอียด

รุ่นที่ยาวกว่า:

ดังนั้นเราจึงมีการติดตั้ง HornetQ JMS พร้อมกับ JNDI เรามีเซิร์ฟเวอร์ 5 เครื่องที่ใช้งานอินสแตนซ์ต้นแบบ HornetQ JMS พร้อมบริการ JNDI ในแต่ละเซิร์ฟเวอร์ ในแต่ละเซิร์ฟเวอร์ 5 แห่งนี้เรายังมีทาสใช้สำหรับต้นแบบ HornetQ อื่น ๆ

เพื่อแสดง:

Server A - HornetQa_master, JNDI, HornetQb_slave
Server B - HornetQb_master, JNDI, HornetQc_slave
Server C - HornetQc_master, JNDI, HornetQd_slave
Server D - HornetQd_master, JNDI, HornetQe_slave
Server E - HornetQe_master, JNDI, HornetQa_slave

เซิร์ฟเวอร์ HornetQ เหล่านี้แต่ละเครื่องทำหน้าที่เป็นตัวกลางสำหรับความต้องการแบ็กเอนด์ที่หลากหลายของเราดังนั้นจึงหมายถึงเซิร์ฟเวอร์ 5 ตัว, อินสแตนซ์ต้นแบบ 5 HornetQ, อินสแตนซ์ทาส 5 HornetQ และเซิร์ฟเวอร์ JNDI 5 ตัว อย่างไรก็ตามปัญหาที่เกิดขึ้นกับการตั้งค่านี้ก็คือหากเซิร์ฟเวอร์โฮสต์ (ไม่ใช่เพียงแค่กระบวนการโฮสต์เอง) กล่าวว่า A หยุดทำงานบริการควรกลับไปใช้ HornetQ ที่ทำงานบนเซิร์ฟเวอร์ E ซึ่งเป็นโฮสต์ของทาส A ของ HornetQ อย่างไรก็ตามหากต้องการกลับมาทำงานเป็น HornetQ master อีกครั้ง HornetQa_slave จำเป็นต้องพูดคุยกับกระบวนการ JNDI ที่ทำงานบนเซิร์ฟเวอร์ A (ฉันคิดว่าจะทำซ้ำข้อความ) เนื่องจากโฮสต์ A หยุดทำงานเอง HornetQa_slave ที่ทำงานบน E จึงไม่มีวิธีพูดคุยกับ JNDI บน A ดังนั้นจึงไม่สามารถดำเนินการต่อในฐานะกระบวนการหลักได้

หากบริการ JNDI นั้นพร้อมใช้งานสูงกระบวนการทาส HornetQ สามารถกลับมาทำงานได้ตามปกติ ใครช่วยชี้ไปที่เอกสารหรือแสดงในขั้นตอนง่าย ๆ ว่าเราสามารถแปลงการตั้งค่าปัจจุบันของเราเป็น HA-JNDI ได้อย่างไร? สำหรับสิ่งที่คุ้มค่าฉันได้อ่านหลาย ๆแหล่งแต่ดูเหมือนจะไม่ได้อธิบายอย่างละเอียดเกี่ยวกับวิธีการตั้งค่า HA-JNDI โปรดแจ้งให้เราทราบหากคุณต้องการข้อมูลเพิ่มเติมเกี่ยวกับการตั้งค่าปัจจุบันของเรา


8
ลูกค้าของคุณทำงานที่ไหน พวกเขากำลังทำงานบนอินสแตนซ์ AS เดียวกันหรือจากอินสแตนซ์อื่น / JVM หรือทั้งสองอย่างหรือไม่
jjhavokk

3
@jjhavokk พวกเขาจะทำงานใน JVM อีกครั้ง
gravetii

4
คุณสามารถเปิดใช้งาน HornetQ ในโหมดความพร้อมใช้งานสูง (การใช้งาน - การเรพลิเคทแบบพาสซีฟ) จับคู่กับการค้นหาเซิร์ฟเวอร์แบบไดนามิกและคุณควรมีทางเลือกที่เชื่อถือได้ ดูdocs.jboss.org/hornetq/2.4.0.Final/docs/user-manual/html/…และdocs.jboss.org/hornetq/2.4.0.Final/docs/user-manual/html/ …
diginoise

4
คุณใช้ jboss รุ่นใด
eis

5
ฉันเห็นว่ามันเก่าจริง ๆ แต่ฉันสงสัยว่าถ้าคุณพบคำตอบ ถึงตอนนี้คุณคงทราบแล้วว่า HA ต้องการ <forward-when-no-consumers> true </forward-when-no-consumers> เพื่อเผยแพร่ข้อความ แต่ความล้มเหลวกลับไปยังต้นแบบไม่ทำงาน ฉันมี config เดียวกันใน weblogic และ websphere ที่ failback ใช้งานได้ แต่ไม่ได้ใช้ jboss มีบางสิ่งที่ต้องตั้งค่าเพื่ออนุญาตให้ต้นแบบซิงค์และอัปเดตข้อความที่ไม่ได้รับเพื่อให้การทำงานล้มเหลวที่เหมาะสมหรือไม่
user1442498

คำตอบ:


1

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

HornetQ HA ให้บริการผ่านคู่การสำรองข้อมูลสดและการทำโหลดบาลานซ์ให้ผ่านทางคลัสเตอร์

หากคุณต้องการทั้ง HA และ load-balancing คุณจะต้องมีการสำรองข้อมูลสด 2 คู่ที่รวมกันเป็นกลุ่ม

ที่มา: https://developer.jboss.org/thread/254232

คุณสามารถอ้างอิงต้นแบบที่ไม่ใช่ชื่อโฮสต์ แต่ใช้ที่อยู่ IP เสมือนดังนั้นในกรณีที่ต้นแบบไม่ทำงานคุณสามารถกำหนดค่าหนึ่งในทาสให้เป็นต้นแบบและเริ่มต้น IP เสมือนดังนั้นคุณไม่ต้องกำหนดค่าส่วนที่เหลือ ของทาส (เพื่อรักษา HA แม้ในขณะที่มาสเตอร์ไม่ทำงานคุณต้องการมีทาส 2 คนเพื่อให้คุณสามารถรีสตาร์ทหนึ่งในนั้นให้เป็นมาสเตอร์

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

หาก 3 โฮสต์ต่อ HA โดเมนเป็นฮาร์ดแวร์มากเกินไปคุณสามารถทำสิ่งนี้ให้สำเร็จได้ด้วยเซิร์ฟเวอร์เสมือนโดยไม่จำเป็นต้องซื้อฮาร์ดแวร์เพิ่ม

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