কম্পিউটার টিউটোরিয়াল

ডাইনোমাইট থেকে রিডিস এন্টারপ্রাইজ অ্যাক্টিভ-অ্যাক্টিভে सहজ মাইগ্রেশন: ধাপে ধাপে গাইড

এই আর্টিকেলের পার্ট ১-এ, "কেন ডাইনোমাইট ডেটাবেসকে রিডিস এন্টারপ্রাইজ অ্যাক্টিভ-অ্যাক্টিভ ডেটাবেসে মাইগ্রেট করবেন?", আমরা ডাইনোমাইট এবং রিডিস এন্টারপ্রাইজের আর্কিটেকচার এবং ফিচারগুলোর তুলনা করেছি। আমরা দেখিয়েছি কীভাবে রিডিস এন্টারপ্রাইজ আপনাকে ফিচার-রিচ, সহজে পরিচালনাযোগ্য উপায়ে রিডিস এন্টারপ্রাইজকে জিও-ডিস্ট্রিবিউট করতে সাহায্য করতে পারে এবং কনকারেন্ট রাইটের কনফ্লিক্ট নিয়ে চিন্তা করতে হবে না।

পার্ট ২-এ ডাইনোমাইট থেকে রিডিস এন্টারপ্রাইজে মাইগ্রেশনের উপলব্ধ অপশনগুলো বর্ণনা করা হবে।

নোট: এখান থেকে রিডিস এন্টারপ্রাইজের সেলফ-ম্যানেজড অফারিংকে "রিডিস এন্টারপ্রাইজ সফ্টওয়্যার" এবং ম্যানেজড অফারিংকে "রিডিস এন্টারপ্রাইজ ক্লাউড" বা "ক্লাউড সাবস্ক্রিপশন" বলা হবে।

আপনার ডাইনোমাইট ডেটাবেস মাইগ্রেট করা

চলুন প্র্যাক্টিকালি দেখি কীভাবে দুটি ধরনের মাইগ্রেশন চালানো যায়:

  1. রিডিস এন্টারপ্রাইজের ইম্পোর্ট/এক্সপোর্ট ফিচার ব্যবহার করে মাইগ্রেশন
  2. রিডিস এন্টারপ্রাইজের রেপ্লিকা অফ ফিচার ব্যবহার করে মাইগ্রেশন, যাকে অ্যাক্টিভ-প্যাসিভও বলা হয়

ইলাস্ট্রেশনের উদ্দেশ্যে, ধরে নিই আমাদের দুটি ডেটাসেন্টারে फैला একটি ডাইনোমাইট ক্লাস্টার আছে: dc-a এবং dc-b। প্রতিটি ডেটাসেন্টারে একটি র‍‍‍্যাক, এবং প্রতিটি র‍‍‍্যাক দুটি নোড দিয়ে গঠিত, যাদের মাঝপথে ডেটাসেট বিতরণ করা থাকে।

ডাইনোমাইট থেকে রিডিস এন্টারপ্রাইজ অ্যাক্টিভ-অ্যাক্টিভে सहজ মাইগ্রেশন: ধাপে ধাপে গাইড

যদি আমরা ডাইনোমাইটের আর্কিটেকচারের বর্ণনা মনে রাখি, তবে আমরা জানি প্রতিটি ডাইনোমাইট র‍‍‍্যাক পুরো ডেটাসেট ধারণ করে।

সেজন্য, আমাদের মাইগ্রেশনের স্কোপ - ইম্পোর্ট/এক্সপোর্ট হোক বা অ্যাক্টিভ-প্যাসিভ - আমাদের ডাইনোমাইট সেটআপের একটি একক র‍‍‍্যাক तक সীমাবদ্ধ করা যাবে।

চলুন rack-1-dc-a বেছে নিই এবং ধরে নিই এর দুটি নোডের IP ঠিকানা নিম্নরূপ:

  • 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 

এই কনফিগারেশন এবং টিউটোরিয়ালের জন্য ব্যবহৃত সেটআপের ওপর কয়েকটি পর্যবেক্ষণ:

  • উবুন্টু ১৮.০৪ চালিত চারটি GCP VM।
  • VMগুলো একই VPC-তে অবস্থিত যেটি একাধিক রीজনে फैला हुआ।
  • পোর্ট ৭৩৭৯ এবং ৭৩৮০ খোলা রাখা হয়েছে, কারণ ডাইনোমাইট ডেটা রেপ্লিকেশনের জন্য এই পোর্টগুলো ব্যবহার করে - yaml কনফিগারেশনে "dyn_port"।
  • প্রতিটি নোডে পোর্ট ৬৩৭৯-এ রিডিস OSS চলছে - yaml কনফিগারেশনে "servers" দেখুন।
  • ডাইনোমাইট ক্লায়েন্টের অনুরোধের জন্য পোর্ট ৮৩৭৯-এ লিসেন করে (যেমন redis-cli -h 10.0.0.1 -p 8379) - yaml কনফিগারেশনে "listen" দেখুন।

