এই নিবন্ধের প্রথম অংশে, "কেন একটি রেডিস এন্টারপ্রাইজ অ্যাক্টিভ-অ্যাকটিভ ডেটাবেসে একটি ডাইনোমাইট ডেটাবেস স্থানান্তর করুন?", আমরা ডাইনোমাইট এবং রেডিস এন্টারপ্রাইজের আর্কিটেকচার এবং বৈশিষ্ট্যগুলির তুলনা করেছি৷ আমরা দেখিয়েছি কিভাবে Redis Enterprise আপনাকে একটি বৈশিষ্ট্য সমৃদ্ধ, সহজে পরিচালনাযোগ্য উপায়ে রেডিস এন্টারপ্রাইজকে জিও-ডিস্ট্রিবিউট করতে সাহায্য করতে পারে এবং সমসাময়িক লেখার মধ্যে দ্বন্দ্ব নিয়ে চিন্তা না করে।
পার্ট II ডিনোমাইট থেকে রেডিস এন্টারপ্রাইজে যাওয়ার জন্য উপলব্ধ মাইগ্রেশন বিকল্পগুলি বর্ণনা করবে৷
৷মনে রাখবেন যে এর পরে রেডিস এন্টারপ্রাইজের স্ব-পরিচালিত অফারটিকে "রেডিস এন্টারপ্রাইজ সফ্টওয়্যার" হিসাবে উল্লেখ করা হবে এবং পরিচালিত অফারটিকে "রেডিস এন্টারপ্রাইজ ক্লাউড" বা "ক্লাউড সাবস্ক্রিপশন" হিসাবে উল্লেখ করা হবে৷
আপনার ডাইনোমাইট ডাটাবেস স্থানান্তর করা হচ্ছে
আসুন ব্যবহারিক হয়ে উঠি এবং দেখি কিভাবে আমরা দুই ধরনের মাইগ্রেশন চালাতে পারি:
- রেডিস এন্টারপ্রাইজের আমদানি/রপ্তানি বৈশিষ্ট্য ব্যবহার করে মাইগ্রেশন
- রেডিস এন্টারপ্রাইজের রেপ্লিকাঅফ বৈশিষ্ট্য ব্যবহার করে মাইগ্রেশন, যাকে অ্যাক্টিভ-প্যাসিভও বলা হয়
দৃষ্টান্তের উদ্দেশ্যে, ধরা যাক আমাদের একটি ডাইনোমাইট ক্লাস্টার রয়েছে যা দুটি ডেটাসেন্টার বিস্তৃত:dc-a এবং dc-b। প্রতিটি ডেটাসেন্টারে একটি র্যাক থাকে এবং প্রতিটি র্যাক দুটি নোডের সমন্বয়ে গঠিত, যার মধ্যে ডেটাসেট বিতরণ করা হয়।
যদি আমরা আমাদের ডিনোমাইটের স্থাপত্যের বর্ণনা মনে রাখি, আমরা জানি যে প্রতিটি ডাইনোমাইট র্যাকে সম্পূর্ণ ডেটাসেট থাকে।
তাই, আমরা আমাদের মাইগ্রেশনের সুযোগকে সীমিত করতে পারি, তা আমদানি/রপ্তানি হোক বা সক্রিয়-প্যাসিভ হোক, আমাদের ডাইনোমাইট সেটআপের মধ্যে একটি একক র্যাকে।
আসুন rack-1-dc-a বাছাই করি এবং অনুমান করি যে এর দুটি নোডের আইপি নিম্নরূপ:
- a1:10.0.0.1
- a2:10.0.0.2
স্পষ্টতার উদ্দেশ্যে, এখানে আমাদের ডিনোমাইট সেটআপের জন্য ইয়ামল কনফিগারেশন রয়েছে:
#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 চালিত চারটি জিসিপি ভিএম।
- ভিএমগুলি একাধিক অঞ্চলে বিস্তৃত একই ভিপিসিতে থাকে৷ ৷
- 7379 এবং 7380 খোলা পোর্ট, যেহেতু ডাইনোমাইট সেই পোর্টগুলিকে ডেটা প্রতিলিপি করার জন্য ব্যবহার করে - ইয়ামল কনফিগারেশনে "dyn_port"৷
- 6379 পোর্টের প্রতিটি নোডে Redis OSS চলছে – yaml কনফিগারেশনে "সার্ভার" দেখুন।
- ডাইনোমাইট 8379 পোর্টে ক্লায়েন্টদের অনুরোধ শোনে (যেমন redis-cli -h 10.0.0.1 -p 8379) – yaml কনফিগারেশনে "শুনুন" দেখুন।
এখন যেহেতু আমরা আমাদের সেটআপ বুঝতে পেরেছি এবং সিদ্ধান্ত নিয়েছি যে আমরা আমাদের মাইগ্রেশনের জন্য কোন র্যাক ব্যবহার করব, আসুন একটি Redis Enterprise ডাটাবেস তৈরি করি৷
আপনার রেডিস এন্টারপ্রাইজ সক্রিয়-সক্রিয় ডেটাবেস তৈরি করুন
যেহেতু এই নিবন্ধটির উদ্দেশ্য আপনার ক্লাস্টার সেট আপ বা আপনার ডাটাবেস কিভাবে তৈরি করবেন তা ব্যাখ্যা করা নয়, তাই আপনার সক্রিয়-সক্রিয় ডাটাবেস আপ এবং চালু করার জন্য দয়া করে নীচের ডকুমেন্টেশন দেখুন:
- রেডিস এন্টারপ্রাইজ সফটওয়্যার ক্লাস্টার
- ক্লাউড সাবস্ক্রিপশন
- সফ্টওয়্যার ডাটাবেস তৈরি
- সফ্টওয়্যার সক্রিয়-সক্রিয় ডেটাবেস তৈরি
- ক্লাউড ডাটাবেস তৈরি
আমাদের দুটি মাইগ্রেশন পরিস্থিতি পরীক্ষা করার জন্য, আমি দুটি রেডিস এন্টারপ্রাইজ সফ্টওয়্যার ক্লাস্টার বিস্তৃত একটি সক্রিয়-সক্রিয় ডাটাবেস তৈরি করেছি - একটি ইউরোপে এবং একটি মার্কিন যুক্তরাষ্ট্রে প্রতিটি ক্লাস্টার উবুন্টু 18.04 চালিত তিনটি ভিএম দ্বারা গঠিত। জেনে রাখুন যে আপনি যদি অ্যাক্টিভ-অ্যাক্টিভ ছাড়াই একটি ডাটাবেস তৈরি করেন, তবে মাইগ্রেশনের ধাপগুলি একই হবে, যদি না এই নিবন্ধে অন্যথায় উল্লেখ করা হয়।
আসুন আমাদের প্রথম ধরনের মাইগ্রেশন নিয়ে এগিয়ে যাই।
আমদানি/রপ্তানি বৈশিষ্ট্য ব্যবহার করে মাইগ্রেশন
রেডিস ওএসএস রেডিস ডেটাবেস ব্যাকআপ ফাইল, বা RDB নামে একটি স্থিরতা বিকল্প সরবরাহ করে, যা আপনার ডেটাসেটের পয়েন্ট-ইন-টাইম স্ন্যাপশটগুলি সম্পাদন করে, হয় নির্দিষ্ট বিরতিতে বা যখন সেভ বা বিজিএসএভিই কমান্ড দ্বারা ট্রিগার হয়৷
এই স্ন্যাপশটগুলি .rdb ফাইলগুলিতে সংরক্ষিত হয়, যা পরবর্তীতে RDB ফাইল হিসাবে উল্লেখ করা হয়। আমরা সেগুলিকে আমাদের ডিনোমাইট সার্ভার থেকে রপ্তানি করব এবং আমাদের রেডিস এন্টারপ্রাইজ ডাটাবেসে আমদানি করব৷ এই সমাধানের সাথে, নোট করুন যে একটি ডেল্টা স্থানান্তর সম্ভব নয় এবং ডেটার আকারের উপর নির্ভর করে আমদানিতে কিছুটা সময় লাগতে পারে৷
গুরুত্বপূর্ণ:রেডিস এন্টারপ্রাইজের নন-জিও ডিস্ট্রিবিউটেড ডেটাবেস এবং অ্যাক্টিভ-অ্যাকটিভ ডেটাবেসের মধ্যে একটি বড় পার্থক্য রয়েছে:
- নন জিও-ডিস্ট্রিবিউটেড ডাটাবেস:RDB ফাইল ইম্পোর্ট করার সময়, সমস্ত বিদ্যমান ডাটাবেস বিষয়বস্তু মুছে ফেলা হবে।
- সক্রিয়-সক্রিয় ডেটাবেস:আপনি RDB ফাইল আমদানি করতে পারেন এবং আপনার বিদ্যমান ডেটাসেটে একত্রিত করতে পারেন। এর মানে হল যে আপনি আমদানির আগে এবং সময়কালে আপনার সক্রিয়-সক্রিয় ডাটাবেসে ট্র্যাফিক লেখা পাঠানো শুরু করতে পারেন। মনযোগ দিন - আপনি যদি আপনার সক্রিয়-সক্রিয় ডাটাবেসে কী লিখছেন যা ইতিমধ্যেই ডাইনোমাইট-এ বিদ্যমান, তাহলে পরবর্তী আমদানি পুরানো মানগুলির সাথে নতুন মানগুলিকে ওভাররাইট করতে পারে ! এর জন্য সতর্ক পরিকল্পনা প্রয়োজন৷
ডাইনোমাইট থেকে রেডিস এন্টারপ্রাইজে RDB ফাইল সহ ডেটা স্থানান্তর করার উপায় নিম্নরূপ:
- ডাইনোমাইট ডাটাবেসে ট্র্যাফিক বন্ধ করুন এবং, আপনি যদি সাবধানে আপনার মাইগ্রেশনের পরিকল্পনা করে থাকেন এবং একটি অ্যাক্টিভ-অ্যাকটিভ ডাটাবেস ব্যবহার করছেন, তাহলে রেডিস এন্টারপ্রাইজ ডাটাবেসে কাটওভার করুন।
- আরডিবি ফাইল হিসাবে প্রতিটি নোডের ডেটা (আমাদের ক্ষেত্রে a1 এবং a2) রপ্তানি করুন৷
- রিডিস এন্টারপ্রাইজ ক্লাস্টারে অ্যাক্সেসযোগ্য এমন একটি অবস্থানে RDB ফাইলগুলি আপলোড করুন (যেমন, একটি Google ক্লাউড স্টোরেজ বালতি, AWS S3 বাকেট, FTP সার্ভার, ইত্যাদি)
- আরডিবি ফাইলগুলিকে রেডিস এন্টারপ্রাইজ ডাটাবেসে আমদানি করুন।
- রেডিস এন্টারপ্রাইজ ডাটাবেসের কাটওভার।
আসুন উপরের ধাপগুলো আরও বিস্তারিতভাবে দেখি।
ঐচ্ছিক:প্রতিটি নোডে Redis OSS কনফিগারেশন ফাইল সম্পাদনা করুন
আপনার ডাইনোমাইট নোডগুলিতে চলমান Redis OSS দৃষ্টান্তগুলির কনফিগারেশন ফাইলগুলি ডিফল্টরূপে /etc/redis-এ অবস্থিত থাকে যদি আপনি এটি "apt-get" দিয়ে ইনস্টল করে থাকেন, অথবা যদি আপনি নিজেই Redis OSS তৈরি করে থাকেন তবে আপনার Redis ফোল্ডারে। এই ফাইলটিকে “redis.conf” বলা হয়।
আপনার প্রিয় পাঠ্য সম্পাদকের সাথে এই ফাইলটি খুলুন এবং "dbfilename" নির্দেশিকা অনুসন্ধান করুন৷ প্রতিটি নোডে ফাইলের নাম পরিবর্তন করুন, যেমন
- নোড1-এ “dump1.rdb”,
- নোড২-এ “dump2.rdb”।
এটি নিশ্চিত করে যে আমরা যখন আমাদের RDB ফাইলগুলিকে বাহ্যিক সঞ্চয়স্থানে রপ্তানি করি, তখন তাদের একই নাম থাকবে না। আপনি এটি এড়িয়ে যেতে পারেন এবং স্ন্যাপশট নেওয়ার পরে তাদের নাম পরিবর্তন করতে পারেন যদি আপনি চান৷
ঐচ্ছিকভাবে, আপনি এটিও করতে পারেন:
- যে ডিরেক্টরিতে RDB ফাইলগুলি "dir" নির্দেশের সাথে সংরক্ষণ করা হবে সেটি পরিবর্তন করুন৷
- স্ন্যাপশটিংয়ের ব্যবধান পরিবর্তন করুন বা স্বয়ংক্রিয় স্ন্যাপশটিং অক্ষম করুন। এই টিউটোরিয়ালে, আমরা স্ন্যাপশটিং ট্রিগার করতে সেভ রেডিস কমান্ড ব্যবহার করব, যাতে আমরা ট্রাফিক বন্ধ করার পরে সম্পূর্ণ ডেটাসেট ডাম্প করার বিষয়ে নিশ্চিত হতে পারি।
মনে রাখবেন যে Redis OSS কনফিগারেশন ফাইলগুলি সম্পাদনা করার পরে, আপনাকে Redis OSS সার্ভারটি পুনরায় চালু করতে হবে যাতে আপনার পরিবর্তনগুলি বিবেচনায় নেওয়া হয়৷
ডেটা ডাম্প করুন
এখন পোর্ট 8379 এর মাধ্যমে আপনার ডাইনোমাইট ডাটাবেসে আসা ট্র্যাফিক বন্ধ করুন। আবার, আপনি যদি একটি অ্যাক্টিভ-অ্যাকটিভ ডাটাবেসে ইম্পোর্ট করে থাকেন এবং আপনার মাইগ্রেশনের পরিকল্পনা করে থাকেন যাতে আমদানির সময় কোনো দুর্ঘটনাজনিত ওভাররাইট হওয়ার ঝুঁকি না থাকে, তাহলে আপনি ট্র্যাফিক কমাতে পারেন। আপনার সক্রিয়-সক্রিয় ডাটাবেস।
redis-cli চালু করুন। পোর্ট 8379, ডাইনোমাইটের শোনার পোর্ট ব্যবহার করবেন না। পরিবর্তে পোর্ট 6379 ব্যবহার করুন। এর কারণ হল আমাদের নোডে চলমান Redis OSS ইন্সট্যান্সের সাথে সংযোগ করতে হবে এবং আমাদের Dynomite ক্লাস্টারের সাথে নয়, যা SAVE কমান্ড সমর্থন করে না। আপনি কোনো কমান্ড-লাইন আর্গুমেন্ট ছাড়াই redis-cli চালাতে পারেন।
প্রতিটি নোডে, DBSIZE কমান্ড চালান। আপনি Redis OSS-এর প্রতিটি উদাহরণে সংরক্ষিত কীগুলির সংখ্যা পাবেন। মোট আমাদের ডাইনোমাইট ডাটাবেসের কী সংখ্যা হওয়া উচিত।
#a1 127.0.0.1:6379> dbsize (integer) 1323 #a2 127.0.0.1:6379> dbsize (integer) 1371
SAVE কমান্ড চালান এবং আপনার RDB ফাইলগুলি /var/lib/redis – বা আপনার নির্দিষ্ট করা যেকোন ডিরেক্টরিতে তৈরি হয়েছে কিনা তা পরীক্ষা করুন৷
বাহ্যিক সঞ্চয়স্থানে দুটি ডাম্প ফাইল রপ্তানি করুন
আমরা এখন আমাদের দুটি RDB ফাইল এক্সটার্নাল স্টোরেজে এক্সপোর্ট করতে প্রস্তুত৷
৷এই টিউটোরিয়ালের জন্য, আমি ফাইলগুলিকে Google ক্লাউডের ক্লাউড স্টোরেজে রপ্তানি করব, তবে আপনি অন্যান্য বাহ্যিক স্টোরেজ বিকল্পগুলিও ব্যবহার করতে পারেন যেমন একটি FTP সার্ভার, অন্য ক্লাউড পরিষেবা প্রদানকারী স্টোরেজ সলিউশন বা আপনার Redis এন্টারপ্রাইজ ক্লাস্টার থেকে অ্যাক্সেসযোগ্য একটি বাহ্যিক ডিস্ক। আপনি নীচে এই বিকল্পগুলি সম্পর্কে আরও তথ্য পেতে পারেন:
- রেডিস এন্টারপ্রাইজ সফটওয়্যার
- রেডিস এন্টারপ্রাইজ ক্লাউড
Google ক্লাউডে, আমি নিম্নলিখিতগুলি তৈরি করেছি:
- একটি পরিষেবা অ্যাকাউন্ট যার জন্য আমি একটি JSON কী তৈরি করেছি৷ ৷
- একটি ক্লাউড স্টোরেজ বাকেট যার জন্য আমি আমার পরিষেবা অ্যাকাউন্টে একটি স্টোরেজ লিগ্যাসি অবজেক্ট রিডার অনুমতি দিয়েছি৷
এখন প্রতিটি নোডের জন্য, আমরা নিম্নলিখিত কমান্ডটি চালাব:
gsutil cp path_to_dump_file gs://your_bucket
আমরা এখন আমাদের Google ক্লাউড বালতিতে আমাদের দুটি RDB ফাইল দেখতে পাচ্ছি:
আমরা এখন সেগুলিকে আমাদের সক্রিয়-সক্রিয় ডাটাবেসে আমদানি করতে প্রস্তুত৷
৷Redis Enterprise ডাটাবেসে ডাম্প ফাইল আমদানি করুন
Redis Enterprise UI এ লগ ইন করুন এবং আপনার সক্রিয়-সক্রিয় ডাটাবেস নির্বাচন করুন। যদি এই টিউটোরিয়ালটির মত হয়, আপনি একটি রেডিস এন্টারপ্রাইজ অ্যাক্টিভ-অ্যাকটিভ ডাটাবেস তৈরি করেছেন যা বেশ কয়েকটি ক্লাস্টারে বিস্তৃত, আপনি যেটি ক্লাস্টারের মাধ্যমে UI এর সাথে সংযোগ করতে পারেন। এই টিউটোরিয়ালে, আমরা আমাদের ইউরোপ (EU) ক্লাস্টার ব্যবহার করব।
আপনি যদি একটি ক্লাউড অ্যাক্টিভ-অ্যাকটিভ ডাটাবেস ব্যবহার করেন, তাহলে কেবল ক্লাউড UI-এর সাথে সংযোগ করুন এবং আপনার ডাটাবেস নির্বাচন করুন৷
আসুন আমাদের ডাটাবেসের কনফিগারেশন পৃষ্ঠায় নেভিগেট করি এবং আমদানি বোতামে ক্লিক করুন। উপযুক্ত স্টোরেজ টাইপ নির্বাচন করুন। আমাদের ক্ষেত্রে, এটি হবে Google ক্লাউড স্টোরেজ৷
৷আমরা এখন আমাদের দুটি RDB ফাইলের ক্লাউড স্টোরেজ পাথ যোগ করতে পারি যেমন:
- /helene-test/dump1.rdb
- /helene-test/dump2.rdb
এছাড়াও আমাদের নিম্নলিখিত তথ্য যোগ করতে হবে:
- ক্লায়েন্ট আইডি
- ক্লায়েন্ট ইমেল
- প্রাইভেট কী আইডি
- ব্যক্তিগত কী
আপনার Google ক্লাউড পরিষেবা অ্যাকাউন্টের জন্য একটি কী তৈরি করার সময় আপনি ডাউনলোড করা JSON কী ফাইলটিতে এই তথ্যটি পাওয়া যাবে।
মনে রাখবেন যে ব্যক্তিগত কী অদ্ভুতভাবে JSON ফাইলে ফর্ম্যাট করা হয়েছে; এতে উদ্ধৃতি চিহ্ন এবং নতুন লাইন রয়েছে। রেডিস এন্টারপ্রাইজ UI গ্রহণ করবে এমনভাবে দ্রুত ফর্ম্যাট করতে, শুধু একটি পাইথন ইন্টারপ্রেটার চালু করুন এবং এটি মুদ্রণ করুন:
print(WHOLE_COPIED_KEY)
আমাদের এখন নিম্নলিখিত আমদানি কনফিগারেশন আছে:
আমদানিতে ক্লিক করুন এবং আমদানি শেষ হওয়ার জন্য অপেক্ষা করুন যা ডাটাবেসের আকারের উপর নির্ভর করবে৷
ডাটাবেস এবং কাটওভার চেক করুন
redis-cli দিয়ে, আপনার Redis Enterprise ডাটাবেসের শেষ পয়েন্টের সাথে সংযোগ করুন। কিছু কী পড়ার চেষ্টা করুন এবং আপনার কাছে সঠিক মোট সংখ্যক কী আছে কিনা তা পরীক্ষা করতে DBSIZE কমান্ড চালান৷
redis-12000.internal.helene-eu-cluster.demo.redislabs.com:12000> dbsize (integer) 2694
পাশাপাশি অ্যাক্টিভ-অ্যাকটিভ জিও-ডুপ্লিকেশন চেক করতে ভুলবেন না! শুধু অন্য ক্লাস্টারের ডাটাবেস এন্ডপয়েন্টের সাথে সংযোগ করুন, আমাদের ক্ষেত্রে এখানে, ইউ.এস. একটি, এবং আপনি যে কীগুলি পাবেন তা পরীক্ষা করুন৷
আপনার মাইগ্রেশন এখন শেষ। আপনি যদি ইতিমধ্যে এটি না করে থাকেন তবে আপনি আপনার ডাটাবেসের ট্র্যাফিক কমাতে পারেন৷
৷ReplicaOf বৈশিষ্ট্য ব্যবহার করে মাইগ্রেশন
এখন একটা ক্রমাগত মাইগ্রেশন চালাই।
Redis এন্টারপ্রাইজ বৈশিষ্ট্য 'ReplicaOf' (Redis Cloud UI-তে অ্যাক্টিভ-প্যাসিভও বলা হয়) আমাদের দুটি রেডিস ডাটাবেসের মধ্যে ক্রমাগত ডেটা প্রতিলিপি করতে দেয়। প্রধান সুবিধা হল প্রাথমিক সিঙ্ক্রোনাইজেশন সম্পন্ন হওয়ার পরে এটি ডেল্টাগুলির প্রতিলিপি তৈরি করে, যার মানে প্রায় কোনও পর্যবেক্ষণ করা অ্যাপ্লিকেশন-সাইড ডাউনটাইম নেই৷
ধাপগুলো হল:
- ডাইনোমাইট ডাটাবেস এবং সক্রিয়-সক্রিয় ডাটাবেসের মধ্যে একটি প্রতিলিপি লিঙ্ক স্থাপন করুন
- প্রাথমিক সিঙ্ক্রোনাইজেশন সম্পূর্ণ না হওয়া পর্যন্ত অপেক্ষা করুন
- ডাইনোমাইট ডাটাবেসে ট্রাফিক বন্ধ করুন
- অপেক্ষা করুন যতক্ষণ না ডেল্টা প্রতিলিপি করা হয়
- ডাটাবেসের মধ্যে ReplicaOf লিঙ্কটি মুছুন
- সক্রিয়-সক্রিয় ডাটাবেসের কাটওভার
ReplicaOf একটি সক্রিয়-প্যাসিভ উপায়ে ব্যবহার করার উদ্দেশ্যে করা হয়েছে। তার মানে লক্ষ্যটিকে প্যাসিভ বলে ধরে নেওয়া হয়, এবং এটি সহ্য করা প্রয়োজন যাতে লক্ষ্যটি সম্পূর্ণরূপে পুনরায় সিঙ্ক্রোনাইজ করা যায় (টার্গেট ডাটাবেসের ফ্লাশ + সোর্স ডাটাবেস থেকে সিঙ্ক)।
মাইগ্রেশন শুরু করার আগে, আসুন কিছু নিরাপত্তা দিক নিয়ে আলোচনা করি।
আপনার Dynomite সেটআপে Redis OSS-এর জন্য নিরাপত্তা কনফিগারেশন
প্রথমত, আপনার ডাইনোমাইট র্যাক যে নেটওয়ার্কে বাস করে তার জন্য 6379 পোর্ট সহ কাস্টম TCP-এর জন্য আপনাকে একটি অন্তর্মুখী নিয়ম যোগ করতে হবে।
দ্বিতীয়ত, উভয় ডাইনোমাইট নোডের Redis OSS কনফিগারেশন ফাইল আপডেট করা প্রয়োজন। ডিফল্টরূপে, Redis শুধুমাত্র IPv4 এবং IPv6 (যদি পাওয়া যায়) লুপব্যাক ইন্টারফেস ঠিকানাগুলিতে শোনে। এর মানে Redis OSS শুধুমাত্র একই হোস্ট থেকে ক্লায়েন্ট সংযোগ গ্রহণ করতে সক্ষম হবে যা এটি চলছে। আমাদের Redis OSS এর "বাইন্ড" নির্দেশিকা আপডেট করতে হবে যাতে Redis OSS আমাদের Redis Enterprise ক্লাস্টার হোস্ট থেকে সংযোগগুলি শুনতে পারে৷
এটি করার দুটি উপায় রয়েছে:
- রেডিস ওএসএসকে শুধুমাত্র পিয়ারড ভিপিসি-তে একটি মেশিন থেকে আসা সংযোগগুলি শুনতে দিন – প্রস্তাবিত এবং আরও নিরাপদ
- Redis OSS-কে সমস্ত হোস্টের দ্বারা অ্যাক্সেস করার অনুমতি দিন - নিরাপদ নয়, বিশেষ করে যেহেতু Dynomite ডাটাবেস পাসওয়ার্ড সমর্থন করে না
আসুন সেই দুটি বিকল্প নিয়ে বিস্তারিত আলোচনা করি।
বিকল্প 1 – ভিপিসি পিয়ারিং সহ
প্রথম বিকল্পটি হল আপনার রেডিস এন্টারপ্রাইজ ক্লাস্টার যে ভিপিসিতে আপনার ডিনোমাইট র্যাক থাকে সেই ভিপিসিকে পিয়ার করা। অনুগ্রহ করে মনে রাখবেন, যদি আমাদের মত, আপনি একটি সক্রিয়-সক্রিয় ডাটাবেস তৈরি করেন, এটি যেকোনো ক্লাস্টারে থাকতে পারে। আগের মতো, আমরা আমাদের ইউরোপ (EU) ক্লাস্টার প্রদর্শনের জন্য ব্যবহার করব।
একবার আপনি আপনার নেটওয়ার্কগুলি পিয়ার করার পরে, আপনাকে শুধুমাত্র redis.conf ফাইলে "বাইন্ড" নির্দেশিকা সম্পাদনা করতে হবে:ডিফল্ট লুপব্যাক ইন্টারফেস ঠিকানাগুলির পরে আপনার ডিনোমাইট মেশিনের ব্যক্তিগত আইপি যোগ করুন৷
র্যাকের সমস্ত নোডের জন্য এটি করুন এবং এটিই! আপনার Redis OSS দৃষ্টান্তগুলি পুনরায় চালু করতে ভুলবেন না।
বিকল্প 2 – ভিপিসি পিয়ারিং ছাড়াই
আপনি যদি আপনার নেটওয়ার্কগুলি পিয়ার করতে না পারেন বা না চান, তাহলে আপনাকে প্রতিটি নোডে নিম্নলিখিত উপায়ে Redis OSS কনফিগারেশন ফাইল আপডেট করতে হবে:
- "বাইন্ড" নির্দেশে মন্তব্য করুন, যা ইন্টারনেটে সবার কাছে আপনার Redis OSS দৃষ্টান্ত প্রকাশ করবে
- "সুরক্ষিত-মোড" কে "না" এ সেট করুন, যাতে অন্য হোস্টের ক্লায়েন্টরা Redis-এর সাথে সংযোগ করতে পারে এমনকি যদি কোনো প্রমাণীকরণ কনফিগার করা না থাকে, অথবা ইন্টারফেসের একটি নির্দিষ্ট সেট "বাইন্ড" নির্দেশিকা ব্যবহার করে স্পষ্টভাবে তালিকাভুক্ত না হয়।
গুরুত্বপূর্ণ: এই শেষ ধাপটি প্রয়োজনীয় কারণ ডাইনোমাইট রেডিসের OSS AUTH কমান্ড সমর্থন করে না, যা আমাদের একটি ডাটাবেস পাসওয়ার্ড সেট করতে বাধা দেয়। অতএব, আপনি যদি কোন ফায়ারওয়াল ব্যবহার না করেন তাহলে কে ব্যবহার করা পোর্টের সাথে কানেক্ট করবে তা নিয়ন্ত্রণ করতে, কেউ Redis OSS উদাহরণের সাথে সংযোগ করতে পারে এবং এর ডেটা অ্যাক্সেস/পরিবর্তন/মুছে ফেলতে পারে। শুধুমাত্র আপনার রেডিস এন্টারপ্রাইজ ক্লাস্টারের হোস্টে পোর্ট 6379 খুলুন।
আপনি যদি সত্যিই একটি পাসওয়ার্ড ব্যবহার করতে চান, আপনি করতে পারেন. কিন্তু এটি একটি অবিচ্ছিন্ন মাইগ্রেশন চালানো অসম্ভব করে তুলবে, কারণ আপনাকে নিম্নলিখিতগুলি করতে হবে:
- ডাইনোমাইট ডাটাবেসে ট্রাফিক বন্ধ করুন
- ডাটাবেসের জন্য একটি পাসওয়ার্ড সেট করতে "requirepass" নির্দেশিকা সম্পাদনা করুন। এই বিন্দু থেকে, আপনি পোর্ট 8379 ব্যবহার করে আপনার ডাইনোমাইট ডাটাবেসে কোনো লেখার ট্রাফিক পাঠাতে পারবেন না, কারণ ডাটাবেস অ্যাক্সেস করতে AUTH কমান্ডের প্রয়োজন হবে
- নিচে বর্ণিত ReplicaOf ব্যবহার করে মাইগ্রেশন করুন
- রেডিস এন্টারপ্রাইজ ডাটাবেসে ট্রাফিক কাটুন
আরও একটি নিরাপত্তা বিবেচনা এবং আমরা আমাদের মাইগ্রেশন শুরু করতে প্রস্তুত!
ঐচ্ছিক – TLS সক্ষম করুন
আপনার ডেটাতে অননুমোদিত অ্যাক্সেস রোধ করতে, Redis Enterprise TLS প্রোটোকল সমর্থন করে৷
৷আপনি যদি রেডিস এন্টারপ্রাইজ সফ্টওয়্যার ব্যবহার করেন তবে আপনি এটিকে বিশেষভাবে রেপ্লিকাঅফ যোগাযোগের জন্য কনফিগার করতে পারেন। আপনি যদি রেডিস এন্টারপ্রাইজ ক্লাউড ব্যবহার করেন, আপনি সাধারণভাবে TLS সক্ষম করতে পারেন।
ডাটাবেসের মধ্যে ReplicaOf লিঙ্ক সেট করুন
Redis Enterprise UI-তে, আসুন আমাদের সক্রিয়-সক্রিয় ডাটাবেস কনফিগারেশন পৃষ্ঠায় নেভিগেট করি এবং সম্পাদনা ক্লিক করুন৷
আমাদের কাছে Active-Passive/ReplicaOf সক্ষম করার বিকল্প আছে। একবার আমরা করে ফেলি, আমরা নিম্নলিখিত ফর্ম্যাটে উত্স যোগ করতে পারি :
redis://:@IP:port
অনুগ্রহ করে নোট করুন:
- ReplicaOf সর্বোচ্চ ৩২টি উৎসের অনুমতি দেয়। এর মানে হল যে আপনি যদি একটি ডাইনোমাইট র্যাকে 32টির বেশি নোড জুড়ে আপনার ডেটাসেট বিতরণ করে থাকেন তবে আপনি এই বিকল্পটি ব্যবহার করতে পারবেন না
- যদি আপনি VPC পিয়ারিং ব্যবহার করে থাকেন, তাহলে আপনার মেশিনের ব্যক্তিগত আইপি ব্যবহার করা উচিত
- যদি আপনি VPC পিয়ারিং ব্যবহার না করে থাকেন:
- আপনার মেশিনের পাবলিক আইপি ব্যবহার করা উচিত
- আপনি যদি আপনার ডাটাবেসে একটি পাসওয়ার্ড সেট করার সিদ্ধান্ত নেন (এবং একটি এককালীন মাইগ্রেশন চালানোর জন্য), পাসওয়ার্ডটি নিম্নরূপ প্রদান করা উচিত:redis://:password@IP:port৷
আমাদের ক্ষেত্রে, ভিপিসি পিয়ারিংয়ের সাথে, আমাদের উত্সগুলি এইরকম দেখায়:
মাইগ্রেশন শুরু করুন
এখন আসুন নিম্নলিখিত পদক্ষেপগুলি গ্রহণ করি:
- Redis Enterprise UI-তে আপডেট ক্লিক করুন,
- প্রাথমিক সিঙ্ক্রোনাইজেশন শেষ হওয়ার জন্য অপেক্ষা করুন,
- ডাইনোমাইট ডাটাবেসে ট্রাফিক বন্ধ করুন,
- ডেল্টা সিঙ্ক্রোনাইজ হওয়ার জন্য অপেক্ষা করুন,
- ReplicaOf নিষ্ক্রিয় করতে আবার সক্রিয়-সক্রিয় ডাটাবেস আপডেট করুন,
- সক্রিয়-সক্রিয় ডাটাবেসে ট্রাফিক শুরু করুন।
আপনার ডেটা পরীক্ষা করুন
আগের মত, redis-cli দিয়ে আপনার ডাটাবেসের সাথে সংযোগ করুন এবং পরীক্ষা করুন যে আপনার ডেটা স্থানান্তরিত হয়েছে। অন্যান্য ক্লাস্টার/অন্যান্য স্থানীয় এন্ডপয়েন্টের সাথে সংযোগ করে সক্রিয়-সক্রিয় জিও-ডুপ্লিকেশন পরীক্ষা করুন।
উপসংহার
রেডিসকে অনেক বছর ধরে ডেভেলপারদের দ্বারা সবচেয়ে প্রিয় ডাটাবেসের নাম দেওয়া হয়েছে। আপনি যদি ডাইনোমাইট ব্যবহার করেন তবে সম্ভবত আপনি রেডিসকেও পছন্দ করেন। Redis, Redis OSS এবং Redis Enterprise উভয়েরই আবাসস্থলে, আমরা আপনার সংস্থাকে রেডিসকে আরও পরিচালনাযোগ্য উপায়ে ভূ-বন্টন করতে সাহায্য করতে পারি, যেখানে দ্বন্দ্ব সমাধানের জন্য সর্বোচ্চ একাডেমিক মান বজায় রাখা হয়।