मैं एक सक्रिय/निष्क्रिय सर्वर आर्किटेक्चर का उपयोग करके अत्यधिक उपलब्ध कतार प्राप्त करने के लिए, RabbitMQ सर्वर का समूह स्थापित करने का प्रयास कर रहा हूं। मेरा अनुसरण कर इस गाइड:सक्रिय/निष्क्रिय उच्च उपलब्धता आर्किटेक्चर का उपयोग कर RabbitMQ को कॉन्फ़िगर कैसे करें
- http://www.rabbitmq.com/clustering.html
- http://www.rabbitmq.com/ha.html
- http://karlgrz.com/rabbitmq-highly-available-queues-and-clustering-using-amazon-ec2/
उच्च उपलब्धता के लिए मेरे आवश्यकता सरल है, मैं RabbitMQ के साथ दो नोड्स (CentOS 6.4) है (v3.2) और एरलांग आर 15 बी03। नोड 1 सभी अनुरोधों का जवाब देकर "सक्रिय" होना चाहिए, और नोड 2 "निष्क्रिय" नोड होना चाहिए जिसमें सभी कतार और संदेश दोहराए गए हैं (नोड 1 से)।
कि ऐसा करने के लिए, मैं निम्नलिखित कॉन्फ़िगर किया है:
-
RabbitMQ गैर क्लस्टर मोड में ठीक काम कर रहा साथ
- node1 RabbitMQ गैर क्लस्टर मोड में ठीक काम कर रहा साथ
- node2
अगले मैंने दोनों नोड्स के बीच क्लस्टर बनाने के लिए किया था: नोड 2 से नोड 1 (गाइड 1) में शामिल होना। इसके बाद मैंने क्लस्टर में सभी नोड्स के बीच सभी कतारों और संदेशों को दोहराने, कतारों (गाइड 2) के प्रतिबिंबित करने के लिए नीति कॉन्फ़िगर की। यह काम करता है, मैं किसी भी नोड से कनेक्ट कर सकता हूं और संदेश प्रकाशित या उपभोग कर सकता हूं, जबकि दोनों नोड उपलब्ध हैं।
समस्या तब होती है जब मेरे पास कोई कतार "क्यूईए" होता है जो नोड 1 (क्यूईए पर मास्टर) पर बनाया गया था, और जब नोड 1 बंद हो जाता है, तो मैं संदेश बनाने या उपभोग करने के लिए नोड 2 में कतार से कनेक्ट नहीं कर सकता, नोड 2 एक त्रुटि कहता है कि नोड 1 पहुंच योग्य नहीं है (मुझे लगता है कि क्यूईए को नोड 2 में दोहराया नहीं गया है, और नोड 2 को कतार के मास्टर के रूप में प्रचारित नहीं किया जा सकता है)।
त्रुटि है:
{ "AMQP आपरेशन बाधित किया गया था: AMQP बंद हो, सहकर्मी, कोड = 404, पाठ = \ द्वारा शुरू की" NOT_FOUND - के घर नोड 'खरगोश @ node1' टिकाऊ कतार vhost में 'queueA' 'app01' नीचे या दुर्गम है \ ", CLASSID = 50, methodId = 10, कारण ="}
इस्तेमाल किया कदम के अनुक्रम है:
node1:
1. rabbitmq-server -detached
2. rabbitmqctl start_app
node2:
3. Copy .erlang.cookie from Node1 to Node2
4. rabbitmq-server -detached
क्लस्टर में शामिल हों (node2):
5. rabbitmqctl stop_app
6. rabbitmqctl join_cluster [email protected]
7. rabbitmqctl start_app
कॉन्फ़िगर कतार मिररिंग नीति:
8. rabbitmqctl set_policy ha-all "" '{"ha-mode":"all","ha-sync-mode":"automatic"}'
नोट: पैटर्न कतार नामों के लिए इस्तेमाल किया "" (सभी कतार) है।
जब मैं 'rabbitmqctl list_policies' चलाता हूं और 'rabbitmqctl cluster_status' सब कुछ ठीक है।
यदि नोड 1 अनुपलब्ध है तो नोड 2 प्रतिक्रिया क्यों दे सकता है? क्या इस सेटअप में कुछ गड़बड़ है?
आपके पास कतार और संदेश कौन से गुण हैं? क्या आपका क्लस्टर संदेश जारी रखता है? (जब आप नोड सेट करते हैं तो कुछ प्रकार की क्लस्टर कॉन्फ़िगरेशन) यहां एक नज़र डालें: http://stackoverflow.com/a/23224388/1248724 – Zarathustra