এখন আমরা আমাদের সেটআপ বুঝতে পারছি এবং মাইগ্রেশনের জন্য কোন র‍‍‍্যাক ব্যবহার করব সেটি সিদ্ধান্ত নেয়েছি, চলুন একটি রিডিস এন্টারপ্রাইজ ডেটাবেস তৈরি করি।

আপনার রিডিস এন্টারপ্রাইজ অ্যাক্টিভ-অ্যাক্টিভ ডেটাবেস তৈরি করুন

যেহেতু এই আর্টিকেলের উদ্দেশ্য আপনার ক্লাস্টার সেটআপ বা ডেটাবেস তৈরি করার ব্যাখ্যা করা নয়, নিচের ডকুমেন্টেশনগুলো রেফার করে আপনার অ্যাক্টিভ-অ্যাক্টিভ ডেটাবেস চালু করুন:

  • রিডিস এন্টারপ্রাইজ সফ্টওয়্যার ক্লাস্টার
  • ক্লাউড সাবস্ক্রিপশন
  • সফ্টওয়্যার ডেটাবেস তৈরি
  • সফ্টওয়্যার অ্যাক্টিভ-অ্যাক্টিভ ডেটাবেস তৈরি
  • ক্লাউড ডেটাবেস তৈরি

আমাদের দুটি মাইগ্রেশন সিনারিও টেস্ট করার জন্য, আমি দুটি রিডিস এন্টারপ্রাইজ সফ্টওয়্যার ক্লাস্টারকে लेकर একটা অ্যাক্টিভ-অ্যাক্টিভ ডেটাবেস তৈরি করেছি - একটা ইউরোপে আরেকটা ইউএস-এ। প্রতিটি ক্লাস্টার তিনটি উবুন্টু ১৮.০৪ VM দিয়ে গঠিত। জানুন যে, যদি আপনি অ্যাক্টিভ-অ্যাক্টিভ ছাড়া ডেটাবেস তৈরি করেন, মাইগ্রেশনের ধাপগুলো একই থাকবে, যদি এই আর্টিকেলে অন্যথা নির্দেশ না করা হয়।

চলুন প্রথম ধরনের মাইগ্রেশনের দিকে যাই।

ইম্পোর্ট/এক্সপোর্ট ফিচার ব্যবহার করে মাইগ্রেশন

রিডিস OSS একটি পারসিস্টেন্স অপশন প্রদান করে যাকে রিডিস ডেটাবেস ব্যাকআপ ফাইল বা RDB বলা হয়, যা আপনার ডেটাসেটের পয়েন্ট-ইন-টাইম স্ন্যাপশট নেয়, নির্দিষ্ট ইন্টারভালে বা SAVE বা BGSAVE কমান্ড ট্রিগার করলে।

এই স্ন্যাপশটগুলো .rdb ফাইলে সংরক্ষিত হয়, এখানে পরে আমরা এদের RDB ফাইল বলব। আমরা এগুলো আমাদের ডাইনোমাইট সার্ভার থেকে এক্সপোর্ট করব এবং রিডিস এন্টারপ্রাইজ ডেটাবেসে ইম্পোর্ট করব। এই সমাধানের সাথে নোট করুন যে, ডেল্টা মাইগ্রেশন সম্ভব নয় এবং ইম্পোর্ট কিছুটা সময় নিতে পারে, ডেটার আকারের উপর নির্ভর করে।

