paint-brush
मिनिआईओ और सिस्टमडी के साथ क्लाउड स्टोरेज परिनियोजन को स्वचालित करनाद्वारा@minio
6,183 रीडिंग
6,183 रीडिंग

मिनिआईओ और सिस्टमडी के साथ क्लाउड स्टोरेज परिनियोजन को स्वचालित करना

द्वारा MinIO8m2023/08/10
Read on Terminal Reader

बहुत लंबा; पढ़ने के लिए

ऑब्जेक्ट स्टोरेज जैसी मिशन महत्वपूर्ण सेवा चलाते समय उपलब्धता बनाए रखने में स्वचालन एक लंबा रास्ता तय करता है। कई बादलों और वातावरणों में बड़े पैमाने पर संचालन के लिए स्वचालन एक आवश्यकता है। SystemD और MiniIO की मदद से आप अपने क्लाउड ऑब्जेक्ट स्टोरेज परिनियोजन को स्वचालित कर सकते हैं और सुनिश्चित कर सकते हैं कि सेवा जीवनचक्र सुचारू और सफलतापूर्वक प्रबंधित हो।
featured image - मिनिआईओ और सिस्टमडी के साथ क्लाउड स्टोरेज परिनियोजन को स्वचालित करना
MinIO HackerNoon profile picture
0-item
1-item
2-item

मिनिओ सबसे व्यापक रूप से कार्यान्वित ऑब्जेक्ट स्टोर्स में से एक है क्योंकि यह उच्च प्रदर्शन, बड़े पैमाने पर स्केलेबिलिटी, उच्च उपलब्धता प्रदान करता है और उद्योग-मानक एस 3 प्रोटोकॉल का पालन करता है। मिनिओ जबरदस्त प्रदर्शन करने में सक्षम है - हाल ही में बेंचमार्क ने GETs पर 325 GiB/s (349 GB/s) और PUTs पर 165 GiB/s (177 GB/s) केवल 32 नोड्स ऑफ-द-शेल्फ NVMe SSDs के साथ हासिल किया है। इससे कोई फर्क नहीं पड़ता कि आप मिनिओ कहाँ चलाते हैं - बेअर मेटल, वर्चुअल इंस्टेंसेस या कुबेरनेट्स - मिनिओ का प्रदर्शन और स्केलेबिलिटी डेटा लेक, एनालिटिक्स, एआई/एमएल और अधिक जैसे क्लाउड-नेटिव अनुप्रयोगों के लिए एक उत्कृष्ट आधार प्रदान करता है।


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


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


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


SystemD न केवल विभिन्न सेवाओं के बीच बहुमुखी है, बल्कि आप एक ही SystemD सेवा फ़ाइल ले सकते हैं और इसे कई ऑपरेटिंग सिस्टमों में उपयोग कर सकते हैं, जब तक कि ऑपरेटिंग सिस्टम अपनी सेवाओं के जीवनचक्र को प्रबंधित करने के लिए SystemD का भी उपयोग कर रहा है। यह स्वचालन को सरल बनाता है क्योंकि प्रारंभिक फ़ाइल बनाते समय आप उबंटू पर काम कर सकते हैं, लेकिन उसी फ़ाइल को तब तक CentOS/RedHat ऑपरेटिंग सिस्टम पर तैनात किया जा सकता है जब तक पथ और अन्य चीजें समान रहती हैं, जो कि ज्यादातर मामलों में होती हैं।


