Pritunl: नियंत्रण स्थिति बनाम उत्पन्न प्रोफ़ाइल
क्लाइंट प्रोफ़ाइल और कॉन्फ़िगरेशन प्रति दोनों बैकअप जैसे दिखते हैं। तुलना करें कि MongoDB क्या रखता है, होस्ट क्या रखता है, और काम करने वाला Pritunl कैसे बहाल करें।
एक संग्रह काम करने वाला Pritunl परिनियोजन बहाल करता है; दूसरा केवल उसकी तस्वीर बहाल करता है। क्लाइंट प्रोफ़ाइल, होस्ट कॉन्फ़िगरेशन की प्रति और स्थिति निर्देशिका का tarball सभी बैकअप जैसे दिखते हैं, और इनमें से कोई भी अकेला Pritunl द्वारा प्रबंधित संगठनों, उपयोगकर्ताओं और सर्वर परिभाषाओं को वापस नहीं लाता। अंतर स्वामित्व का है: स्थिति का कुछ भाग डेटाबेस का है, कुछ होस्ट का, और कुछ फिर से उत्पन्न आउटपुट है। गलत परत चुनें और बहाली ऐसा सर्वर बनाती है जो शुरू होता है, सुनता है और कुछ नहीं जानता। यह तुलना तीनों परतों को अलग करती है ताकि आपका रखा संग्रह उसी विफलता से मेल खाए जिससे आप बहाल हो रहे हैं।
दो वस्तुएँ बैकअप जैसी दिखती हैं और केवल एक सेवा बहाल करती है
डाउनलोड की गई क्लाइंट प्रोफ़ाइल में प्रमाणपत्र, कुंजी और एंडपॉइंट होता है। यह उस एक डिवाइस के लिए पूर्ण है और परिनियोजन के रिकॉर्ड के रूप में बेकार: इसमें कोई संगठन, अक्षम उपयोगकर्ता, सर्वर मार्ग या प्रशासनिक खाते नहीं होते। प्रोफ़ाइल फ़ोल्डर से बहाली ऐसे क्लाइंट देती है जो किसी भी चीज़ के सामने प्रमाणित नहीं हो सकते।
होस्ट कॉन्फ़िगरेशन की प्रति भी उतनी ही आंशिक है। /etc/pritunl.conf होस्ट-स्तरीय सेटिंग्स रखता है, जिसमें डेटाबेस तक पहुँचने का तरीका शामिल है, और स्वयं VPN ऑब्जेक्ट नहीं रखता।
डेटाबेस क्या रखता है और होस्ट क्या रखता है
Pritunl सर्वर परिभाषाएँ, उपयोगकर्ता, संगठन और कुंजियाँ MongoDB में रखता है। वह डेटाबेस प्रामाणिक नियंत्रण तल है, और डिस्क पर उत्पन्न हर OpenVPN फ़ाइल उससे व्युत्पन्न आउटपुट है। उत्पन्न फ़ाइल में सीधे किया गया परिवर्तन अगली पुनरुत्पत्ति तक रहता है और फिर गायब हो जाता है, इसलिए रनटाइम फ़ाइलों को संपादित करना टिकाऊ सुधार नहीं है। यही नियम प्रभावी मार्गों और इंटरफ़ेसों पर भी लागू होता है: वे बताते हैं कि नियंत्रण तल ने क्या उत्पन्न किया, न कि उसे क्या उत्पन्न करना चाहिए।
होस्ट छोटा लेकिन स्थानांतरित न हो सकने वाला मान-समूह देता है। उनमें से एक है /var/lib/pritunl/pritunl.uuid, उस विशेष नोड की पहचान।
यह पहचान क्लस्टर में सबसे महत्वपूर्ण है। प्रतिस्थापन होस्ट को सक्रिय नोड के UUID की क्लोन के बजाय अपना पंजीकरण चाहिए, वरना दोनों एक ही पहचान के लिए लड़ते हैं। प्रत्येक होस्ट, उसके UUID और उस डेटाबेस के बीच मैपिंग दर्ज करें जिसकी ओर वह इंगित करता है, क्योंकि एकल डेटाबेस डंप यह नहीं बताता कि कौन-सी होस्ट सेटिंग किस मशीन की थी। सॉफ़्टवेयर संस्करण और सार्वजनिक एंडपॉइंट नाम उसी रिकॉर्ड में आते हैं।
सुसंगत डंप लें, निर्देशिका की प्रति नहीं
सेवा के लिखते समय MongoDB डेटा निर्देशिका की प्रतिलिपि ऐसी फ़ाइलें बनाती है जो उपयोगी डेटाबेस न बना सकें। इसके बजाय डेटाबेस का समर्थित डंप पथ उपयोग करें, जो उसी टोपोलॉजी के विरुद्ध चलाया जाए जो आपके पास वास्तव में है:
mongodump --uri="mongodb://127.0.0.1:27017/pritunl" --out=/var/backups/pritunl/db
sudo tar czf /var/backups/pritunl/host.tgz /etc/pritunl.conf /var/lib/pritunl/pritunl.uuid
अकेला होस्ट उस सरल रूप को सहता है। प्रतिकृति सेट को सुसंगत समय-बिंदु चाहिए, और oplog-आधारित डंप की ऐसी आवश्यकताएँ हैं जो सादे डंप में नहीं होतीं। समर्थित प्रक्रिया आपके MongoDB संस्करण और टोपोलॉजी पर निर्भर करती है, इसलिए इसे डेटा निर्देशिका की उपस्थिति से न निकालें। होस्ट परत को डंप के साथ, उसी रन में, उसी टाइमस्टैम्प के साथ संग्रहित करें।
आवश्यकता से पहले बहाली का अभ्यास करें
जिस बैकअप को किसी ने बहाल नहीं किया वह एक परिकल्पना है। सेवा को पृथक नेटवर्क में बनाएँ, डंप बहाल करें और होस्ट फ़ाइलें वापस रखें:
mongorestore --uri="mongodb://127.0.0.1:27017" --drop /var/backups/pritunl/db
sudo tar xzf /var/backups/pritunl/host.tgz -C /
फिर प्रक्रिया के बजाय वस्तुओं को सत्यापित करें: लॉग इन करें, पुष्टि करें कि संगठन और उपयोगकर्ता मौजूद हैं, और एक ऐसी सर्वर परिभाषा के विरुद्ध एक परीक्षण क्लाइंट शुरू करें जिसे आप पहचानते हैं। बहाल किए गए होस्ट को उत्पादन एंडपॉइंट का विज्ञापन करने या वास्तविक कनेक्शन स्वीकार करने से रोकें जब तक पते और पहचान जानबूझकर न हों। यहीं आप यह भी पाते हैं कि संग्रह को ऐसे क्रेडेंशियल चाहिए जो केवल विफल मशीन पर थे, इसलिए बहाली क्रेडेंशियल स्वतंत्र स्थान पर रखें। ऐसी बहाली जो उसी होस्ट पर निर्भर हो जिसे आपने अभी खोया है, बहाली योजना नहीं है।
अंत में, याद रखें कि पुराना स्नैपशॉट पुराने निर्णय बहाल करता है। यदि किसी प्रशासक ने डंप लेने के बाद किसी पहचान को अक्षम किया, तो बहाली उसे फिर सक्षम कर देती है। बहाली के बाद सामंजस्य प्रक्रिया का हिस्सा है, बाद की सोच का नहीं।