গুরুত্বপূর্ণ: রিডিস এন্টারপ্রাইজের নন-জিও ডিস্ট্রিবিউটেড ডেটাবেস এবং অ্যাক্টিভ-অ্যাক্টিভ ডেটাবেসের মধ্যে বড় পার্থক্য রয়েছে:

  • নন জিও-ডিস্ট্রিবিউটেড ডেটাবেস: RDB ফাইল ইম্পোর্ট করার সময় সমস্ত বিদ্যমান ডেটাবেস কন্টেন্ট মুছে যাবে।
  • অ্যাক্টিভ-অ্যাক্টিভ ডেটাবেস: আপনি RDB ফাইল ইম্পোর্ট করে আপনার বিদ্যমান ডেটাসেটের সাথে মার্জ করতে পারেন। এর মানে আপনি ইম্পোর্টের আগে এবং sırasında আপনার অ্যাক্টিভ-অ্যাক্টিভ ডেটাবেসে রাইট ট্রাফিক পাঠাতে পারেন। চৌকস থাকুন - আপনি যদি আপনার অ্যাক্টিভ-অ্যাক্টিভ ডেটাবেসে এমন কী লিখেন যা ইতিমধ্যে ডাইনোমাইটে বিদ্যমান, পরবর্তী ইম্পোর্ট নতুন মানগুলোর পরিবর্তে পুরনো মান দিয়ে ওভাররাইট করতে পারে! এটি সতর্ক প্ল্যানিং প্রয়োজন।

RDB ফাইল ব্যবহার করে ডাইনোমাইট থেকে রিডিস এন্টারপ্রাইজে ডেটা মাইগ্রেট করার পদ্ধতি:

  • ডাইনোমাইট ডেটাবেসে ট্রাফিক বন্ধ করুন এবং, যদি আপনি সতর্কতার সাথে মাইগ্রেশন প্ল্যান করেছেন এবং অ্যাক্টিভ-অ্যাক্টিভ ডেটাবেস ব্যবহার করছেন, রিডিস এন্টারপ্রাইজ ডেটাবেসে কাটওভার করুন।
  • প্রতিটি নোডের ডেটা (আমাদের কেসে a1 এবং a2) RDB ফাইল হিসেবে এক্সপোর্ট করুন।
  • RDB ফাইলগুলো রিডিস এন্টারপ্রাইজ ক্লাস্টারের কাছে অ্যাক্সেসযোগ্য কোনো লোকেশনে আপলোড করুন (যেমন Google Cloud Storage বাকেট, AWS S3 বাকেট, FTP সার্ভার, ইত্যাদি)।
  • RDB ফাইলগুলো রিডিস এন্টারপ্রাইজ ডেটাবেসে ইম্পোর্ট করুন।
  • রিডিস এন্টারপ্রাইজ ডেটাবেসে কাটওভার করুন।

চলুন উপরের ধাপগুলো বিস্তারিত দেখি।

ঐচ্ছিক: প্রতিটি নোডে রিডিস OSS কনফিগারেশন ফাইল এডিট করুন

আপনার ডাইনোমাইট নোডগুলোর রিডিস OSS ইনস্ট্যান্সের কনফিগারেশন ফাইল ডিফল্টভাবে /etc/redis-এ থাকে যদি "apt-get" দিয়ে ইনস্টল করা হয়, অথবা আপনার রিডিস ফোল্ডারে যদি আপনি নিজে রিডিস OSS বিল্ড করে থাকেন। এই ফাইলটির নাম "redis.conf"।

এই ফাইলটি আপনার পছন্দের টেক্সট এডিটর দিয়ে খুলুন এবং "dbfilename" ডিরেক্টিভ খুঁজুন। প্রতিটি নোডে ফাইলের নাম পরিবর্তন করুন, যেমন

  • নোড ১-এ "dump1.rdb"
  • নোড ২-এ "dump2.rdb"

এটি নিশ্চিত করে যে যখন আমরা আমাদের RDB ফাইলগুলো এক্সটার্নাল স্টোরেজে এক্সপোর্ট করব, তাদের একই নাম থাকবে না। আপনি এটি স্কিপ করে স্ন্যাপশট নেওয়ার পর তাদের নাম পরিবর্তন করতে পারেন যদি পছন্দ করেন।

ঐচ্ছিকভাবে, আপনি এছাড়াও করতে পারেন:

  • "dir" ডিরেক্টিভ দিয়ে RDB ফাইলগুলো সংরক্ষণ হওয়ার ডিরেক্টরি পরিবর্তন করুন।
  • স্ন্যাপশটিং ইন্টারভাল পরিবর্তন করুন বা অটোম্যাটিক স্ন্যাপশটিং ডিজেবল করুন। এই টিউটোরিয়ালে, আমরা SAVE রিডিস কমান্ড ব্যবহার করব স্ন্যাপশটিং ট্রিগার করার জন্য, যাতে ট্রাফিক বন্ধ করার পর পুরো ডেটাসেট ডাম্প করা হয়েছে কিনা নিশ্চিত হই।
ডাইনোমাইট থেকে রিডিস এন্টারপ্রাইজ অ্যাক্টিভ-অ্যাক্টিভে सहজ মাইগ্রেশন: ধাপে ধাপে গাইড

