हम किस बारे में बात करेंगे:कैसे जल्दी से दो सर्वर के लिए साझा भंडारण तैनात करने के लिए drbd + ocfs2 समाधान पर आधारित है।
जिनके लिए यह उपयोगी होगा:ट्यूटोरियल सिस्टम प्रशासक और जो कोई भी स्टोरेज कार्यान्वयन विधि चुनता है या समाधान के लिए प्रयास करना चाहता है, के लिए उपयोगी होगा।
हमने क्या फैसले लिए और क्यों मना किया
अक्सर हमें एक ऐसी स्थिति का सामना करना पड़ता है, जहां हमें एक छोटे से वेब-क्लस्टर पर अच्छे रीड-राइट प्रदर्शन के साथ एक सामान्य भंडारण को लागू करने की आवश्यकता होती है। हमने अपनी परियोजनाओं के लिए एक आम भंडार को लागू करने के लिए विभिन्न विकल्पों की कोशिश की, लेकिन कई संकेतकों के लिए हमें तुरंत संतुष्ट करने में सक्षम नहीं था। अब आइए बताते हैं क्यों।
- ग्लस्टरफ़ेट्स ने हमें पढ़ने और लिखने के प्रदर्शन के अनुरूप नहीं किया, बड़ी संख्या में फ़ाइलों की एक साथ पढ़ने के साथ समस्याएं थीं, सीपीयू पर एक उच्च भार था। फ़ाइलों को पढ़ने के साथ समस्या को उनके लिए सीधे ईंट में आवेदन करके हल किया जा सकता है, लेकिन यह हमेशा लागू नहीं होता है और आमतौर पर गलत होता है।
- सेफ को अत्यधिक जटिलता पसंद नहीं थी, जो 2-4 सर्वरों के साथ परियोजनाओं पर हानिकारक हो सकती है, खासकर अगर परियोजना बाद में सेवित हो। फिर, गंभीर प्रदर्शन सीमाएँ हैं जो आपको अलग-अलग स्टोरेज क्लस्टर बनाने के लिए मजबूर करती हैं, जैसे कि ग्लस्टरफ़ेट्स के साथ।
- साझा संग्रहण को कार्यान्वित करने के लिए एक nfs सर्वर का उपयोग करना दोष सहिष्णुता मुद्दों को बढ़ाता है।
- s3 कार्यों की एक निश्चित सीमा के लिए एक उत्कृष्ट लोकप्रिय समाधान है, लेकिन यह एक फाइल सिस्टम नहीं है, जो गुंजाइश को बताता है।
- lsyncd। अगर हम पहले से ही "नॉन-फाइल सिस्टम" के बारे में बात करना शुरू कर देते हैं, तो यह इस लोकप्रिय समाधान के लायक है। न केवल यह दो-तरफा विनिमय के लिए उपयुक्त नहीं है (लेकिन अगर आप वास्तव में चाहते हैं, तो आप कर सकते हैं), यह बड़ी संख्या में फाइलों पर भी काम नहीं करता है। सब कुछ के लिए एक अच्छा जोड़ यह होगा कि यह सिंगल-थ्रेडेड है। कार्यक्रम की वास्तुकला में इसका कारण है: यह काम की वस्तुओं की निगरानी के लिए इनटॉइसी का उपयोग करता है जो इसे स्टार्टअप पर और रेस्क्यू के दौरान लटकाते हैं। Rsync ट्रांसमिशन माध्यम के रूप में उपयोग किया जाता है।
ट्यूटोरियल: कैसे साझा भंडारण तैनात करने के लिए drbd + ocfs2 पर आधारित है
हमारे लिए सबसे सुविधाजनक समाधान में से एक
ocfs2 + drbd का एक गुच्छा था। अब हम आपको दिखाएंगे कि समाधान के डेटाबेस के आधार पर दो सर्वरों के लिए साझा संग्रहण को जल्दी से कैसे तैनात किया जाए। लेकिन पहले, घटकों के बारे में थोड़ा:
DRBD मानक लिनक्स भंडारण प्रणाली है जो सर्वर ब्लॉक के बीच डेटा को दोहराया जा सकता है। मुख्य अनुप्रयोग दोष सहिष्णु भंडारण का निर्माण कर रहा है।
OCFS2 एक फ़ाइल सिस्टम है जो एक से अधिक सिस्टम द्वारा एक ही स्टोरेज का साझा उपयोग प्रदान करता है। लिनक्स के वितरण में शामिल है और एफएस के साथ काम करने के लिए कर्नेल मॉड्यूल और यूजरस्पेस टूल है। OCFS2 का उपयोग न केवल DRBD के शीर्ष पर किया जा सकता है, बल्कि कई कनेक्शनों के साथ iSCSI के शीर्ष पर भी किया जा सकता है। हमारे उदाहरण में, हम DRBD का उपयोग करते हैं।
सभी क्रियाएं न्यूनतम कॉन्फ़िगरेशन में ubuntu सर्वर 18.04 पर की जाती हैं।
चरण 1: DRBD कॉन्फ़िगर करें:
फ़ाइल /etc/drbd.d/drbd0.res में हम अपने वर्चुअल ब्लॉक डिवाइस / dev / drb0 का वर्णन करते हैं:
resource drbd0 { syncer { rate 1000M; } net { allow-two-primaries; after-sb-0pri discard-zero-changes; after-sb-1pri discard-secondary; after-sb-2pri disconnect; } startup { become-primary-on both; } on drbd1 { meta-disk internal; device /dev/drbd0; disk /dev/vdb1; address 10.10.10.192:7789; } on drbd2 { meta-disk internal; device /dev/drbd0; disk /dev/vdb1; address 10.10.10.193:7789; } }
मेटा-डिस्क आंतरिक - मेटाडेटा को संग्रहीत करने के लिए समान ब्लॉक उपकरणों का उपयोग करें
उपकरण / देव / drbd0 - उपयोग / देव / drbd0 पथ के लिए मात्रा के रूप में।
डिस्क / देव / vdb1 - उपयोग / देव / vdb1
syncer {दर 1000 मी; } - गीगाबिट चैनल बैंडविड्थ का उपयोग करें
अनुमति दो-प्राइमरी - दो प्राथमिक सर्वर पर परिवर्तनों की स्वीकृति की अनुमति देने के लिए एक महत्वपूर्ण विकल्प
after-sb-0pri, after-sb-1pri, after-sb-2pri - ऐसे विकल्प जो नोड के कार्यों के लिए जिम्मेदार होते हैं जब स्प्लिटब्रेन का पता लगाया जाता है। अधिक विवरण के लिए प्रलेखन देखें।
दोनों पर प्राइमरी-ऑन-प्राइमरी सेट करें।
हमारे मामले में, हमारे पास दो बिल्कुल समान वीएम हैं, जिसमें 10 गीगाबिट के एक समर्पित वर्चुअल नेटवर्क बैंडविड्थ है।
हमारे उदाहरण में, दो क्लस्टर नोड्स के नेटवर्क नाम drbd1 और drbd2 हैं। उचित संचालन के लिए, आपको / etc / मेजबान में नोड्स के नाम और आईपी पते को मैप करना होगा।
10.10.10.192 drbd1 10.10.10.193 drbd2
चरण 2. नोड्स कॉन्फ़िगर करें:दोनों सर्वरों पर हम अमल करते हैं:
drbdadm create-md drbd0

