Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Redis

अपने डायनामाइट डेटाबेस को रेडिस एंटरप्राइज एक्टिव-एक्टिव डेटाबेस में कैसे माइग्रेट करें

इस लेख के भाग I में, "डायनोमाइट डेटाबेस को रेडिस एंटरप्राइज एक्टिव-एक्टिव डेटाबेस में माइग्रेट क्यों करें?", हमने डायनामाइट और रेडिस एंटरप्राइज के आर्किटेक्चर और सुविधाओं की तुलना की। हमने दिखाया है कि कैसे Redis Enterprise सुविधा संपन्न, आसानी से प्रबंधनीय तरीके से Redis Enterprise को भू-वितरित करने में आपकी मदद कर सकता है, और समवर्ती लेखन के बीच संघर्ष के बारे में चिंता न करें।

भाग II डायनामाइट से रेडिस एंटरप्राइज में जाने के लिए उपलब्ध माइग्रेशन विकल्पों का वर्णन करेगा।

ध्यान दें कि इसके बाद Redis Enterprise की स्व-प्रबंधित पेशकश को "Redis Enterprise Software" के रूप में संदर्भित किया जाएगा और प्रबंधित पेशकश को "Redis Enterprise Cloud" या "क्लाउड सदस्यता" के रूप में नोट किया जाएगा।

अपना डायनामाइट डेटाबेस माइग्रेट करना

आइए व्यावहारिक हो जाएं और देखें कि हम दो प्रकार के माइग्रेशन कैसे चला सकते हैं:

  1. Redis Enterprise की आयात/निर्यात सुविधा का उपयोग करके माइग्रेशन
  2. Redis Enterprise की ReplicaOf सुविधा का उपयोग करके माइग्रेशन, जिसे एक्टिव-पैसिव भी कहा जाता है

उदाहरण के लिए, मान लें कि हमारे पास एक डायनामाइट क्लस्टर है जिसमें दो डेटासेंटर फैले हुए हैं:dc-a और dc-b। प्रत्येक डेटासेंटर में एक रैक होता है, और प्रत्येक रैक दो नोड्स से बना होता है, जिसके बीच डेटासेट वितरित किया जाता है।

अपने डायनामाइट डेटाबेस को रेडिस एंटरप्राइज एक्टिव-एक्टिव डेटाबेस में कैसे माइग्रेट करें

अगर हमें डायनामाइट की वास्तुकला का अपना विवरण याद है, तो हम जानते हैं कि प्रत्येक डायनामाइट रैक में पूरा डेटासेट होता है।

इसलिए, हम अपने प्रवासन के दायरे को सीमित कर सकते हैं, चाहे वह आयात/निर्यात हो या सक्रिय-निष्क्रिय, हमारे डायनामाइट सेटअप के भीतर एक ही रैक तक।

आइए रैक-1-डीसी-ए चुनें और मान लें कि इसके दो नोड्स के आईपी इस प्रकार हैं:

  • a1:10.0.0.1
  • a2:10.0.0.2

स्पष्टता के उद्देश्य से, हमारे डायनामाइट सेटअप के लिए yaml कॉन्फ़िगरेशन यहां दिया गया है:

#a1
dyn_o_mite:
  datacenter: dc-a
  dyn_listen: 10.0.0.1:7379
  dyn_port: 7379
  dyn_seed_provider: simple_provider
  dyn_seeds:
  - 10.0.0.3:7379:rack1:dc-a:4294967294
  - 10.0.0.4:7379:rack1:dc-b:4294967294
  - 10.0.0.2:7379:rack1:dc-b:2147483647
  listen: 0.0.0.0:8379
  rack: rack1
  servers:
  - 127.0.0.1:6379:1
  timeout: 150000
  tokens: 2147483647
  secure_server_option: datacenter
  pem_key_file: /root/dynomite/conf/dynomite.pem
  data_store: 0
  stats_listen: 127.0.0.1:22222
  read_consistency : DC_QUORUM
  write_consistency : DC_QUORUM

#a2
dyn_o_mite:
  datacenter: dc-a
  dyn_listen: 10.0.0.3:7379
  dyn_port: 7379
  dyn_seed_provider: simple_provider
  dyn_seeds:
  - 10.0.0.1:7379:rack1:dc-a:2147483647
  - 10.0.0.4:7379:rack1:dc-b:4294967294
  - 10.0.0.2:7379:rack1:dc-b:2147483647
  listen: 0.0.0.0:8379
  rack: rack1
  servers:
  - 127.0.0.1:6379:1
  timeout: 150000
  tokens: 4294967294
  secure_server_option: datacenter
  pem_key_file: /root/dynomite/conf/dynomite.pem
  data_store: 0
  stats_listen: 127.0.0.1:22222
  read_consistency : DC_QUORUM
  write_consistency : DC_QUORUM