নোট করুন যে রিডিস OSS কনফিগারেশন ফাইলগুলো এডিট করার পর, আপনাকে রিডিস OSS সার্ভার রিস্টার্ট করতে হবে যাতে পরিবর্তনগুলো ইফেক্টিভ হয়।

ডেটা ডাম্প করুন

এখন আপনার ডাইনোমাইট ডেটাবেসে পোর্ট ৮৩৭৯-এর মাধ্যমে আসা ট্রাফিক বন্ধ করুন। আবার, আপনি যদি অ্যাক্টিভ-অ্যাক্টিভ ডেটাবেসে ইম্পোর্ট করছেন এবং অকস্মাত ওভাররাইটের রিস্ক না থাকায় সতর্কতার সাথে মাইগ্রেশন প্ল্যান করেছেন, আপনি ট্রাফিক আপনার অ্যাক্টিভ-অ্যাক্টিভ ডেটাবেসে কাটওভার করতে পারেন।

redis-cli লঞ্চ করুন। পোর্ট ৮৩৭৯ ব্যবহার করবেন না, ডাইনোমাইটের লিসেনিং পোর্ট। বরং পোর্ট ৬৩৭৯ ব্যবহার করুন। কারণ আমাদের নোডে চলমান রিডিস OSS ইনস্ট্যান্সের সাথে কানেক্ট করতে হবে, ডাইনোমাইট ক্লাস্টারের সাথে নয়, যেটি SAVE কমান্ড সাপোর্ট করে না। আপনি কেবল redis-cli কোনো কমান্ড-লাইন আর্গুমেন্ট ছাড়া চালাতে পারেন।

প্রতিটি নোডে DBSIZE কমান্ড চালান। আপনি প্রতিটি রিডিস 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 Cloud-এর ক্লাউড স্টোরেজে এক্সপোর্ট করব, কিন্তু আপনি অন্যান্য এক্সটার্নাল স্টোরেজ অপশনও ব্যবহার করতে পারেন যেমন FTP সার্ভার, অন্য ক্লাউড সার্ভিস প্রোভাইডার স্টোরেজ সমাধান, বা আপনার রিডিস এন্টারপ্রাইজ ক্লাস্টার থেকে অ্যাক্সেসযোগ্য এক্সটার্নাল ডিস্ক। সেই অপশনগুলোর আরও তথ্যের জন্য নিচে দেখুন:

  • রিডিস এন্টারপ্রাইজ সফ্টওয়্যার
  • রিডিস এন্টারপ্রাইজ ক্লাউড

গুগল ক্লাউডে, আমি নিম্নলিখিত তৈরি করেছি:

  • একটি সার্ভিস অ্যাকাউন্ট যার জন্য আমি একটি JSON কী তৈরি করেছি।
  • একটি ক্লাউড স্টোরেজ বাকেট যার জন্য আমি আমার সার্ভিস অ্যাকাউন্টকে Storage Legacy Object Reader পারমিশন দিয়েছি।

এখন প্রতিটি নোডের জন্য, আমরা নিচের কমান্ড চালাব:

 gsutil cp path_to_dump_file gs://your_bucket 

আমরা এখন আমাদের গুগল ক্লাউড বাকেটে দুটি RDB ফাইল দেখতে পাচ্ছি:

ডাইনোমাইট থেকে রিডিস এন্টারপ্রাইজ অ্যাক্টিভ-অ্যাক্টিভে सहজ মাইগ্রেশন: ধাপে ধাপে গাইড

আমরা এখন সেগুলো আমাদের অ্যাক্টিভ-অ্যাক্টিভ ডেটাবেসে ইম্পোর্ট করার জন্য প্রস্তুত।

রিডিস এন্টারপ্রাইজ ডেটাবেসে ডাম্প ফাইল ইম্পোর্ট করুন

রিডিস এন্টারপ্রাইজ UI-এ লগ ইন করুন এবং আপনার অ্যাক্টিভ-অ্যাক্টিভ ডেটাবেস সিলেক্ট করুন। যদি এই টিউটোরিয়ালের মত আপনি একাধিক ক্লাস্টার জুড়ে অ্যাক্টিভ-অ্যাক্টিভ ডেটাবেস তৈরি করে থাকেন, আপনি যেকোনো ক্লাস্টার 통해서 UI-তে কানেক্ট করতে পারেন। এই টিউটোরিয়ালে, আমরা আমাদের ইউরোপ (EU) ক্লাস্টার ব্যবহার করব।

