2-नोड सक्रिय / निष्क्रिय लाइन हा पेसमेकर क्लस्टर में STONITH सेटअप कैसे करें?


12

मैं एक सक्रिय / निष्क्रिय (2 नोड्स) लिनक्स-हा क्लस्टर को कोरोसिंक और पेसमेकर के साथ पोस्टग्रेसीक्यूएल-डेटाबेस को चलाने और चलाने के लिए सेटअप करने की कोशिश कर रहा हूं। यह DRBD और एक सेवा-आईपी के माध्यम से काम करता है। यदि नोड 1 विफल रहता है, तो नोड 2 को संभालना चाहिए। वही अगर PG नोड 2 पर चलता है और यह विफल रहता है। सब कुछ ठीक बात के अलावा काम करता है।

नोड्स के बीच एक समर्पित हा-कनेक्शन (10.10.10.X) है, इसलिए मेरे पास निम्नलिखित इंटरफ़ेस कॉन्फ़िगरेशन है:

eth0            eth1            host
10.10.10.251    172.10.10.1     node1
10.10.10.252    172.10.10.2     node2

स्टोनिथ सक्षम है और मैं नोड्स को मारने के लिए एक ssh- एजेंट के साथ परीक्षण कर रहा हूं।

crm configure property stonith-enabled=true
crm configure property stonith-action=poweroff
crm configure rsc_defaults resource-stickiness=100
crm configure property no-quorum-policy=ignore

crm configure primitive stonith_postgres stonith:external/ssh \
                params hostlist="node1 node2"
crm configure clone fencing_postgres stonith_postgres

crm_mon -1 दिखाता है:

============
Last updated: Mon Mar 19 15:21:11 2012
Stack: openais
Current DC: node2 - partition with quorum
Version: 1.0.9-74392a28b7f31d7ddc86689598bd23114f58978b
2 Nodes configured, 2 expected votes
4 Resources configured.
============

Online: [ node2 node1 ]

Full list of resources:

 Master/Slave Set: ms_drbd_postgres
     Masters: [ node1 ]
     Slaves: [ node2 ]
 Resource Group: postgres
     fs_postgres        (ocf::heartbeat:Filesystem):    Started node1
     virtual_ip_postgres        (ocf::heartbeat:IPaddr2):       Started node1
     postgresql (ocf::heartbeat:pgsql): Started node1
 Clone Set: fencing_postgres
     Started: [ node2 node1 ]

समस्या यह है: जब मैंने एथ0-इंटरफेस के बीच कनेक्शन काट दिया, तो यह दोनों नोड्स को मारता है । मुझे लगता है कि यह कोरम के साथ एक समस्या है, क्योंकि सिर्फ 2 नोड्स हैं। लेकिन मैं सही कोरम की गणना के लिए केवल 3 नोड जोड़ना नहीं चाहता।

क्या इस समस्या को हल करने के लिए कोई विचार हैं?


crm_monजब आपका क्लस्टर विफल स्थिति में होता है तो आउटपुट कैसा दिखता है?
1922 में लार्क्स

1
अब मैं एक स्टोनिथ डिवाइस का उपयोग कर रहा हूं जो पोस्टग्रेज की तरह एक ही नोड पर नहीं चलता है। यह काम उम्मीद के मुताबिक हुआ!
एमएम

जवाबों:


21

यह थोड़ा पुराना सवाल है, लेकिन यहाँ प्रस्तुत समस्या समूहों में, विशेषकर दो-नोड समूहों में विफलता कब और कैसे काम करती है, पर एक गलत धारणा पर आधारित है।

जिस्ट है: आप दो नोड्स के बीच संचार को अक्षम करके फेलओवर परीक्षण नहीं कर सकते। ऐसा करने से आपको वही दिखाई देगा, जो अतिरिक्त, पारस्परिक STONITH के साथ एक विभाजित-मस्तिष्क परिदृश्य है। यदि आप बाड़ लगाने की क्षमताओं का परीक्षण करना चाहते हैं, killall -9 corosyncतो सक्रिय नोड पर एक सरल काम करेगा। अन्य तरीके crm node fenceया हैं stonith_admin -F

अपने समूह के लिए काफी नहीं पूर्ण विवरण से (जहां के उत्पादन में है crm configure showऔर cat /etc/corosync/corosync.conf?) यह आप यानी Corosync / क्लस्टर संचार संदेश के लिए 10.10.10.xx पतों का उपयोग कर रहे हैं, लगता है। 172.10.10.xx पते आपके नियमित / सेवा नेटवर्क पते हैं और आप किसी दिए गए नोड का उपयोग करेंगे, उदाहरण के लिए SSH का उपयोग करके, इसके 172.10.10.xx पते द्वारा। DNS भी node1172.10.10.1 की तरह नोड होस्टनाम को हल करने के लिए लगता है ।

