রেডিস ক্লাস্টার (Redis Cluster) হল একটি ডিস্ট্রিবিউটেড রেডিস সেটআপ যা ডেটা শার্ডিং (Sharding) এবং হাই অ্যাভেইলেবিলিটি (High Availability) সরবরাহ করে। রেডিস ক্লাস্টার আপনাকে একাধিক রেডিস নোডের মধ্যে ডেটা ভাগ করার মাধ্যমে স্কেল করতে সাহায্য করে। এটি মূলত ডেটাকে একাধিক নোডে ভাগ করে (শার্ডিং) এবং রেডিস সার্ভারগুলোর মধ্যে ডেটার ভারসাম্য বজায় রাখে।
Redis Cluster কনফিগার করা
রেডিস ক্লাস্টার কনফিগার করার জন্য কিছু নির্দিষ্ট ধাপ অনুসরণ করতে হয়, যেগুলোর মধ্যে নোড কনফিগারেশন, শার্ডিং, এবং ক্লাস্টার সেটআপ অন্তর্ভুক্ত থাকে।
১. রেডিস ক্লাস্টার নোড সেটআপ
প্রথমে, আপনাকে একটি রেডিস ক্লাস্টারের জন্য বেশ কয়েকটি রেডিস নোড তৈরি করতে হবে। কমপক্ষে 3টি রেডিস নোড প্রয়োজন (তবে সাধারণত 6টি নোডের পরামর্শ দেওয়া হয়, যাতে এটি একটি স্থিতিশীল ক্লাস্টার হয়)।
নোড কনফিগারেশন ফাইল (redis.conf) কনফিগার করা:
প্রতিটি রেডিস নোডের জন্য কনফিগারেশন ফাইলে কিছু সেটিংস পরিবর্তন করতে হবে।
bind: এটি আপনাকে আপনার নোডের জন্য একটি নির্দিষ্ট আইপি ঠিকানা বেঁধে দেওয়ার জন্য ব্যবহৃত হয়।
bind 0.0.0.0 # সকল আইপি থেকে কানেকশন গ্রহণ করতেport: প্রতি নোডের জন্য একটি ইউনিক পোর্ট নম্বর নির্ধারণ করুন।
port 7000 # প্রথম নোডের পোর্টcluster-enabled: ক্লাস্টার সক্ষম করতে এই প্যারামিটারটি
yesকরতে হবে।cluster-enabled yescluster-config-file: ক্লাস্টারের কনফিগারেশন ফাইলের নাম দিন।
cluster-config-file nodes-7000.conf # নোডের কনফিগারেশন ফাইলcluster-node-timeout: ক্লাস্টারের নোডগুলোর মধ্যে টাইমআউট সেট করতে:
cluster-node-timeout 5000 # 5 সেকেন্ড টাইমআউটappendonly: AOF (Append Only File) পার্সিস্টেন্স সক্রিয় করা:
appendonly yes
এটি করুন প্রতিটি নোডে। নোডের পোর্ট নম্বর এবং কনফিগারেশন ফাইলের নাম ভিন্ন হতে হবে।
২. রেডিস ক্লাস্টার নোড শুরু করা
এখন, আপনি রেডিস ক্লাস্টারের জন্য কনফিগারেশন ফাইল সম্পাদনা করার পর, প্রতিটি নোডের ইনস্ট্যান্স চালু করতে পারেন।
redis-server /path/to/redis.conf
এটি প্রতিটি নোডকে তার নিজস্ব কনফিগারেশন ফাইল দিয়ে চালু করবে।
৩. রেডিস ক্লাস্টার তৈরি করা
একবার নোডগুলি চালু হয়ে গেলে, আপনাকে রেডিস ক্লাস্টার তৈরি করতে হবে। এটি করা হয় redis-cli কমান্ড লাইন ইন্টারফেসের মাধ্যমে। আপনাকে ক্লাস্টারের সব নোডকে একত্রিত করার জন্য একটি বিশেষ কমান্ড ব্যবহার করতে হবে।
ধরা যাক, আপনার নোডগুলো পোর্ট 7000, 7001, 7002, 7003, 7004, 7005 এ চলছে। এখন, আপনি redis-trib.rb (যা রেডিস 3.x এর পরে সরিয়ে দেওয়া হয়েছে) বা redis-cli ব্যবহার করে ক্লাস্টার তৈরি করতে পারেন।
redis-cli --cluster create 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 --cluster-replicas 1
এখানে, --cluster-replicas 1 মানে আপনি প্রতিটি শার্ডের জন্য একটি রিপ্লিকা (backup) নোড তৈরি করতে চান। এটি একটি HA (High Availability) সেটআপ তৈরি করবে।
৪. ক্লাস্টার যাচাই করা
ক্লাস্টার সফলভাবে তৈরি করার পর, আপনি ক্লাস্টারের স্ট্যাটাস দেখতে পারেন এবং নিশ্চিত হতে পারেন যে এটি সঠিকভাবে কাজ করছে।
ক্লাস্টারের স্ট্যাটাস চেক করতে:
redis-cli -c -h 127.0.0.1 -p 7000 cluster info
এটি ক্লাস্টারের তথ্য এবং অবস্থা দেখাবে। যদি সবকিছু সঠিকভাবে কনফিগার হয়ে থাকে, আপনি একটি cluster_state:ok দেখতে পাবেন।
৫. শার্ডিং এবং ডেটা ম্যানেজমেন্ট
রেডিস ক্লাস্টার ডেটাকে শার্ড করে রাখে, অর্থাৎ এটি ডেটাকে বিভিন্ন নোডে ভাগ করে দেয়। প্রতিটি নোড 16384টি স্লট দ্বারা পরিচালিত হয় এবং ক্লাস্টারটি শার্ডিং করার জন্য এই স্লটগুলো ব্যবহার করে।
ডেটা যোগ করা (Sharded Data)
আপনি একটি কিপেয়ার সেট করতে পারবেন এবং এটি অটোমেটিক্যালি সঠিক শার্ডে যাবে:
redis-cli -c -h 127.0.0.1 -p 7000 SET mykey "Hello Cluster"
এটি ডেটা সরাসরি সঠিক শার্ডে যাবে।
ডেটা রিট্রিভ (Retrieve Data)
ডেটা রিট্রিভ করার জন্য একই কমান্ড ব্যবহার করা যাবে, এবং রেডিস ক্লাস্টার সঠিক শার্ড থেকে ডেটা রিটার্ন করবে:
redis-cli -c -h 127.0.0.1 -p 7000 GET mykey
৬. ক্লাস্টার ডিস্ট্রিবিউশন
রেডিস ক্লাস্টারের মধ্যে শার্ডিং ব্যবস্থাপনা করা হয়, যেখানে ডেটা স্বয়ংক্রিয়ভাবে বিভক্ত হয়। প্রতিটি নোড একটি নির্দিষ্ট স্লট রেঞ্জ পরিচালনা করে এবং ক্লাস্টার সব স্লট সমানভাবে ভাগ করে নেয়। আপনি যদি কোনও স্লটে ডেটা খুঁজে না পান, তবে এটি অন্য নোডে রিডাইরেক্ট করা হবে।
৭. ক্লাস্টারের রিপ্লিকা (Replication)
ক্লাস্টারের জন্য রিপ্লিকা নোড সঠিক হাই অ্যাভেইলেবিলিটি নিশ্চিত করে। রিপ্লিকা নোডগুলি মূল শার্ডের সঠিক কপি থাকে এবং কোনো নোড ফেইল হলে ক্লাস্টার সেগুলি রিকভার করতে সক্ষম হয়।
আপনি ক্লাস্টারের জন্য রিপ্লিকা সেটআপ করতে পারেন, যেমন উপরে উল্লেখিত --cluster-replicas 1।
সারাংশ
রেডিস ক্লাস্টার একটি শক্তিশালী ডিস্ট্রিবিউটেড সিস্টেম যা ডেটা শার্ডিং এবং হাই অ্যাভেইলেবিলিটি প্রদান করে। ক্লাস্টার সেটআপ করার জন্য নোড কনফিগারেশন, ক্লাস্টার তৈরি এবং শার্ডিং কনফিগারেশন করতে হয়। ক্লাস্টার তৈরি হলে, ডেটা স্বয়ংক্রিয়ভাবে শার্ড করা হয় এবং প্রতিটি নোড নির্দিষ্ট স্লটগুলি পরিচালনা করে। রিপ্লিকা ব্যবহার করে ক্লাস্টারে হাই অ্যাভেইলেবিলিটি নিশ্চিত করা যায়।
Read more