#b1
dyn_o_mite:
  datacenter: dc-b
  dyn_listen: 10.0.0.2:7379
  dyn_port: 7379
  dyn_seed_provider: simple_provider
  dyn_seeds:
  - 10.0.0.4:7379:rack1:dc-b:4294967294
  - 10.0.0.1:7379:rack1:dc-a:4294967294
  - 10.0.0.3:7379:rack1:dc-a:2147483647
  listen: 0.0.0.0:8379
  rack: rack1
  servers:
  - 127.0.0.1:6379:1
  timeout: 150000
  tokens: 2147483647
  secure_server_option: datacenter
  pem_key_file: /root/dynomite/conf/dynomite.pem
  data_store: 0
  stats_listen: 127.0.0.1:22222
  read_consistency : DC_QUORUM
  write_consistency : DC_QUORUM

#b2
dyn_o_mite:
  datacenter: dc-b
  dyn_listen: 10.0.0.4:7379
  dyn_port: 7379
  dyn_seed_provider: simple_provider
  dyn_seeds:
  - 10.0.0.2:7379:rack1:dc-b:2147483647
  - 10.0.0.1:7379:rack1:dc-a:4294967294
  - 10.0.0.3:7379:rack1:dc-a:2147483647
  listen: 0.0.0.0:8379
  rack: rack1
  servers:
  - 127.0.0.1:6379:1
  timeout: 150000
  tokens: 4294967294
  secure_server_option: datacenter
  pem_key_file: /root/dynomite/conf/dynomite.pem
  data_store: 0
  stats_listen: 127.0.0.1:22222
  read_consistency : DC_QUORUM
  write_consistency : DC_QUORUM

इस कॉन्फ़िगरेशन और इस ट्यूटोरियल के परीक्षण के लिए उपयोग किए गए सेटअप पर कुछ अवलोकन:

  • उबंटू 18.04 पर चलने वाले चार जीसीपी वीएम।
  • VMs एक ही VPC में कई क्षेत्रों में रहते हैं।
  • खोले हुए पोर्ट 7379 और 7380, क्योंकि डायनामाइट yaml कॉन्फ़िगरेशन में डेटा - "dyn_port" को दोहराने के लिए उन पोर्ट का उपयोग करता है।
  • Redis OSS पोर्ट 6379 पर प्रत्येक नोड पर चल रहा है - yaml कॉन्फ़िगरेशन में "सर्वर" देखें।
  • डायनोमाइट पोर्ट 8379 पर क्लाइंट के अनुरोधों को सुनता है (उदा. redis-cli -h 10.0.0.1 -p 8379) - yaml कॉन्फ़िगरेशन में "सुनो" देखें।

अब जब हम अपने सेटअप को समझ गए हैं और यह तय कर लिया है कि हम अपने माइग्रेशन के लिए किस रैक का उपयोग करेंगे, तो चलिए एक Redis Enterprise डेटाबेस बनाते हैं।

अपना Redis Enterprise Active-Active Database बनाएँ

चूंकि इस लेख का उद्देश्य यह बताना नहीं है कि अपना क्लस्टर कैसे सेट करें या अपना डेटाबेस कैसे बनाएं, कृपया अपने सक्रिय-सक्रिय डेटाबेस को ऊपर और चलाने के लिए नीचे दिए गए दस्तावेज़ देखें:

  • रेडिस एंटरप्राइज सॉफ्टवेयर क्लस्टर
  • क्लाउड सदस्यता
  • सॉफ़्टवेयर डेटाबेस निर्माण
  • सॉफ़्टवेयर सक्रिय-सक्रिय डेटाबेस निर्माण
  • क्लाउड डेटाबेस निर्माण

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

आइए अपने पहले प्रकार के माइग्रेशन के साथ आगे बढ़ें।

आयात/निर्यात सुविधा का उपयोग करके माइग्रेशन

Redis OSS Redis डेटाबेस बैकअप फ़ाइलें, या RDB नामक एक दृढ़ता विकल्प प्रदान करता है, जो आपके डेटासेट के पॉइंट-इन-टाइम स्नैपशॉट करता है, या तो निर्दिष्ट अंतराल पर या जब SAVE या BGSAVE कमांड द्वारा ट्रिगर किया जाता है।