আপনি যদি ক্লাউড অ্যাক্টিভ-অ্যাক্টিভ ডেটাবেস ব্যবহার করেন, শুধু ক্লাউড UI-তে কানেক্ট করে আপনার ডেটাবেস সিলেক্ট করুন।

চলুন আমাদের ডেটাবেসের কনফিগারেশন পেজে যাই এবং ইম্পোর্ট বাটনে ক্লিক করি। উপযুক্ত স্টোরেজ টাইপ সিলেক্ট করুন। আমাদের কেসে, এটি হবে Google Cloud Storage।

আমরা এখন আমাদের দুটি RDB ফাইলটির ক্লাউড স্টোরেজ পথ যোগ করতে পারি যেমন:

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

আমাদের নিচের তথ্যগুলোও যোগ করতে হবে:

  • ক্লায়েন্ট আইডি
  • ক্লায়েন্ট ইমেইল
  • প্রাইভেট কী আইডি
  • প্রাইভেট কী

এই তথ্যগুলো আপনার গুগল ক্লাউড সার্ভিস অ্যাকাউন্টের জন্য কী তৈরি করার সময় ডাউনলোড করা JSON কী ফাইলে পাওয়া যাবে।

নোট করুন যে JSON ফাইলে প্রাইভেট কী অদ্ভুত ফরম্যাটে থাকে; এতে কোটেশন মার্ক এবং নিউলাইন থাকে। রিডিস এন্টারপ্রাইজ UI যেভাবে এক্সেপ্ট করবে সেভাবে দ্রুত ফরম্যাট করার জন্য, শুধু একটি পাইথন ইন্টারপ্রেটার লঞ্চ করে প্রিন্ট করুন:

 print(WHOLE_COPIED_KEY) 

আমাদের এখন নিচের ইম্পোর্ট কনফিগারেশন আছে:

ডাইনোমাইট থেকে রিডিস এন্টারপ্রাইজ অ্যাক্টিভ-অ্যাক্টিভে सहজ মাইগ্রেশন: ধাপে ধাপে গাইড

ইম্পোর্টে ক্লিক করুন এবং ইম্পোর্ট শেষ হওয়া পর্যন্ত অপেক্ষা করুন যা ডেটাবেসের আকারের উপর নির্ভর করবে।

ডেটাবেস চেক করুন এবং কাটওভার করুন

redis-cli দিয়ে আপনার রিডিস এন্টারপ্রাইজ ডেটাবেসের এন্ডপয়েন্টের সাথে কানেক্ট করুন। কিছু কী পড়তে চেষ্টা করুন এবং DBSIZE কমান্ড চালান যাতে আপনার সঠিক মোট কী সংখ্যা আছে কিনা চেক করতে পারেন।

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

অ্যাক্টিভ-অ্যাক্টিভ জিও-ডুপ্লিকেশনও চেক करना ভুলবেন না! শুধু অন্য ক্লাস্টারের ডেটাবেস এন্ডপয়েন্টের সাথে কানেক্ট করুন, আমাদের কেসে ইউএস वाला, এবং আপনি যে কী সংখ্যা পান সেটি চেক করুন।

আপনার মাইগ্রেশন এখন সম্পন্ন। আপনি যদি ইতিমধ্যে না করে থাকেন তবে আপনার ডেটাবেসে ট্রাফিক কাটওভার করুন।

ReplicaOf ফিচার ব্যবহার করে মাইগ্রেশন

এখন চলুন একটি ক্রমাগত মাইগ্রেশন চালাই।

রিডিস এন্টারপ্রাইজ ফিচার 'ReplicaOf' (রিডিস ক্লাউড UI-তে অ্যাক্টিভ-প্যাসিভও বলা হয়) আমাদের দুটি রিডিস ডেটাবেসের মাঝপথে ক্রমাগত ডেটা রেপ্লিকেট করতে দেয়। প্রধান সুবিধা হলো এটি প্রাথমিক সিঙ্ক্রোনাইজেশন শেষ হওয়ার পর ডেল্টা রেপ্লিকেট করে, যার মানে প্রায় শূন্য অ্যাপ্লিকেশন-সাইড ডাউনটাইম।

