कठपुतली के साथ मल्टीसाइट उच्च उपलब्धता के लिए विकल्प


14

मैं दो डेटासेंटर बनाए रखता हूं, और जैसे ही हमारे महत्वपूर्ण बुनियादी ढांचे को कठपुतली के माध्यम से नियंत्रित करना शुरू हो जाता है, यह महत्वपूर्ण है कि दूसरी साइट पर कठपुतली मास्टर का काम हमारी प्राथमिक साइट में विफल होना चाहिए।

इससे भी बेहतर होगा कि एक प्रकार का सक्रिय / सक्रिय सेटअप हो ताकि दूसरी साइट पर सर्वर WAN पर मतदान न कर रहे हों।

क्या बहु-साइट कठपुतली की उच्च उपलब्धता के कोई मानक तरीके हैं?


1
क्या मैंने आपको सही समझा? आप कठपुतली मास्टर अनुपलब्ध कठपुतली मास्टर अनुपलब्ध है के लिए एक रास्ता खोज रहे हैं?
१५:५५ पर हिरोजा jarपोलर

यह थोड़े पर निर्भर करता है कि आप कठपुतली का उपयोग कैसे कर रहे हैं। बहुत लचीलापन है। उदाहरण के लिए, क्या आप संग्रहीत कॉन्फिगर का उपयोग कर रहे हैं?
15

3
क्या आपने "मास्टरलेस पपेट" देखा है? इसका सार यह है कि प्रत्येक एजेंट मेनिफेस्टों का एक चेकआउट है और वे उन्हें स्थानीय रूप से लागू करते हैं। आप के साथ अंत gitया svnया rsyncया जो कुछ भी संस्करण नियंत्रण प्रणाली आप जा रहा है कि तुम क्या कठपुतली मास्टर के बजाय बाहर पैमाने पर करने की जरूरत का उपयोग करें।
लादादादा

3
सक्रिय-सक्रिय प्रश्न को हल करने के लिए बस एक संकेत: आप दोनों डेटासेंटर से समान ( "आभासी" / "सेवा-" ) आईपी की घोषणा करने के लिए किसी भी उपयोग कर सकते हैं । हम अपने DNS सर्वर को हल करने के लिए ऐसा करते हैं। प्रत्येक डेटासेंटर में हमारे लोडबेलेंसर एक ही एनाकास्ट आईपी की घोषणा करते हैं। हमारी रूटिंग लोकल लोडबॉलर को पसंद करती है, लेकिन असफलता के मामले में अन्य डीसी में वापस आ जाती है (~ "अब किसी भी आईपी की घोषणा नहीं")।
16

1
मुझे लगता है कि कठपुतली 3.0 के लिए एक नई सुविधा एसआरवी रिकॉर्ड समर्थन है , कुछ विंडोज लोग अच्छी तरह से परिचित हैं और साइट के सामान के साथ मदद कर सकते हैं।
sysadmin1138

जवाबों:


13

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

यह काफी काम का है, हालाँकि, मल्टी-मास्टर वातावरण में काम करने वाले उन बहुत सारे पुर्जों को प्राप्त करना है, यदि आप अपनी प्राथमिक साइट को खो देने पर कुछ कार्यक्षमता के अनुग्रहपूर्ण नुकसान के साथ ठीक हैं।


आइए एक मास्टर को नोड रिपोर्टिंग देने के लिए आधार कार्यक्षमता के साथ शुरू करें:

मॉड्यूल और घोषणापत्र

यह भाग सरल है। संस्करण उन्हें नियंत्रित करते हैं। यदि यह एक वितरित संस्करण नियंत्रण प्रणाली है, तो बस सेंट्रलाइज़ और सिंक करें, और फ़ेलओवर साइट में आवश्यकतानुसार अपने पुश / पुल प्रवाह को बदल दें। यदि यह तोड़फोड़ है, तो आप शायद svnsyncअपनी विफल साइट पर रेपो करना चाहते हैं ।

प्रमाणपत्र अधिकार

यहां एक विकल्प केवल मास्टर्स के बीच सर्टिफिकेट अथॉरिटी फाइलों को सिंक करना है, ताकि सभी एक ही रूट सर्टिफिकेट साझा करें और सर्टिफिकेट पर हस्ताक्षर करने में सक्षम हों। इसने मुझे हमेशा "गलत करने" के रूप में मारा है;

  • क्या एक मास्टर को वास्तव में अपने स्वयं के प्रमाणित प्रमाण को किसी अन्य मास्टर से आने वाले कनेक्शन के लिए ग्राहक के रूप में प्रस्तुत करना चाहिए?
  • क्या वह वस्तु-सूची सेवा, डैशबोर्ड आदि के लिए मज़बूती से काम करेगा?
  • आप सड़क के नीचे अतिरिक्त वैध DNS ऑल्ट नाम कैसे जोड़ते हैं?