वे स्नैपशॉट .rdb फ़ाइलों में सहेजे जाते हैं, जिन्हें इसके बाद RDB फ़ाइलों के रूप में संदर्भित किया जाता है। हम उन्हें अपने डायनामाइट सर्वर से निर्यात करेंगे और उन्हें हमारे रेडिस एंटरप्राइज डेटाबेस में आयात करेंगे। इस समाधान के साथ, ध्यान दें कि डेल्टा माइग्रेशन संभव नहीं है और डेटा के आकार के आधार पर आयात में कुछ समय लग सकता है।

महत्वपूर्ण:Redis Enterprise के गैर-जियो वितरित डेटाबेस और सक्रिय-सक्रिय डेटाबेस के बीच एक बड़ा अंतर है:

  • गैर भू-वितरित डेटाबेस:RDB फ़ाइलें आयात करते समय, सभी मौजूदा डेटाबेस सामग्री मिटा दी जाएगी।
  • सक्रिय-सक्रिय डेटाबेस:आप RDB फ़ाइलें आयात कर सकते हैं और उन्हें अपने मौजूदा डेटासेट में मर्ज कर सकते हैं। इसका मतलब है कि आप आयात से पहले और उसके दौरान अपने सक्रिय-सक्रिय डेटाबेस में लेखन ट्रैफ़िक भेजना शुरू कर सकते हैं। ध्यान दें - यदि आप अपने सक्रिय-सक्रिय डेटाबेस के लिए कुंजियां लिख रहे हैं जो पहले से ही डायनामाइट में मौजूद है, तो बाद के आयात पुराने मानों के साथ नए मानों को अधिलेखित कर सकते हैं ! इसके लिए सावधानीपूर्वक योजना बनाने की आवश्यकता है।

RDB फ़ाइलों के साथ Dynomite से Redis Enterprise में डेटा माइग्रेट करने का तरीका इस प्रकार है:

  • डायनोमाइट डेटाबेस पर ट्रैफ़िक रोकें और, यदि आपने अपने माइग्रेशन की सावधानीपूर्वक योजना बनाई है, और एक सक्रिय-सक्रिय डेटाबेस का उपयोग कर रहे हैं, तो रेडिस एंटरप्राइज डेटाबेस में कटौती करें।
  • प्रत्येक नोड के डेटा (हमारे मामले में a1 और a2) को RDB फ़ाइलों के रूप में निर्यात करें।
  • RDB फ़ाइलों को ऐसे स्थान पर अपलोड करें जो Redis Enterprise क्लस्टर (जैसे, Google क्लाउड स्टोरेज बकेट, AWS S3 बकेट, FTP सर्वर, आदि) तक पहुंच योग्य हो
  • RDB फ़ाइलों को Redis Enterprise डेटाबेस में आयात करें।
  • Redis Enterprise डेटाबेस में कटौती करें।

आइए ऊपर दिए गए चरणों को और विस्तार से देखें।

वैकल्पिक:प्रत्येक नोड पर Redis OSS कॉन्फ़िगरेशन फ़ाइलों को संपादित करें

यदि आपने इसे "apt-get" के साथ स्थापित किया है, या अपने Redis फ़ोल्डर में यदि आपने स्वयं Redis OSS बनाया है, तो आपके Dynomite नोड्स पर चल रहे Redis OSS उदाहरणों में उनकी कॉन्फ़िगरेशन फ़ाइलें डिफ़ॉल्ट रूप से /etc/redis में स्थित होती हैं। इस फ़ाइल को "redis.conf" कहा जाता है।

इस फ़ाइल को अपने पसंदीदा टेक्स्ट एडिटर के साथ खोलें और "dbfilename" निर्देश खोजें। प्रत्येक नोड पर फ़ाइल का नाम बदलें, जैसे 

  • नोड1 पर "dump1.rdb",
  • नोड2 पर "dump2.rdb"।

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

वैकल्पिक रूप से, आप यह भी कर सकते हैं:

  • उस निर्देशिका को बदलें जिसमें RDB फ़ाइलें "dir" निर्देश के साथ संग्रहीत की जाएंगी।
  • स्नैपशॉटिंग अंतराल बदलें या स्वचालित स्नैपशॉटिंग अक्षम करें। इस ट्यूटोरियल में, हम स्नैपशॉट को ट्रिगर करने के लिए सेव रेडिस कमांड का उपयोग करेंगे, ताकि ट्रैफ़िक बंद करने के बाद हम पूरा डेटासेट डंप करना सुनिश्चित कर सकें।