modprobe drbd drbdadm up drbd0 cat /proc/drbd
हम निम्नलिखित प्राप्त करते हैं:

आप सिंक्रनाइज़ेशन शुरू कर सकते हैं। पहले नोड पर आपको क्या करना है:
drbdadm primary --force drbd0
हम स्थिति को देखते हैं:
cat /proc/drbd

महान, सिंक्रनाइज़ेशन शुरू हो गया है। हम अंत की प्रतीक्षा कर रहे हैं और चित्र देखें:
चरण 3. हम दूसरे नोट पर सिंक्रनाइज़ेशन शुरू करते हैं: drbdadm primary --force drbd0
हम निम्नलिखित प्राप्त करते हैं:

अब हम दो सर्वर से drbd पर लिख सकते हैं।
चरण 4. ocfs2 स्थापित और कॉन्फ़िगर करें।हम एक तुच्छ विन्यास का उपयोग करेंगे:
cluster: node_count = 2 name = ocfs2cluster node: number = 1 cluster = ocfs2cluster ip_port = 7777 ip_address = 10.10.10.192 name = drbd1 node: number = 2 cluster = ocfs2cluster ip_port = 7777 ip_address = 10.10.10.193 name = drbd2
इसे दोनों नोड्स पर
/etc/ocfs2/cluster.conf में
लिखना होगा ।
किसी भी नोड पर drbd0 पर FS बनाएँ:
mkfs.ocfs2 -L "testVol" /dev/drbd0
यहां हमने डिफ़ॉल्ट सेटिंग्स का उपयोग करके drbd0 पर टेस्टवोल नामक एक फाइल सिस्टम बनाया।

में / etc / default / o2cb को सेट किया जाना चाहिए (हमारी कॉन्फ़िगरेशन फ़ाइल में)
O2CB_ENABLED=true O2CB_BOOTCLUSTER=ocfs2cluster
और प्रत्येक नोड पर निष्पादित करें:
o2cb register-cluster ocfs2cluster
उसके बाद, स्टार्टअप को चालू करें और हमारी ज़रूरत की सभी इकाइयों को जोड़ें:
systemctl enable drbd o2cb ocfs2 systemctl start drbd o2cb ocfs2
इसका एक हिस्सा पहले से ही सेटअप प्रक्रिया के दौरान चल रहा होगा।
चरण 5. दोनों नोड्स पर fstab में आरोह बिंदु जोड़ें: /dev/drbd0 /media/shared ocfs2 defaults,noauto,heartbeat=local 0 0
/ मीडिया / साझा निर्देशिका अग्रिम में बनाई जानी चाहिए।
यहां हम noauto विकल्पों का उपयोग करते हैं, जिसका अर्थ है कि FS स्टार्टअप पर नहीं लगाया जाएगा (मैं सिस्टम एफएस के माध्यम से नेटवर्क एफएस को माउंट करना पसंद करता हूं) और दिल की धड़कन = स्थानीय, जिसका अर्थ है प्रत्येक नोड पर दिल की धड़कन सेवा का उपयोग करना। एक वैश्विक दिल की धड़कन भी है, जो बड़े समूहों के लिए अधिक उपयुक्त है।
अगला, आप सामग्री के सिंक्रनाइज़ेशन को माउंट
/ मीडिया / साझा कर सकते हैं और जांच सकते हैं।
हो गया! नतीजतन, हमें स्केलेबिलिटी और सभ्य प्रदर्शन के साथ कम या ज्यादा दोष-सहिष्णु भंडारण मिलता है।