मैं ईमानदारी से नहीं कह सकता कि मैंने इस विकल्प का पूरी तरह से परीक्षण किया है, क्योंकि यह भयानक लगता है। हालाँकि, ऐसा लगता है कि कठपुतली लैब्स इस विकल्प को प्रोत्साहित करने की कोशिश नहीं कर रहे हैं, यहाँ नोट के अनुसार ।

तो, क्या है कि पत्तियों के लिए एक केंद्रीय सीए मास्टर है। जब सभी ग्राहक और अन्य स्वामी CA प्रमाणपत्र और CRL को कैश करते हैं, तब तक सभी भरोसेमंद रिश्ते काम कर रहे होते हैं, (हालांकि वे CRL को जितनी बार चाहें उतनी बार ताज़ा नहीं करते), लेकिन आप तब तक नए प्रमाण पत्र पर हस्ताक्षर करने में असमर्थ रहेंगे आपको प्राथमिक साइट का बैकअप मिलता है या फ़ेलओवर साइट पर बैकअप से CA मास्टर को पुनर्स्थापित करता है।

आप CA के रूप में कार्य करने के लिए एक मास्टर चुनेंगे, और अन्य सभी स्वामी इसे अक्षम कर देंगे:

[main]
    ca_server = puppet-ca.example.com
[master]
    ca = false

फिर, आप चाहते हैं कि प्रमाणपत्र से संबंधित सभी ट्रैफ़िक प्राप्त करने के लिए केंद्रीय प्रणाली हो। इसके लिए कुछ विकल्प हैं;

  1. SRVCA के लिए सभी एजेंट नोड्स को सही स्थान पर इंगित करने के लिए 3.0 में नए रिकॉर्ड समर्थन का उपयोग करें -_x-puppet-ca._tcp.example.com
  2. सभी एजेंटों के ca_serverकॉन्फ़िगरेशन विकल्प को सेट करेंpuppet.conf
  3. सीए से संबंधित अनुरोधों के लिए सही मास्टर पर सभी ट्रैफ़िक का प्रॉक्सी करें। उदाहरण के लिए, यदि आप पैसेंजर के माध्यम से अपाचे में अपने सभी स्वामी चला रहे हैं, तो इसे गैर-सीए पर कॉन्फ़िगर करें:

    SSLProxyEngine On
    # Proxy on to the CA.
    ProxyPassMatch ^/([^/]+/certificate.*)$ https://puppet-ca.example.com:8140/$1
    # Caveat: /certificate_revocation_list requires authentication by default,
    # which will be lost when proxying. You'll want to alter your CA's auth.conf
    # to allow those requests from any device; the CRL isn't sensitive.
    

और, यह करना चाहिए।


इससे पहले कि हम सहायक सेवाओं, एक साइड नोट पर जाएं;

DNS मास्टर प्रमाणपत्र के लिए नाम

मुझे लगता है कि यहीं 3.0 में स्थानांतरित होने का सबसे सम्मोहक कारण है। कहो कि आप "किसी भी ol 'वर्किंग मास्टर पर एक नोड इंगित करना चाहते हैं।

2.7 के तहत, आपको एक सामान्य DNS नाम की आवश्यकता होगी puppet.example.com, और सभी मास्टर्स को उनके प्रमाणपत्र में इसकी आवश्यकता होगी। इसका मतलब है कि dns_alt_namesउनके कॉन्फ़िगरेशन में सेटिंग , एक मास्टर के रूप में कॉन्फ़िगर किए जाने से पहले उनके द्वारा फिर से जारी किए गए सर्टिफिकेट को फिर से जारी करना, जब आपको फिर से सूची में एक नया डीएनएस नाम जोड़ना होगा (जैसे कि अगर आप कई डीएनएस नाम चाहते थे एजेंट अपनी साइट में स्वामी को पसंद करते हैं) .. बदसूरत।

3.0 के साथ, आप SRVरिकॉर्ड का उपयोग कर सकते हैं । अपने सभी ग्राहकों को यह दें;

[main]
    use_srv_records = true
    srv_domain = example.com