ধাপগুলো হলো:

  • ডাইনোমাইট ডেটাবেস এবং অ্যাক্টিভ-অ্যাক্টিভ ডেটাবেসের মাঝপথে ReplicaOf লিংক স্থাপন করুন
  • প্রাথমিক সিঙ্ক্রোনাইজেশন সম্পন্ন হওয়া পর্যন্ত অপেক্ষা করুন
  • ডাইনোমাইট ডেটাবেসে ট্রাফিক বন্ধ করুন
  • ডেল্টা রেপ্লিকেট হয়ে যাওয়া পর্যন্ত অপেক্ষা করুন
  • ডেটাবেসগুলোর মাঝপথের ReplicaOf লিংক মুছুন
  • অ্যাক্টিভ-অ্যাক্টিভ ডেটাবেসে কাটওভার করুন

ReplicaOf অ্যাক্টিভ-প্যাসিভ উপায়ে ব্যবহার করার জন্য উদ্দেশ্য। এর মানে টার্গেটকে প্যাসিভ ধরা হয়, এবং এটি টলারেট করা দরকার যাতে টার্গেট ফুলি রি-সিঙ্ক্রোনাইজ হয়ে যায় (টার্গেট ডেটাবেস ফ্লাশ + সোর্স ডেটাবেস থেকে সিঙ্ক)।

মাইগ্রেশন শুরু করার আগে, চলুন কিছু সিকিউরিটি দিক আলোচনা করি।

আপনার ডাইনোমাইট সেটআপে রিডিস OSS-এর জন্য সিকিউরিটি কনফিগারেশন

প্রথমে, আপনাকে আপনার ডাইনোমাইট র‍‍‍্যাক যে নেটওয়ার্কে আছে সেটি জন্য কাস্টম TCP विथ ৬৩৭৯ পোর্টের ইনবাউন্ড রুল যোগ করতে হবে।

দ্বিতীয়, উভয় ডাইনোমাইট নোডের রিডিস OSS কনফিগারেশন ফাইল আপডেট করতে হবে। ডিফল্টভাবে, রিডিস শুধুমাত্র IPv4 এবং IPv6 (যদি উপলব্ধ থাকে) লুপব্যাক ইন্টারফেস অ্যাড্রেসে লিসেন করে। এর মানে রিডিস OSS শুধুমাত্র ক্লায়েন্ট কানেকশন এক্সেপ্ট করতে পারবে সেম হোস্ট থেকে যেটা রান করছে। আমাদের রিডিস OSS-এর "bind" ডিরেক্টিভ আপডেট করতে হবে যাতে রিডিস OSS আমাদের রিডিস এন্টারপ্রাইজ ক্লাস্টার হোস্ট থেকে কানেকশন লিসেন করতে পারে।

এটি করার দুটি উপায় রয়েছে:

  • রিডিস OSS শুধুমাত্র পিয়ারড VPC-এ থাকা একটি মেশিন থেকে আসা কানেকশন লিসেন করবে - সুপারিশ করা এবং আরও সিকিউর
  • রিডিস OSS কে সব হোস্ট থেকে অ্যাক্সেসযোগ্য করা - সিকিউর নয়, বিশেষ করে যেহেতু ডাইনোমাইট ডেটাবেস পাসওয়ার্ড সাপোর্ট করে না

চলুন সেই দুটি অপশন বিস্তারিত আলোচনা করি।

অপশন ১ – VPC পিয়ারিংসহ

প্রথম অপশন হচ্ছে যে VPC-এ আপনার ডাইনোমাইট র‍‍‍্যাক আছে সেটিকে যে VPC-এ আপনার রিডিস এন্টারপ্রাইজ ক্লাস্টার আছে সেটির সাথে পিয়ার করা। দয়া করে নোট করুন যে, আপনার মত যদি আপনি অ্যাক্টিভ-অ্যাক্টিভ ডেটাবেস তৈরি করে থাকেন, সেটি যেকোনো ক্লাস্টারে থাকতে পারে। আগের মত, আমরা ডেমো জন্য আমাদের ইউরোপ (EU) ক্লাস্টার ব্যবহার করব।

নেটওয়ার্কগুলো পিয়ার করার পর, আপনাকে শুধু redis.conf ফাইলে "bind" ডিরেক্টিভ এডিট করতে হবে: ডিফল্ট লুপব্যাক ইন্টারফেস অ্যাড্রেসের পর আপনার ডাইনোমাইট মেশিনের প্রাইভেট IP যোগ করুন।

ডাইনোমাইট থেকে রিডিস এন্টারপ্রাইজ অ্যাক্টিভ-অ্যাক্টিভে सहজ মাইগ্রেশন: ধাপে ধাপে গাইড

র‍‍‍্যাকের সব নোডের জন্য এটি করুন এবং বাস! আপনার রিডিস OSS ইনস্ট্যান্সগুলো রিস্টার্ট করা ভুলবেন না।