अपने डायनामाइट डेटाबेस को रेडिस एंटरप्राइज एक्टिव-एक्टिव डेटाबेस में कैसे माइग्रेट करें

ध्यान दें कि Redis OSS कॉन्फ़िगरेशन फ़ाइलों को संपादित करने के बाद, आपको Redis OSS सर्वर को पुनरारंभ करना होगा ताकि आपके परिवर्तनों को ध्यान में रखा जा सके।

डेटा डंप करें

अब पोर्ट 8379 के माध्यम से अपने डायनामाइट डेटाबेस में आने वाले ट्रैफ़िक को रोकें। फिर से, यदि आप एक सक्रिय-सक्रिय डेटाबेस में आयात कर रहे हैं और अपने माइग्रेशन की सावधानीपूर्वक योजना बनाई है ताकि आयात के दौरान किसी भी आकस्मिक ओवरराइट का जोखिम न हो, तो आप ट्रैफ़िक में कटौती कर सकते हैं आपका सक्रिय-सक्रिय डेटाबेस।

रेडिस-क्ली लॉन्च करें। पोर्ट 8379, डायनामाइट के सुनने वाले पोर्ट का उपयोग न करें। इसके बजाय पोर्ट 6379 का उपयोग करें। ऐसा इसलिए है क्योंकि हमें अपने नोड पर चल रहे रेडिस ओएसएस इंस्टेंस से कनेक्ट करने की आवश्यकता है, न कि हमारे डायनामाइट क्लस्टर से, जो सेव कमांड का समर्थन नहीं करता है। आप बिना किसी कमांड लाइन तर्क के बस redis-cli चला सकते हैं।

प्रत्येक नोड पर, DBSIZE कमांड चलाएँ। आपको रेडिस ओएसएस के प्रत्येक उदाहरण पर संग्रहीत चाबियों की संख्या मिल जाएगी। हमारे डायनामाइट डेटाबेस में कुल कुंजियों की संख्या होनी चाहिए।

#a1
127.0.0.1:6379> dbsize
(integer) 1323

#a2
127.0.0.1:6379> dbsize
(integer) 1371

सेव कमांड चलाएँ और जांचें कि आपकी आरडीबी फाइलें /var/lib/redis - या आपके द्वारा निर्दिष्ट किसी भी निर्देशिका में बनाई गई हैं।

दो डंप फ़ाइलों को बाहरी संग्रहण में निर्यात करें

अब हम अपनी दो RDB फ़ाइलों को बाह्य संग्रहण में निर्यात करने के लिए तैयार हैं।

इस ट्यूटोरियल के लिए, मैं फ़ाइलों को Google क्लाउड के क्लाउड स्टोरेज में निर्यात करूंगा, लेकिन आप अन्य बाहरी स्टोरेज विकल्पों का भी उपयोग कर सकते हैं जैसे कि एफ़टीपी सर्वर, अन्य क्लाउड सर्विस प्रोवाइडर स्टोरेज सॉल्यूशन, या आपके रेडिस एंटरप्राइज क्लस्टर से एक्सेस करने योग्य बाहरी डिस्क। आप उन विकल्पों के बारे में अधिक जानकारी नीचे पा सकते हैं:

  • रेडिस एंटरप्राइज सॉफ्टवेयर
  • रेडिस एंटरप्राइज क्लाउड

Google क्लाउड में, मैंने निम्नलिखित बनाए हैं:

  • एक सेवा खाता जिसके लिए मैंने JSON कुंजी बनाई है।
  • एक क्लाउड स्टोरेज बकेट जिसके लिए मैंने अपने सर्विस अकाउंट को स्टोरेज लीगेसी ऑब्जेक्ट रीडर की अनुमति दी है।

अब प्रत्येक नोड के लिए, हम निम्न कमांड चलाएंगे:

gsutil cp path_to_dump_file gs://your_bucket

अब हम अपनी दो RDB फ़ाइलें अपने Google क्लाउड बकेट में देख सकते हैं:

अपने डायनामाइट डेटाबेस को रेडिस एंटरप्राइज एक्टिव-एक्टिव डेटाबेस में कैसे माइग्रेट करें

अब हम उन्हें अपने सक्रिय-सक्रिय डेटाबेस में आयात करने के लिए तैयार हैं।