SystemD में कई मुख्य घटक हैं लेकिन उनमें से कुछ जिनका आप अक्सर सामना करेंगे वे हैं:


  • systemctl : इसका उपयोग प्रक्रियाओं को नियंत्रित करने के लिए किया जाता है, चाहे रोकना हो, शुरू करना हो या पुनः आरंभ करना हो। उपयोग किए जाने वाले सबसे आम आदेश हैं:
    • systemctl start <service>

    • systemctl stop <service>

    • systemctl restart <service>


  • जर्नलसीटीएल: सेवाओं के लिए लॉग जब वे अपना स्टार्टअप, शटडाउन और पुनरारंभ संचालन करते हैं। यदि कोई चीज़ ठीक से काम नहीं कर रही है तो यह जानकारी प्राप्त करने का एक अच्छा तरीका है। मेरे द्वारा उपयोग किया जाने वाला सबसे सामान्य कमांड, जो आपकी टर्मिनल विंडो को भरने के लिए पर्याप्त लॉग दिखाता है और अंत तक स्क्रॉल करता है:
    • journalctl -e -u <service>


इस गाइड में अधिकांश कमांड चलाने के लिए आपके पास `sudo` या रूट एक्सेस की आवश्यकता है क्योंकि SystemD कॉन्फ़िगरेशन फ़ाइलों को रूट के रूप में अनुमति की आवश्यकता होती है।


आप हमारी रिपॉजिटरी में मिनियो और सिस्टमडी के लिए अतिरिक्त निर्देश भी पा सकते हैं।

मिनिओ बाइनरी

  • अपस्ट्रीम से मिनिओ बाइनरी प्राप्त करें


 # wget https://dl.min.io/server/minio/release/linux-amd64/minio --2022-07-24 11:31:33-- https://dl.min.io/server/minio/release/linux-amd64/minio Resolving dl.min.io (dl.min.io)... 132.68.11.115, 138.118.66.212 Connecting to dl.min.io (dl.min.io)|132.68.11.115|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 96649216 (92M) [application/octet-stream] Saving to: 'minio' minio 100%[==========================================>] 92.17M 50.2MB/s in 1.8s 2022-07-24 11:31:35 (50.2 MB/s) - 'minio' saved [96649216/96649216]


  • इसे निष्पादन योग्य बनाएं ताकि SystemD MiniIO को एक सेवा के रूप में चला सके
 # chmod +x minio


  • इसे उस स्थान पर ले जाएं जो $PATH # mv minio /usr/local/bin/ के अंतर्गत निष्पादन योग्य है

सेवा फ़ाइल

मिनिआईओ को ऑपरेटिंग सिस्टम के आधार पर लिनक्स पर कुछ अलग तरीकों से स्थापित किया जा सकता है। RedHat/CentOS और इसके डेरिवेटिव .rpm पैकेज पर निर्भर हैं और डेबियन/उबंटू .deb पैकेज का उपयोग करते हैं। दोनों ही मामलों में, निम्न SystemD सेवा फ़ाइल इंस्टॉलेशन पैकेज में शामिल है।


हालाँकि, हमने मैन्युअल रूप से अपस्ट्रीम से मिनिओ बाइनरी प्राप्त की है, इसलिए हम मैन्युअल रूप से SystemD सेवा फ़ाइल बनाएंगे।


  • निम्नलिखित सामग्री के साथ /etc/systemd/system/minio.service पर एक SystemD फ़ाइल बनाने के लिए अपने पसंदीदा टेक्स्ट एडिटर का उपयोग करें।


 [Unit] Description=MinIO Documentation=https://docs.min.io Wants=network-online.target After=network-online.target AssertFileIsExecutable=/usr/local/bin/minio [Service] WorkingDirectory=/usr/local User=minio-user Group=minio-user ProtectProc=invisible EnvironmentFile=-/etc/default/minio ExecStartPre=/bin/bash -c "if [ -z \"${MINIO_VOLUMES}\" ]; then echo \"Variable MINIO_VOLUMES not set in /etc/default/minio\"; exit 1; fi" ExecStart=/usr/local/bin/minio server $MINIO_OPTS $MINIO_VOLUMES # Let systemd restart this service always Restart=always # Specifies the maximum file descriptor number that can be opened by this process LimitNOFILE=65536 # Specifies the maximum number of threads this process can create TasksMax=infinity # Disable timeout logic and wait until process is stopped TimeoutStopSec=infinity SendSIGKILL=no [Install] WantedBy=multi-user.target # Built for ${project.name}-${project.version} (${project.name})


  • Group=minio-user : मिनियो डेमॉन लिनक्स सिस्टम समूह के रूप में चलेगा। इसे निम्न आदेश का उपयोग करके बनाएं:


    • groupadd -r minio-user


  • User=minio-user : मिनियो डेमॉन लिनक्स सिस्टम उपयोगकर्ता के रूप में चलेगा। निम्नलिखित कमांड का उपयोग करके उपयोगकर्ता बनाएं:


    • useradd -M -r -g minio-user minio-user
      • -M : यह उपयोगकर्ता के लिए होम डायरेक्टरी बनाने से रोकता है क्योंकि यह एक सेवा है।
      • -r : सिस्टम उपयोगकर्ताओं के पास ट्रैकिंग उद्देश्यों के लिए एक अलग यूआईडी/जीआईडी श्रेणी है, यह ध्वज पूर्व निर्धारित सीमा से उपयोगकर्ता बनाएगा।
      • -g <group_name> : समूह के अंतर्गत उपयोगकर्ता को जोड़ने के लिए।