फिर, स्वामी के लिए किसी विशेष प्रकार की आवश्यकता नहीं है - बस अपने SRVआरआर में एक नया रिकॉर्ड जोड़ें _x-puppet._tcp.example.comऔर आप सेट कर रहे हैं, यह समूह में एक लाइव मास्टर है। बेहतर अभी तक, आप आसानी से मास्टर चयन तर्क को अधिक परिष्कृत बना सकते हैं; "कोई ओल 'वर्किंग मास्टर, लेकिन अपनी साइट में एक को प्राथमिकता दें" SRVविभिन्न साइटों के लिए रिकॉर्ड के विभिन्न सेट स्थापित करके ; कोई dns_alt_namesजरूरत नहीं है।


रिपोर्ट / डैशबोर्ड

यह सबसे अच्छा केंद्रीकृत काम करता है, लेकिन यदि आप अपनी प्राथमिक साइट के डाउन होने पर इसके बिना रह सकते हैं, तो कोई बात नहीं। रिपोर्ट डालने के लिए अपने सभी स्वामी को सही जगह से कॉन्फ़िगर करें।

[master]
    reports = http
    reporturl = https://puppetdash.example.com/reports/upload

..और आप बिल्कुल तैयार हैं। एक रिपोर्ट अपलोड करने में विफलता कॉन्फ़िगरेशन रन के लिए गैर-घातक है; अगर डैशबोर्ड सर्वर का टोस्ट है तो यह खो जाएगा।

तथ्य सूची

आपके डैशबोर्ड में चिपके रहने के लिए एक और अच्छी बात है इन्वेंट्री सर्विस। प्रलेखन में अनुशंसित facts_terminusसेट के साथ rest, यह केंद्रीय इन्वेंट्री सेवा के डाउन होने पर कॉन्फ़िगरेशन को वास्तव में तोड़ देगा। यहाँ चाल inventory_serviceगैर-केंद्रीय स्वामी पर टर्मिनस का उपयोग करने के लिए है , जो सुशोभित विफलता के लिए अनुमति देता है।

facts_terminus = inventory_service
inventory_server = puppet-ca.example.com
inventory_port = 8140

अपने केंद्रीय इन्वेंट्री सर्वर को ActiveRecord या PuppetDB के माध्यम से इन्वेंट्री डेटा को संग्रहीत करने के लिए सेट करें, और जब भी सेवा उपलब्ध हो, तब तक इसे रखना चाहिए।


इसलिए - यदि आप एक बहुत ही नंगे पांव के विन्यास प्रबंधन वातावरण के लिए नीचे हैं, जहाँ आप CA का उपयोग किसी नए नोड के प्रमाणपत्र पर हस्ताक्षर करने के लिए तब तक नहीं कर सकते, जब तक कि यह बहाल नहीं हो जाता है, तो यह ठीक काम कर सकता है - हालाँकि यह वास्तव में अच्छा होगा यदि इनमें से कुछ घटक वितरित किए जाने के लिए थोड़ा अधिक अनुकूल थे ।