रेडिस एंटरप्राइज़ डेटाबेस में डंप फ़ाइलें आयात करें

Redis Enterprise UI में लॉग इन करें और अपने सक्रिय-सक्रिय डेटाबेस का चयन करें। यदि इस ट्यूटोरियल की तरह, आपने कई समूहों में फैले एक रेडिस एंटरप्राइज एक्टिव-एक्टिव डेटाबेस बनाया है, तो आप किसी भी क्लस्टर के माध्यम से यूआई से जुड़ सकते हैं। इस ट्यूटोरियल में, हम अपने यूरोप (ईयू) क्लस्टर का उपयोग करेंगे।

यदि आप क्लाउड सक्रिय-सक्रिय डेटाबेस का उपयोग कर रहे हैं, तो बस क्लाउड UI से कनेक्ट करें और अपना डेटाबेस चुनें।

आइए हमारे डेटाबेस के कॉन्फ़िगरेशन पृष्ठ पर नेविगेट करें और आयात बटन पर क्लिक करें। उपयुक्त संग्रहण प्रकार का चयन करें। हमारे मामले में, यह Google क्लाउड स्टोरेज होगा।

अब हम अपनी दो RDB फ़ाइलों का क्लाउड स्टोरेज पथ जोड़ सकते हैं जैसे:

  • /helene-test/dump1.rdb
  • /helene-test/dump2.rdb

हमें निम्नलिखित जानकारी भी जोड़नी होगी:

  • क्लाइंट आईडी
  • क्लाइंट ईमेल
  • निजी कुंजी आईडी
  • निजी कुंजी

यह जानकारी आपके Google क्लाउड सेवा खाते के लिए कुंजी बनाते समय आपके द्वारा डाउनलोड की गई JSON कुंजी फ़ाइल में पाई जा सकती है।

ध्यान दें कि निजी कुंजी को JSON फ़ाइल में अजीब तरह से स्वरूपित किया गया है; इसमें उद्धरण चिह्न और नई पंक्तियाँ हैं। इसे जल्दी से इस तरह से प्रारूपित करने के लिए कि रेडिस एंटरप्राइज यूआई स्वीकार करेगा, बस एक पायथन दुभाषिया लॉन्च करें और इसे प्रिंट करें:

print(WHOLE_COPIED_KEY)

अब हमारे पास निम्न आयात कॉन्फ़िगरेशन है:

अपने डायनामाइट डेटाबेस को रेडिस एंटरप्राइज एक्टिव-एक्टिव डेटाबेस में कैसे माइग्रेट करें

आयात पर क्लिक करें और आयात समाप्त होने की प्रतीक्षा करें जो डेटाबेस के आकार पर निर्भर करेगा।

डेटाबेस और कटओवर जांचें

रेडिस-क्ली के साथ, अपने रेडिस एंटरप्राइज डेटाबेस के एंडपॉइंट से कनेक्ट करें। कुछ कुंजियों को पढ़ने की कोशिश करें और DBSIZE कमांड चलाकर देखें कि आपके पास कुंजियों की कुल संख्या सही है।

redis-12000.internal.helene-eu-cluster.demo.redislabs.com:12000> dbsize
(integer) 2694

एक्टिव-एक्टिव जियो-डुप्लीकेशन को भी चेक करना न भूलें! बस दूसरे क्लस्टर के डेटाबेस एंडपॉइंट से कनेक्ट करें, हमारे मामले में यहां, यू.एस. एक, और आपको मिलने वाली चाबियों की संख्या की जांच करें।

आपका प्रवास अब समाप्त हो गया है। यदि आपने पहले से ऐसा नहीं किया है तो आप अपने डेटाबेस में आने वाले ट्रैफ़िक को कम कर सकते हैं।

ReplicaOf सुविधा का उपयोग करके माइग्रेशन

अब एक सतत प्रवास चलाते हैं।

रेडिस एंटरप्राइज फीचर 'रेप्लिकाऑफ' (जिसे रेडिस क्लाउड यूआई में एक्टिव-पैसिव भी कहा जाता है) हमें दो रेडिस डेटाबेस के बीच डेटा को लगातार दोहराने की अनुमति देता है। मुख्य लाभ यह है कि यह प्रारंभिक सिंक्रनाइज़ेशन के बाद डेल्टा को दोहराता है, जिसका अर्थ है कि लगभग कोई भी एप्लिकेशन-साइड डाउनटाइम नहीं देखा गया है।