मिनिओ

वितरित सेटअप

मिनिओ सेवा शुरू करने से पहले कुछ पूर्वापेक्षाएँ हैं जिन्हें बेअर मेटल नोड पर स्थापित करना आवश्यक है।


  • निम्न संदेश से बचने के लिए एक नई डिस्क बनाएं और सुनिश्चित करें कि यह रूट वॉल्यूम के समान विभाजन पर नहीं है:
    • Error: Disk /mnt/disk1/minio is part of root disk, will not be used


  • अपने स्थानीय होस्ट पर 4 निर्देशिकाएँ बनाएँ जहाँ नई डिस्क अभी माउंट की गई थी, इस मामले में /mnt/data :


 mkdir -p /mnt/data/disk1 \ mkdir -p /mnt/data/disk2 \ mkdir -p /mnt/data/disk3 \ mkdir -p /mnt/data/disk4


  • MiniIO उपयोगकर्ता और समूह के साथ निर्देशिकाओं को chown
    • chown minio-user:minio-user /mnt/data/disk1 /mnt/data/disk2 /mnt/data/disk3 /mnt/data/disk4

पर्यावरण सेवा फ़ाइलें

  • इस फ़ाइल /etc/default/minio निम्नलिखित सामग्री से अद्यतन करें


 # Set the hosts and volumes MinIO uses at startup # The command uses MinIO expansion notation {x...y} to denote a # sequential series. # # The following example covers four MinIO hosts # with 4 drives each at the specified hostname and drive locations. # The command includes the port that each MinIO server listens on # (default 9000) MINIO_VOLUMES="https://minio1.example.com:9000/mnt/data/disk{1...4}/minio" # Set all MinIO server options # # The following explicitly sets the MinIO Console listen address to # port 9001 on all network interfaces. The default behavior is dynamic # port selection. MINIO_OPTS="--console-address :9001" # Set the root username. This user has unrestricted permissions to # perform S3 and administrative API operations on any resource in the # deployment. # # Defer to your organizations requirements for superadmin user name. MINIO_ROOT_USER=minioadmin # Set the root password # # Use a long, random, unique string that meets your organizations # requirements for passwords. MINIO_ROOT_PASSWORD=minioadmin # Set to the URL of the load balancer for the MinIO deployment # This value *must* match across all MinIO servers. If you do # not have a load balancer, set this value to to any *one* of the # MinIO hosts in the deployment as a temporary measure. MINIO_SERVER_URL="https://minio.example.net:9000"