1
सीए सामान के लिए +1। ध्यान दें कि आप सभी CA माल को सिंक / संस्करण को नियंत्रित कर सकते हैं और बस इसे "स्टैंडबाय" कठपुतली पर किसी भी तब तक सक्रिय नहीं कर सकते जब तक कि एक असफल स्थिति उत्पन्न न हो (जिस बिंदु पर आप अपने नए "मास्टर" पर सीए बिट्स को चालू करते हैं और SRVरिकॉर्ड को अपडेट करते हैं। तदनुसार - SRVरिकॉर्ड्स ने मुझे उनके प्रति मेरी सामान्य
महत्वाकांक्षा के

1
@ voretaq7 यह एक अच्छा बिंदु है - इस तरह के सक्रिय / सक्रिय तैनाती की तुलना में एक विशुद्ध रूप से विफल-ओवर सेटअप एक बहुत कम लेगवर्क होगा।
शेन मैडेन

2
: एक परिशिष्ट के रूप में, मैं भी कठपुतली डॉक्स जो अच्छी जानकारी भी है में बहु मास्टर स्केलिंग गाइड के लिए एक अद्यतन योगदान दिया है docs.puppetlabs.com/guides/scaling_multiple_masters.html
शेन झुंझलाना

8

"मास्टरलेस कठपुतली" दृष्टिकोण लाडदादा का वर्णन है कि मैं सबसे अधिक परिचित हूं (यह मूल रूप से हम मेरी कंपनी में मूली के साथ क्या करते हैं)। मैं अधिक सटीक रूप से अनुमान लगाता हूं कि यह "एक बाहरी प्रक्रिया द्वारा सिंक्रनाइज़ किए गए एकाधिक स्वामी हैं", जहां कोई भी दिया गया सर्वर (सैद्धांतिक रूप से) आपातकालीन स्थिति में हमारे पूरे ब्रह्मांड की सेवा कर सकता है।

Radmind की प्रकृति की वजह से हमारे मामले में हम बस rsyncटेप और प्रत्येक दूरस्थ साइट की radmind सर्वर से एक अनुमोदित गुरु से डेटा फ़ाइलों, और ग्राहकों को अपने अपडेट लघु होस्ट नाम के साथ सर्वर से खींच radmind(के जादू के माध्यम से resolv.confकरने के लिए इस मूल्यांकन करता है radmind.[sitename].mycompany.comहमेशा स्थानीय - radmind सर्वर। यदि स्थानीय सर्वर डाउन है तो यह ओवरराइड करने और किसी अन्य साइट के सर्वर को इंगित करने के लिए पर्याप्त आसान है)।

इस प्रकार की rsync प्रक्रिया शायद आपकी स्थिति में भी काम करेगी, लेकिन संस्करण-नियंत्रण आधारित समाधान की तुलना में यह शायद उप-इष्टतम है।


कठपुतली या रसोइये के लिए एक संस्करण-नियंत्रण-आधारित प्रणाली कुछ कारणों से सरल rsync की तुलना में अधिक समझ में आता है - बड़ा यह है कि आप संस्करण-नियंत्रित कठपुतली लिपियों (बल्कि पूरे ओएस चित्रों के बजाय जैसा कि आप रेडमींड के साथ करेंगे)।
संस्करण-नियंत्रण आधारित प्रबंधन के अतिरिक्त लाभों के रूप में, आप कई लोगों को एक ही बार में रिपॉजिटरी पर काम कर सकते हैं (समानता के लिए महान जीत), आपको आवश्यक रूप से मुफ्त में संशोधन इतिहास मिलता है, और यदि कोई कठपुतली पर्यावरण को तोड़ता है तो आपके पास आसान रोलबैक (आपको अनुमान है) gitआप का उपयोग करना भी आपके पास है git blameजो टिन पर यह कहता है)।
क्रिएटिव ब्रांचिंग और विलय भी आपको संस्करण नियंत्रण ढांचे के भीतर एक प्रमुख ओएस अपग्रेड या अन्य संक्रमण को संभालने की अनुमति देता है - एक बार जब आप इसे सही कर लेते हैं तो बस नई शाखा पर स्विच करें और (उम्मीद है) उत्पादन धक्का बस काम करेगा।

क्या मैं इसे यहाँ लागू कर रहा हूँ, मैं शायद प्री-कमिट और पोस्ट-कमिट हुक का फायदा उठाऊंगा ताकि यह सुनिश्चित किया जा सके कि कठपुतली विन्यास प्रतिबद्ध हैं, समझदार हैं (क्लाइंट-साइड प्री) और उन्हें ब्रह्मांड के बाकी हिस्सों में धकेल देते हैं अगर वे (सर्वर-साइड पोस्ट - संभवतः एक पर्यावरण अद्यतन को भी ट्रिगर कर रहे हैं यदि आपकी तैनाती नीतियां इस तरह के व्यवहार की अनुमति देती हैं)।

प्रत्येक साइट पर नए कठपुतली सर्वर लाने के संदर्भ में, आप बस कठपुतली पर्यावरण की जांच प्रत्येक दूरस्थ कठपुतली से कर सकते हैं, और या तो resolv.conf / hostname हैकरी का उपयोग कर सकते हैं जो मैंने ऊपर या किसी भी तरह की सेवा के रूप में वर्णित की हैं, आईपी को मिचेलनिक जैसे स्थानीय सिस्टम पर पुनर्निर्देशित किया गया है ( यदि आप एक साइट के पपेटमास्टर को उड़ा देते हैं) तो यह सुनिश्चित करना आसान है कि एक साइट के कठपुतली को उड़ा दिया जाए।


ब्रेन ट्री पेमेंट के लोगों ने स्पष्ट रूप से संस्करण नियंत्रण और rsync समाधानों को कुछ कस्टम कैपिस्ट्रानो कार्यों के साथ जोड़ दिया है - उनका समाधान इस अर्थ में आधा-बेक किया हुआ लगता है कि यह अभी भी मैनुअल वर्कफ़्लो तत्वों पर निर्भर करता है, लेकिन इसे अनुकूलित और बिना स्वचालित किया जा सकता है। बहुत ज्यादा काम।
मुझ में लकवाग्रस्त बाध्यकारी परीक्षक को अपने noopविवेक-जांच कदम के लिए एक शौक है - मुझे नफरत-की-मैनुअल-प्रक्रियाएं इसके चारों ओर स्वचालन के कुछ स्तर की इच्छा रखती हैं ...

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