चरण हैं:

  • डायनोमाइट डेटाबेस और एक्टिव-एक्टिव डेटाबेस के बीच एक रेप्लिकाऑफ लिंक स्थापित करें
  • प्रारंभिक सिंक्रनाइज़ेशन पूरा होने तक प्रतीक्षा करें
  • डायनोमाइट डेटाबेस पर ट्रैफ़िक रोकें
  • डेल्टा के दोहराए जाने तक प्रतीक्षा करें
  • डेटाबेस के बीच रेप्लिकाऑफ लिंक हटाएं
  • सक्रिय-सक्रिय डेटाबेस में कटओवर

रेप्लिकाऑफ को सक्रिय-निष्क्रिय तरीके से उपयोग करने का इरादा है। इसका मतलब है कि लक्ष्य को निष्क्रिय माना जाता है, और इसे सहन करने की आवश्यकता होती है ताकि लक्ष्य पूरी तरह से पुन:सिंक्रनाइज़ हो जाए (लक्ष्य डेटाबेस का फ्लश + स्रोत डेटाबेस से सिंक)।

माइग्रेशन शुरू करने से पहले, आइए कुछ सुरक्षा पहलुओं पर चर्चा करें।

आपके डायनामाइट सेटअप में Redis OSS के लिए सुरक्षा कॉन्फ़िगरेशन

सबसे पहले, आपको उस नेटवर्क के लिए 6379 पोर्ट के साथ कस्टम टीसीपी के लिए एक इनबाउंड नियम जोड़ना होगा जिसमें आपका डायनामाइट रैक रहता है।

दूसरे, दोनों डायनामाइट नोड्स पर रेडिस ओएसएस कॉन्फ़िगरेशन फ़ाइलों को अद्यतन करने की आवश्यकता है। डिफ़ॉल्ट रूप से, Redis केवल IPv4 और IPv6 (यदि उपलब्ध हो) लूपबैक इंटरफ़ेस पतों पर सुनता है। इसका मतलब है कि रेडिस ओएसएस केवल उसी होस्ट से क्लाइंट कनेक्शन स्वीकार करने में सक्षम होगा जिस पर वह चल रहा है। हमें Redis OSS के "बाइंड" निर्देश को अपडेट करने की आवश्यकता है ताकि Redis OSS हमारे Redis Enterprise क्लस्टर होस्ट से कनेक्शन सुन सके।

ऐसा करने के दो तरीके हैं:

  • रेडिस ओएसएस केवल मशीन से आने वाले कनेक्शनों को एक पीयरेड वीपीसी में सुनें - अनुशंसित और अधिक सुरक्षित
  • रेडिस ओएसएस को सभी होस्टों द्वारा एक्सेस करने की अनुमति दें - सुरक्षित नहीं है, खासकर जब से डायनामाइट डेटाबेस पासवर्ड का समर्थन नहीं करता है

आइए उन दो विकल्पों पर विस्तार से चर्चा करें।

विकल्प 1 - VPC पीयरिंग के साथ

पहला विकल्प वीपीसी को पीयर करना है जिसमें आपका डायनामाइट रैक वीपीसी के साथ रहता है जिसमें आपका रेडिस एंटरप्राइज क्लस्टर रहता है। कृपया ध्यान दें कि, यदि हमारी तरह, आपने एक सक्रिय-सक्रिय डेटाबेस बनाया है, तो यह किसी भी क्लस्टर में रह सकता है। पहले की तरह, हम प्रदर्शन के लिए अपने यूरोप (ईयू) क्लस्टर का उपयोग करेंगे।

एक बार जब आप अपने नेटवर्क को देख लेते हैं, तो आपको बस redis.conf फ़ाइल में "बाइंड" निर्देश को संपादित करने की आवश्यकता होती है:डिफ़ॉल्ट लूपबैक इंटरफ़ेस पते के बाद अपनी डायनामाइट मशीन का निजी आईपी जोड़ें।

अपने डायनामाइट डेटाबेस को रेडिस एंटरप्राइज एक्टिव-एक्टिव डेटाबेस में कैसे माइग्रेट करें

रैक में सभी नोड्स के लिए ऐसा करें और बस! अपने Redis OSS इंस्टेंस को पुनरारंभ करना न भूलें।

विकल्प 2 - VPC पीयरिंग के बिना