आपने SSH का उपयोग करने के लिए STONITH को कॉन्फ़िगर किया है, जो अपने आप में बहुत अच्छा विचार नहीं है, लेकिन आप शायद सिर्फ परीक्षण कर रहे हैं। मैंने स्वयं इसका उपयोग नहीं किया है, लेकिन मुझे लगता है कि SSH STONITH एजेंट दूसरे नोड में लॉग करता है और शटडाउन कमांड जारी करता है, जैसे ssh root@node2 "shutdown -h now"या कुछ समान।

अब, जब आप नोड्स के बीच क्लस्टर संचार में कटौती करते हैं तो क्या होता है? नोड्स अब प्रत्येक नोड को जीवित और अच्छी तरह से नहीं देखते हैं, क्योंकि उनके बीच कोई अधिक संचार नहीं है। इस प्रकार प्रत्येक नोड मानता है कि यह किसी दुर्भाग्यपूर्ण घटना का एकमात्र उत्तरजीवी है और सक्रिय या प्राथमिक नोड बनने (या रहने) का प्रयास करता है। यह क्लासिक और खूंखार विभाजन-मस्तिष्क परिदृश्य है

इसका एक हिस्सा यह सुनिश्चित करना है कि दूसरे, स्पष्ट रूप से और असफल रूप से विफल नोड अच्छे के लिए नीचे है, जो जहां STONITH में आता है। ध्यान रखें कि दोनों नोड्स अब एक ही खेल खेल रहे हैं: सक्रिय (या रहने) बनने की कोशिश करना और लेना सभी क्लस्टर संसाधनों के साथ-साथ सिर में अन्य नोड की शूटिंग।

आप शायद अनुमान लगा सकते हैं कि अब क्या होता है। node1करता है ssh root@node2 "shutdown -h now"और node2करता है ssh root@node1 "shutdown -h now"। यह क्लस्टर संचार नेटवर्क का उपयोग नहीं करता है 10.10.10.xx लेकिन सेवा नेटवर्क 172.10.10.xx। चूंकि दोनों नोड वास्तव में जीवित हैं और अच्छी तरह से हैं, उन्हें कमांड जारी करने या एसएसएच कनेक्शन प्राप्त करने में कोई समस्या नहीं है, इसलिए दोनों नोड एक ही समय में एक दूसरे को गोली मारते हैं। यह दोनों नोड्स को मारता है।

यदि आप STONITH का उपयोग नहीं करते हैं तो एक स्प्लिट-ब्रेन के और भी बुरे परिणाम हो सकते हैं, विशेष रूप से DRBD के मामले में, जहाँ आप दोनों नोड्स के प्राथमिक होने पर समाप्त हो सकते हैं। डेटा भ्रष्टाचार होने की संभावना है और विभाजन-मस्तिष्क को मैन्युअल रूप से हल किया जाना चाहिए।

मैं http://www.hastexo.com/resources/hints-and-kinks पर सामग्री को पढ़ने की सलाह देता हूं जो उन लोगों द्वारा लिखी और बनाए रखी जाती है जिन्होंने योगदान दिया (और अब भी योगदान करते हैं) जिसे हम आज "लिनक्स हा" कहते हैं। ढेर"।

TL; DR : यदि आप अपने फेंसिंग सेटअप का परीक्षण करने के लिए अपने नोड्स के बीच क्लस्टर संचार काट रहे हैं, तो आप इसे गलत कर रहे हैं । उपयोग करें killall -9 corosync, crm node fenceया stonith_admin -Fइसके बजाय। कटिंग क्लस्टर संचार केवल एक विभाजित-मस्तिष्क परिदृश्य के परिणामस्वरूप होगा, जो डेटा भ्रष्टाचार को जन्म दे सकता है और कर सकता है।


2

आप auto_tie_breaker: 1/etc/corosync/corosync.conf के कोरम अनुभाग में जोड़ने का प्रयास कर सकते हैं

जब एटीबी सक्षम होता है, तो क्लस्टर एक निर्धारित समय में, 50% तक नोड्स में विफल हो सकता है। क्लस्टर विभाजन, या नोड्स का सेट जो अभी भी नोड के संपर्क में है, जिसमें सबसे कम नोड होते हैं, वे अलग रहेंगे। अन्य नोड्स की जांच की जाएगी।


0

पेसमेकर प्रलेखन के कोरम और दो-नोड क्लस्टर अध्याय को पढ़ने का प्रयास करें ।


लगता है कि आप 'नो-कोरम-पॉलिसी = उपेक्षा' का मतलब है। मैंने इसे पहले ही सेट कर दिया (मेरी पहली पोस्ट भी संपादित की)। यहाँ मेरी मदद नहीं करता। क्या आप इसके लिए एक बेहतर संकेत दे सकते हैं?
एमएम

खैर, प्रलेखन से पता चलता है कि अगर पेसमेकर कोरम के साथ समस्या है तो पेसमेकर कुछ विशिष्ट संदेशों को लॉग करेगा। क्या आप अपने लॉग में देखते हैं? क्या crm_monदिखाता है?
लार्क्स

मुझे sth नहीं मिल रहा है। लॉग में दिलचस्प है। मैंने अपनी पहली पोस्ट की जानकारी के साथ संपादन किया crm_mon -1
एमएम

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.