मिनिओ प्रक्रिया प्रारंभ करें

  • हमारे पास सेवा को सक्षम करने और शुरू करने के लिए आवश्यक सभी चीजें हैं
 # systemctl enable minio.service # systemctl start minio.service


  • सेवा और लॉग की स्थिति जांचें
 # systemctl status minio.service # journalctl -e -u minio.service


  • सत्यापित करें कि मिनिओ सेवा आ गई है। लॉग में आपको कुछ इस जैसा देखना चाहिए:


 Aug 01 13:27:06 aj-test-3 systemd[1]: Starting MinIO... Aug 01 13:27:06 aj-test-3 systemd[1]: Started MinIO. Aug 01 13:27:07 aj-test-3 minio[3241]: Formatting 1st pool, 1 set(s), 4 drives per set. Aug 01 13:27:07 aj-test-3 minio[3241]: WARNING: Host minio1.example.com:9000 has more than 2 drives of set. A host fai> Aug 01 13:27:07 aj-test-3 minio[3241]: You are running an older version of MinIO released 4 days ago Aug 01 13:27:07 aj-test-3 minio[3241]: Update: Run `mc admin update` Aug 01 13:27:07 aj-test-3 minio[3241]: MinIO Object Storage Server Aug 01 13:27:07 aj-test-3 minio[3241]: Copyright: 2015-2022 MinIO, Inc. Aug 01 13:27:07 aj-test-3 minio[3241]: License: GNU AGPLv3 <https://www.gnu.org/licenses/agpl-3.0.html> Aug 01 13:27:07 aj-test-3 minio[3241]: Version: RELEASE.2022-07-26T00-53-03Z (go1.18.4 linux/amd64) Aug 01 13:27:07 aj-test-3 minio[3241]: Status: 4 Online, 0 Offline. Aug 01 13:27:07 aj-test-3 minio[3241]: API: https://minio.example.net:9000 Aug 01 13:27:07 aj-test-3 minio[3241]: Console: http://10.128.0.4:9001 http://127.0.0.1:9001 Aug 01 13:27:07 aj-test-3 minio[3241]: Documentation: https://docs.min.io

कंसोल में लॉग इन करें

ब्राउज़र का उपयोग करके, हमारे द्वारा पहले बनाए गए कॉन्फ़िगरेशन से MINIO_ROOT_USER और MINIO_ROOT_PASSWORD का उपयोग करके मिनियो कंसोल में लॉग इन करें।


 http://<server_host_ip>:9001/ 



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

SystemD मिनिओ वर्चुअल और बेयर मेटल परिनियोजन को सरल बनाता है

SystemD के साथ एकीकरण बहुत बहुमुखी है।


  • सेवा फ़ाइल का सिंटैक्स सभी सेवाओं में समान है

  • वही सेवा फ़ाइल SystemD का समर्थन करने वाले किसी भी OS पर काम करेगी

  • आप SystemD का उपयोग बेयर मेटल के साथ या AWS, GCP और Azure जैसे किसी भी क्लाउड में VM पर कर सकते हैं।

  • यह प्रारूप को मानकीकृत करके और तैनाती को स्वचालित करना आसान बनाकर DevOps के लिए स्वचालन में मदद कर सकता है।


ऑब्जेक्ट स्टोरेज जैसी मिशन महत्वपूर्ण सेवा चलाते समय उपलब्धता बनाए रखने में स्वचालन एक लंबा रास्ता तय करता है। कई बादलों और वातावरणों में बड़े पैमाने पर संचालन के लिए स्वचालन एक आवश्यकता है। SystemD और MiniIO की मदद से आप अपने क्लाउड ऑब्जेक्ट स्टोरेज परिनियोजन को स्वचालित कर सकते हैं और सुनिश्चित कर सकते हैं कि सेवा जीवनचक्र सुचारू और सफलतापूर्वक प्रबंधित हो।


प्रश्न मिले? आरंभ करना चाहते हैं? स्लैक पर हमसे संपर्क करें।


यहाँ भी प्रकाशित किया गया है.