यदि आप अपने नेटवर्क को पीयर नहीं कर सकते हैं या नहीं करना चाहते हैं, तो आपको प्रत्येक नोड पर रेडिस ओएसएस कॉन्फ़िगरेशन फ़ाइल को निम्न तरीके से अपडेट करना होगा:

  • टिप्पणी करें "बाइंड" निर्देश, जो आपके Redis OSS उदाहरण को इंटरनेट पर सभी के सामने प्रदर्शित करेगा
  • "संरक्षित-मोड" को "नहीं" पर सेट करें, ताकि अन्य होस्ट के क्लाइंट रेडिस से कनेक्ट हो सकें, भले ही कोई प्रमाणीकरण कॉन्फ़िगर न किया गया हो, और न ही "बाइंड" निर्देश का उपयोग करके इंटरफ़ेस का एक विशिष्ट सेट स्पष्ट रूप से सूचीबद्ध किया गया हो।
अपने डायनामाइट डेटाबेस को रेडिस एंटरप्राइज एक्टिव-एक्टिव डेटाबेस में कैसे माइग्रेट करें

महत्वपूर्ण: यह अंतिम चरण आवश्यक है क्योंकि डायनामाइट रेडिस के OSS AUTH कमांड का समर्थन नहीं करता है, जो हमें डेटाबेस पासवर्ड सेट करने से रोकता है। इसलिए, यदि आप यह नियंत्रित करने के लिए फ़ायरवॉल का उपयोग नहीं करते हैं कि उपयोग में आने वाले पोर्ट से कौन जुड़ता है, कोई भी रेडिस ओएसएस इंस्टेंस से कनेक्ट हो सकता है और इसके डेटा को एक्सेस/बदल/हटा सकता है। केवल अपने Redis Enterprise क्लस्टर के होस्ट के लिए पोर्ट 6379 खोलें।

यदि आप वास्तव में पासवर्ड का उपयोग करना चाहते हैं, तो आप कर सकते हैं। लेकिन निरंतर माइग्रेशन चलाना असंभव बना देगा, क्योंकि आपको निम्न कार्य करने होंगे:

  • डायनोमाइट डेटाबेस का ट्रैफ़िक रोकें
  • डेटाबेस के लिए पासवर्ड सेट करने के लिए "आवश्यकता पास" निर्देश संपादित करें। इस बिंदु से, आप पोर्ट 8379 का उपयोग करके अपने डायनामाइट डेटाबेस में कोई भी लिखित ट्रैफ़िक नहीं भेज पाएंगे, क्योंकि डेटाबेस तक पहुँचने के लिए AUTH कमांड की आवश्यकता होगी
  • रेप्लिकाऑफ का उपयोग करके माइग्रेशन को नीचे बताए अनुसार पूरा करें
  • Redis Enterprise डेटाबेस में ट्रैफ़िक को कम करें

एक और सुरक्षा विचार और हम अपना माइग्रेशन शुरू करने के लिए तैयार हैं!

वैकल्पिक - TLS सक्षम करें

आपके डेटा तक अनधिकृत पहुंच को रोकने के लिए, Redis Enterprise TLS प्रोटोकॉल का समर्थन करता है।

यदि आप रेडिस एंटरप्राइज सॉफ्टवेयर का उपयोग कर रहे हैं, तो आप इसे विशेष रूप से रेप्लिकाऑफ संचार के लिए कॉन्फ़िगर कर सकते हैं। यदि आप Redis Enterprise Cloud का उपयोग कर रहे हैं, तो आप सामान्य रूप से TLS को सक्षम कर सकते हैं।

ReplicaOf डेटाबेस के बीच लिंक सेट करें

Redis Enterprise UI में, हमारे सक्रिय-सक्रिय डेटाबेस कॉन्फ़िगरेशन पृष्ठ पर नेविगेट करें और संपादित करें पर क्लिक करें।

हमारे पास Active-Passive/ReplicaOf को सक्षम करने का विकल्प है। एक बार ऐसा करने के बाद, हम निम्नलिखित प्रारूप में स्रोत जोड़ सकते हैं:

redis://:@IP:port

कृपया ध्यान दें:

  • ReplicaOf अधिकतम 32 स्रोतों की अनुमति देता है। इसका मतलब है कि यदि आपने अपने डेटासेट को डायनामाइट रैक में 32 से अधिक नोड्स में वितरित किया है, तो आप इस विकल्प का उपयोग नहीं कर पाएंगे
  • यदि आपने वीपीसी पीयरिंग का उपयोग किया है, तो आपको अपनी मशीनों के निजी आईपी का उपयोग करना चाहिए
  • यदि आपने वीपीसी पीयरिंग का उपयोग नहीं किया है:
    • आपको अपनी मशीनों के सार्वजनिक आईपी का उपयोग करना चाहिए
    • यदि आपने अपने डेटाबेस में पासवर्ड सेट करने का निर्णय लिया है (और एक बार का माइग्रेशन चलाने के लिए), तो पासवर्ड निम्नानुसार प्रदान किया जाना चाहिए:redis://:password@IP:port.