অপশন ২ – VPC পিয়ারিংস nélkül

আপনি যদি আপনার নেটওয়ার্ক পিয়ার না করতে পারেন বা না চান, তবে আপনাকে প্রতিটি নোডে রিডিস OSS কনফিগারেশন ফাইল নিম্নরূপ আপডেট করতে হবে:

  • "bind" ডিরেক্টিভ কমেন্ট আউট করুন, যা আপনার রিডিস OSS ইনস্ট্যান্সকে ইন্টারনেটের সবার কাছে এক্সপোজ করবে
  • "protected-mode" কে "no" সেট করুন, যাতে অন্য হোস্টের ক্লায়েন্ট রিডিসের সাথে কানেক্ট করতে পারে এমনকি যদি কোনো অথেন্টিকেশন কনফিগার করা না থাকে, বা "bind" ডিরেক্টিভ ব্যবহার করে স্পেসিফিক ইন্টারফেস সেট না করা থাকে।
ডাইনোমাইট থেকে রিডিস এন্টারপ্রাইজ অ্যাক্টিভ-অ্যাক্টিভে सहজ মাইগ্রেশন: ধাপে ধাপে গাইড

গুরুত্বপূর্ণ: এই লাস্ট স্টেপটি আবশ্যক কারণ ডাইনোমাইট রিডিস OSS AUTH কমান্ড সাপোর্ট করে না, যা আমাদের ডেটাবেস পাসওয়ার্ড সেট করতে বাধা দেয়। তাই, যদি আপনি ফায়ারওয়াল ব্যবহার না করেন যে কে পোর্টে কানেক্ট করবে সেটি কন্ট্রোল করার জন্য, যে কেউ রিডিস OSS ইনস্ট্যান্সে কানেক্ট করে এর ডেটা অ্যাক্সেস/চেঞ্জ/ডিলিট করতে পারবে। পোর্ট ৬৩৭৯ শুধুমাত্র আপনার রিডিস এন্টারপ্রাইজ ক্লাস্টার হোস্টের জন্য খুলুন।

আপনি যদি সত্যিকারের পাসওয়ার্ড ব্যবহার করতে চান, পারেন। কিন্তু সেটি ক্রমাগত মাইগ্রেশন চালাতে অসুবিধা করবে, কারণ আপনাকে নিচের কাজগুলো করতে হবে:

  • ডাইনোমাইট ডেটাবেসে ট্রাফিক বন্ধ করুন
  • "requirepass" ডিরেক্টিভ এডিট করে ডেটাবেসের জন্য পাসওয়ার্ড সেট করুন। এই পয়েন্ট থেকে, আপনি আপনার ডাইনোমাইট ডেটাবেসে পোর্ট ৮৩৭৯ ব্যবহার করে কোনো রাইট ট্রাফিক পাঠাতে পারবেন না, কারণ ডেটাবেস অ্যাক্সেসের জন্য AUTH কমান্ড লাগবে
  • নিচে বর্ণনামত ReplicaOf ব্যবহার করে মাইগ্রেশন চালান
  • ট্রাফিক রিডিস এন্টারপ্রাইজ ডেটাবেসে কাটওভার করুন

একটি আরও সিকিউরিটি বিবেচনা এবং আমরা আমাদের মাইগ্রেশন শুরু করার জন্য প্রস্তুত!

ঐচ্ছিক – TLS সক্ষম করুন

আপনার ডেটায় অনধিকার প্রবেশ রোধ করতে, রিডিস এন্টারপ্রাইজ TLS প্রোটোকল সাপোর্ট করে।

আপনি যদি রিডিস এন্টারপ্রাইজ সফ্টওয়্যার ব্যবহার করেন, আপনি স্পেসিফিকভাবে ReplicaOf কমিউনিকেশনের জন্য এটি কনফিগার করতে পারেন। আপনি যদি রিডিস এন্টারপ্রাইজ ক্লাউড ব্যবহার করেন, আপনি সাধারণভাবে TLS সক্ষম করতে পারেন।

ডেটাবেসগুলোর মাঝপথে ReplicaOf লিংক সেট করুন

রিডিস এন্টারপ্রাইজ UI-তে, চলুন আমাদের অ্যাক্টিভ-অ্যাক্টিভ ডেটাবেস কনফিগারেশন পেজে যাই এবং Edit-এ ক্লিক করি।

আমাদের অ্যাক্টিভ-প্যাসিভ/ReplicaOf সক্ষম করার অপশন আছে। একবার সক্ষম করলে, আমরা নিচের ফরম্যাটে সোর্স যোগ করতে পারি:

 redis://:@IP:port 

