2014-12-31 2 views
7

कंसुल में आपके पास सर्वर या क्लाइंट के रूप में कई एजेंट हो सकते हैं। सभी सर्वरों में से एक को नेता के रूप में चुना जाता है। एजेंट के दृष्टिकोण से, यह कैसे पता चलता है कि यह नेता है?एक कंसुल एजेंट कैसे जानता है कि यह क्लस्टर का नेता है?

उत्तर

8

एक तरह से http://<localhost_ip_address>:8500/v1/status/leader

इस के साथ क्लस्टर बुला मौजूदा नेता वापस आ जाएगी कर रहा है। फिर स्थानीय आईपी पते के खिलाफ आईपी पता वापस चेक करें।

+1

//, इस तरह बाहरी कार्यक्रमों को पता है कि वर्तमान नेता कौन है। लेकिन यह नहीं कहता कि कैसे कंसुल का यह उदाहरण जानता है कि यह वर्तमान नेता है। –

+0

@NathanBasanese मुझे नहीं लगता कि अलेक्जेंड्रे सैंटोस परवाह है कि सही जवाब क्या है। – jeremyjjbrown

11

कंसुल नेता कंसुल सर्वर के कोरम के बीच Raft Protocol के कार्यान्वयन के माध्यम से चुने जाते हैं। सर्वर के रूप में कॉन्फ़िगर किए गए केवल कंसुल उदाहरण राफ्ट प्रोटोकॉल संचार में भाग लेते हैं। Consul Agent (डिमन) को Client या Server के रूप में प्रारंभ किया जा सकता है। केवल एक सर्वर डेटासेंटर का नेता हो सकता है।

राफ्ट प्रोटोकॉल को मौजूदा सर्वसम्मति प्रोटोकॉल जैसे Paxos की जटिलता के जवाब में स्टैनफोर्ड विश्वविद्यालय से डिएगो ओन्गारो और जॉन ओस्टरहाउट द्वारा बनाया गया था। राफ्ट यादृच्छिक टाइमर के उपयोग के माध्यम से एक नेता का चुनाव करता है। एल्गोरिदम Ongaro and Ousterhout's paper में विस्तृत है।

ग्राहकों के रूप में कॉन्फ़िगर किए गए कंसुल उदाहरण Gossip Protocol के माध्यम से क्लस्टर के साथ संवाद करते हैं जो Serf पर आधारित है। सर्फ संचार अंततः संगत है। सर्फ क्लस्टर में कोई केंद्रीय सर्वर नहीं है, प्रत्येक नोड को बराबर माना जाता है। गॉसिप/सर्फ प्रोटोकॉल में भाग लेने में सभी नोड्स (ग्राहक और सर्वर) ने अपने पड़ोसियों को संदेश फैलाए, जिससे बदले में संदेश अपने पड़ोसियों तक फैल गया जब तक कि संदेश पूरे समूह में प्रचारित नहीं हुआ। एक ज़ोंबी सर्वनाश के संक्रमण पथ की तरह क्रमबद्ध करें। क्लस्टर में संचार ओवरहेड को बहुत कम करने के लिए यह किया जाता है क्योंकि यह संभावित रूप से हजारों नोड्स के पैमाने पर स्केल करता है।

कंसुल ग्राहक किसी भी कंसुल सर्वर को संदेश अग्रेषित कर सकते हैं जो संदेश को नेता को अग्रेषित करेगा। कंसुल ग्राहकों को देखभाल करने की आवश्यकता नहीं है कि कौन सी कंसुल सर्वर नेता है। केवल सर्वर को देखभाल करने की आवश्यकता है।

किसी भी कंसुल सर्वर पर चल रहे Consul HTTP API आपको बताएंगे कि कौन सा सर्वर $ANY_CONSUL_SERVER/v1/status/leader पर अग्रणी है। हालांकि, इस बात से कोई लेना-देना नहीं है कि कैसे कंसुल एजेंट नेता चुनाव करते हैं।

+0

मुझे एक जवाब बंद करने से नफरत है, लेकिन पहले 5 वाक्यों के पास इस सवाल से कोई लेना देना नहीं है, जबकि केवल 6 वें में एक ही उत्तर दिया गया है जैसा कि पहले प्रदान किया गया था। –

+3

आपने पूछा कि कैसे एजेंट जानता है कि यह क्लस्टर का नेता है। एजेंट के प्रकार में सबकुछ कम करने के साथ किया जाता है जो नेता बन सकता है। – jeremyjjbrown

संबंधित मुद्दे