हमारे मामले में, वीपीसी पीयरिंग के साथ, हमारे स्रोत इस तरह दिखते हैं:

अपने डायनामाइट डेटाबेस को रेडिस एंटरप्राइज एक्टिव-एक्टिव डेटाबेस में कैसे माइग्रेट करें

माइग्रेशन प्रारंभ करें

आइए अब निम्नलिखित कदम उठाएं:

  • Redis Enterprise UI में अपडेट पर क्लिक करें,
  • प्रारंभिक सिंक्रनाइज़ेशन समाप्त होने की प्रतीक्षा करें,
  • डायनोमाइट डेटाबेस का ट्रैफ़िक रोकें,
  • डेल्टा के सिंक्रनाइज़ होने की प्रतीक्षा करें,
  • ReplicaOf को अक्षम करने के लिए सक्रिय-सक्रिय डेटाबेस को फिर से अपडेट करें,
  • सक्रिय-सक्रिय डेटाबेस पर ट्रैफ़िक प्रारंभ करें।

अपना डेटा जांचें

पहले की तरह, अपने डेटाबेस को रेडिस-क्ली के साथ कनेक्ट करें और जांचें कि आपका डेटा माइग्रेट किया गया है। अन्य समूहों/अन्य स्थानीय समापन बिंदुओं से कनेक्ट करके सक्रिय-सक्रिय भू-दोहराव की जांच करें।

निष्कर्ष

कई वर्षों से डेवलपर्स द्वारा रेडिस को सबसे पसंदीदा डेटाबेस का नाम दिया गया है। यदि आप डायनामाइट का उपयोग कर रहे हैं, तो शायद यह इसलिए है क्योंकि आप रेडिस से भी प्यार करते हैं। रेडिस में, रेडिस ओएसएस और रेडिस एंटरप्राइज दोनों का घर, हम संघर्ष समाधान के लिए उच्चतम शैक्षणिक मानकों को ध्यान में रखते हुए, आपके संगठन को रेडिस को अधिक प्रबंधनीय तरीके से भू-वितरित करने में मदद कर सकते हैं।


  1. डायनोमाइट डेटाबेस को रेडिस एंटरप्राइज एक्टिव-एक्टिव डेटाबेस में माइग्रेट क्यों करें?

    2009 में इसके निर्माण के बाद से, Redis OSS का एक बहुत ही जीवंत ओपन सोर्स समुदाय रहा है। इसके चारों ओर कई उपकरण और उपयोगिताओं का विकास किया गया है और गैर-वितरित डेटास्टोर के लिए एक पीयर-टू-पीयर भू-वितरण परत डायनामाइट उनमें से एक है। डायनामाइट को नेटफ्लिक्स में इंजीनियरों की एक टीम द्वारा विकसित किया

  1. रेडिस मूव - रेडिस में एक से दूसरे डेटाबेस में कुंजी कैसे स्थानांतरित करें?

    इस ट्यूटोरियल में, हम सीखेंगे कि रेडिस डेटास्टोर में एक डेटाबेस से दूसरे डेटाबेस में एक कुंजी को कैसे स्थानांतरित किया जाए। इसके लिए हम एक COMMAND का उपयोग करेंगे - MOVE रेडिस-क्ली में। इस आदेश का उपयोग वर्तमान में चयनित डेटाबेस से निर्दिष्ट कुंजी को निकालने और उसी कुंजी को गंतव्य में डालने के लिए

  1. अपने WordPress डेटाबेस को कैसे साफ करें

    क्या आप एक तेज़ वर्डप्रेस वेबसाइट चाहते हैं? यदि ऐसा है, तो आपको अनावश्यक डेटा को हटाकर वर्डप्रेस डेटाबेस को साफ करना होगा। वर्डप्रेस डेटाबेस क्लीनअप एक महत्वपूर्ण रखरखाव कार्य है जो आपकी वेबसाइट पर पृष्ठ लोडिंग समय को कम करेगा। इसे अन्य प्रदर्शन तकनीकों जैसे कैशिंग पृष्ठों, छवियों को अनुकूलित करने