দয়া করে নোট করুন:

  • ReplicaOf সর্বোচ্চ ৩২টি সোর্স অনুমতি দেয়। এর মানে আপনি যদি আপনার ডেটাসেট ৩২টির বেশি নোড জুড়ে ডাইনোমাইট র‍‍‍্যাকে বিতরণ করে থাকেন, আপনি এই অপশন ব্যবহার করতে পারবেন না
  • আপনি যদি VPC পিয়ারিং ব্যবহার করেছেন, আপনার মেশিনের প্রাইভেট IP ব্যবহার করা উচিত
  • আপনি যদি VPC পিয়ারিং ব্যবহার না করেছেন:
    • আপনার মেশিনের পাবলিক IP ব্যবহার করা উচিত
    • আপনি যদি আপনার ডেটাবেসে পাসওয়ার্ড সেট করে থাকেন (এবং এককালীন মাইগ্রেশন চালাতে চান), পাসওয়ার্ড নিম্নরূপ প্রদান করা উচিত: redis://:password@IP:port।

আমাদের কেসে, VPC পিয়ারিংসহ, আমাদের সোর্সগুলো নিচের মত দেখায়:

ডাইনোমাইট থেকে রিডিস এন্টারপ্রাইজ অ্যাক্টিভ-অ্যাক্টিভে सहজ মাইগ্রেশন: ধাপে ধাপে গাইড

মাইগ্রেশন শুরু করুন

এখন নিচের ধাপগুলো নিন:

  • রিডিস এন্টারপ্রাইজ UI-তে Update-এ ক্লিক করুন,
  • প্রাথমিক সিঙ্ক্রোনাইজেশন শেষ হওয়া পর্যন্ত অপেক্ষা করুন,
  • ডাইনোমাইট ডেটাবেসে ট্রাফিক বন্ধ করুন,
  • ডেল্টা সিঙ্ক্রোনাইজ হয়ে যাওয়া পর্যন্ত অপেক্ষা করুন,
  • আপনার অ্যাক্টিভ-অ্যাক্টিভ ডেটাবেস আবার আপডেট করে ReplicaOf ডিজেবল করুন,
  • অ্যাক্টিভ-অ্যাক্টিভ ডেটাবেসে ট্রাফিক শুরু করুন।

আপনার ডেটা চেক করুন

আগের মত, redis-cli দিয়ে আপনার ডেটাবেসের সাথে কানেক্ট করুন এবং চেক করুন যে আপনার ডেটা মাইগ্রেট হয়েছে কিনা। অন্য ক্লাস্টার/অন্য লোকাল এন্ডপয়েন্টের সাথে কানেক্ট করে অ্যাক্টিভ-অ্যাক্টিভ জিও-ডুপ্লিকেশনও চেক করুন।

উপসংহার

রিডিস অনেক বছরে ডেভেলপারদের দ্বারা সবচেয়ে প্রিয় ডেটাবেস হিসেবে নামিত হয়েছে। আপনি যদি ডাইনোমাইট ব্যবহার করেন, সম্ভবত আপনিও রিডিসকে পছন্দ করেন। রিডিসে, যেটি রিডিস OSS এবং রিডিস এন্টারপ্রাইজ উভয়ের হোম, আমরা আপনার সংস্থাকে আরও পরিচালনাযোগ্য উপায়ে রিডিস জিও-ডিস্ট্রিবিউট করতে সাহায্য করতে পারি, কনফ্লিক্ট রেজোলিউশনের জন্য সর্বোচ্চ একাডেমিক স্ট্যান্ডার্ড মেনটেইন রেখে।


  1. এজার ক্যাশ ফর রেডিস এন্টারপ্রাইজ: এক্টিভ-এক্টিভ জিও-ডিস্ট্রিবিউশন এখন সাধারণভাবে উপলব্ধ

  2. কেন ডাইনোমাইট থেকে রিডিস এন্টারপ্রাইজ অ্যাক্টিভ-অ্যাক্টিভে মাইগ্রেট করলে সুপেরিয়র পারফরম্যান্স এবং বিশ্বস্ততা মেলে

  3. রেডিস MOVE মাস্টার করুন: ডেটাবেস间 কী সুন্দরভাবে ট্রান্সফার করুন

  4. ওয়ার্ডপ্রেস ডেটাবেস পরিষ্কার করে আপনার সাইট দ্রুত করুন: সম্পূর্ণ গাইড