Skill

Redis Cluster এবং Scalability গাইড ও নোট

Database Tutorials - রেডিস (Redis)
463

Redis Cluster এবং Scalability সম্পর্কিত ধারণাগুলো হল Redis এর পারফরম্যান্স এবং ডেটাবেস পরিচালনার অত্যন্ত গুরুত্বপূর্ণ অংশ, বিশেষত যখন আপনি বড় পরিসরে ডেটাবেস পরিচালনা করতে চান। Redis Cluster ডিস্ট্রিবিউটেড আর্কিটেকচারে ডেটাকে শার্ড করে এবং Scalability রেডিসের ক্ষমতা প্রসারিত করে যাতে উচ্চ লোড এবং ট্রাফিক হ্যান্ডল করা যায়।


Redis Cluster

Redis Cluster হল একটি ডিস্ট্রিবিউটেড Redis সিস্টেম যা ডেটাকে একাধিক Redis নোডে ভাগ করে রাখে। এটি একটি উন্নত ব্যবস্থা যা আপনার Redis ইনস্টেন্সগুলোকে একত্রিত করে একটি ক্লাস্টারে পরিণত করে এবং ডেটা শার্ডিং, রেপ্লিকেশন, ও ক্র্যাশ রিকভারি সক্ষম করে।

Redis Cluster-এর মূল বৈশিষ্ট্য:

  1. ডেটা শার্ডিং (Data Sharding): Redis Cluster ডেটাকে একাধিক Redis নোডে শেয়ার করে রাখে। প্রতিটি নোড একটি নির্দিষ্ট ডেটার অংশ (shard) ধারণ করে। ডেটা শার্ডিংয়ের মাধ্যমে আপনি ডেটাবেসের আকার বাড়াতে পারেন এবং লোড ব্যালান্সিং করতে পারেন।
  2. অটো-রেপ্লিকেশন (Auto-replication): Redis Cluster ডেটা রেপ্লিকেশনের জন্য নোডগুলিকে ক্লাস্টারে অন্তর্ভুক্ত করে। যদি কোনো নোড ফেইল করে, তার কপি অন্য নোডের মাধ্যমে পুনরুদ্ধার করা যায়। এর মাধ্যমে সিস্টেমের উচ্চ স্থায়িত্ব এবং নির্ভরযোগ্যতা নিশ্চিত করা হয়।
  3. ফেইলওভার (Failover): যদি কোনও নোড ফেইল করে, তাহলে ক্লাস্টারটি তার রিপ্লিকা নোডকে প্রধান (master) নোড হিসেবে নির্বাচন করে এবং কার্যক্রম অব্যাহত রাখে। এটি একটি অটোমেটিক প্রক্রিয়া যা ক্লাস্টারকে আরও স্থিতিস্থাপক করে তোলে।
  4. ডিস্ট্রিবিউটেড কীগুলি (Distributed Keys): Redis Cluster ডেটাকে hash slots-এ ভাগ করে রাখে (যার সংখ্যা ১৬,৩৮৪), এবং প্রতিটি নোডে নির্দিষ্ট সংখ্যক hash slots থাকে। এর মাধ্যমে, Redis ডেটাবেসে প্রবাহিত কীগুলির জন্য সঠিক নোড নির্ধারণ করা হয়। ক্লায়েন্ট ক্লাস্টারে যুক্ত হয়ে সেই কীগুলির জন্য সঠিক নোডে গিয়ে কাজ করে।
  5. লাইভ সাপোর্ট (Live Support): Redis Cluster লাইভ ম্যানেজমেন্ট সাপোর্ট করে, যেমন কনফিগারেশন পরিবর্তন, নতুন নোড যুক্ত করা, বা নোডগুলোকে বিভক্ত করা, সবকিছু চলমান অবস্থায় করা যায়।

Redis Cluster কনফিগারেশন:

Redis Cluster সেটআপ করতে আপনাকে redis.conf ফাইল কনফিগার করতে হবে এবং কিছু নির্দিষ্ট ক্লাস্টার সেটিংস সঠিকভাবে কনফিগার করতে হবে:

  1. cluster-enabled: ক্লাস্টার সক্রিয় করতে:

    cluster-enabled yes
    
  2. cluster-config-file: ক্লাস্টার কনফিগারেশন ফাইলের নাম সেট করা:

    cluster-config-file nodes.conf
    
  3. cluster-node-timeout: নোডের সময়সীমা নির্ধারণ:

    cluster-node-timeout 5000
    
  4. cluster-announce-ip: ক্লাস্টার নোডের IP ঠিকানা সেট করা:

    cluster-announce-ip 192.168.1.100
    

Redis Cluster Setup:

Redis ক্লাস্টার ইনস্টলেশন প্রক্রিয়া সহজ নয় এবং আপনাকে একাধিক Redis ইনস্ট্যান্স তৈরি করতে হবে। সাধারণভাবে, আপনি একটি Redis ক্লাস্টার সেটআপ করতে নিচের ধাপগুলো অনুসরণ করতে পারেন:

  1. একাধিক Redis ইনস্ট্যান্স (নোড) তৈরি করুন।
  2. Redis সার্ভার কনফিগার করুন (উপরের কনফিগারেশনগুলির মাধ্যমে)।
  3. redis-trib.rb টুল ব্যবহার করে ক্লাস্টার তৈরি করুন এবং নোডগুলিকে ক্লাস্টারে যোগ করুন।

Redis Scalability (স্কেলেবিলিটি)

Redis Scalability হল Redis এর ক্ষমতা নিজের আর্কিটেকচার এবং কনফিগারেশন পরিবর্তন করে লোড এবং ডেটার পরিমাণ বাড়ানোর। স্কেলেবিলিটি আপনাকে Redis কে আরও বেশি ক্লায়েন্ট এবং ডেটা হ্যান্ডল করার জন্য প্রস্তুত করতে সাহায্য করে।

Types of Scalability in Redis:

  1. Horizontal Scaling (Scale-out): Horizontal Scaling অর্থাৎ "Scale-out" হল একটি Redis ক্লাস্টারে নতুন নোড যুক্ত করা, যার মাধ্যমে Redis ক্লাস্টারের ক্ষমতা বাড়ানো যায়। এটি Redis Cluster দ্বারা করা হয় এবং ডেটা শার্ডিংয়ের মাধ্যমে ডেটাবেসের আকার বাড়ানো সম্ভব হয়।
  2. Vertical Scaling (Scale-up): Vertical Scaling অর্থাৎ "Scale-up" হল একক Redis নোডে বেশি রিসোর্স (যেমন CPU, RAM) ব্যবহার করা। তবে, এটি Redis-এর ক্লাস্টারিং সমাধানটির মতো একটি দীর্ঘমেয়াদী সমাধান নয়, কারণ এটি একটি একক পয়েন্টের উপর নির্ভর করে।
  3. Load Balancing: Redis ক্লাস্টারে লোড ব্যালান্সিং নিশ্চিত করতে, replication এবং failover ব্যবহৃত হয়। এটি ক্লাস্টারের নোডগুলির মধ্যে লোড ভাগ করে দেয়, যাতে পারফরম্যান্স বজায় থাকে।

Redis Scalability Challenges:

  • Data Sharding: ডেটা শার্ডিংয়ের সময় আপনি কীভাবে ডেটা সমানভাবে ভাগ করবেন তা একটি চ্যালেঞ্জ হতে পারে।
  • Consistency: Redis ক্লাস্টারে ডেটার কনসিস্টেন্সি বজায় রাখা একটি চ্যালেঞ্জ। যদি কোনো নোডে ডেটা না পৌঁছায়, তবে কীভাবে কনসিস্টেন্সি নিশ্চিত করা যাবে।
  • Latency: ক্লাস্টারে ডেটা শার্ড করার কারণে কিছু ক্ষেত্রে লেটেন্সি বাড়তে পারে, বিশেষত যখন নোডগুলো দূরে অবস্থান করে।

Redis Scalability Tips:

  1. Use Redis Clustering: Redis Cluster ব্যবহার করুন যাতে আপনি সহজেই horizontal scaling করতে পারেন।
  2. Replicate Data: Redis replication ব্যবহার করে ডেটা নিরাপত্তা নিশ্চিত করুন এবং একাধিক নোডে ডেটা কপি রাখতে পারেন।
  3. Sharding Strategy: সঠিক ডেটা শার্ডিং কৌশল নির্বাচন করুন, যাতে ডেটার ভারসাম্য বজায় থাকে।

সারাংশ

  • Redis Cluster হল একটি ডিস্ট্রিবিউটেড সিস্টেম যা ডেটা শার্ডিং, রেপ্লিকেশন এবং ফেইলওভার সমর্থন করে, এর মাধ্যমে Redis-কে স্কেল করা সম্ভব হয়।
  • Scalability হল Redis-এর ক্ষমতা লোড এবং ডেটার পরিমাণ বাড়ানোর জন্য। Redis ক্লাস্টারের মাধ্যমে horizontal scaling বা scale-out করা যায়, এবং vertical scaling বা scale-up একক নোডের রিসোর্স বাড়ানোর মাধ্যমে করা যায়।
  • Redis স্কেল করার সময় ডেটা শার্ডিং, কনসিস্টেন্সি এবং লেটেন্সি সমস্যা হতে পারে, তবে Redis-এর clustering, replication, এবং failover সমাধানগুলি এই চ্যালেঞ্জগুলো মোকাবেলা করতে সহায়তা করে।
Content added By

Redis Cluster এর ধারণা

380

রেডিস ক্লাস্টার (Redis Cluster) একটি ডিস্ট্রিবিউটেড রেডিস সিস্টেম যা একাধিক রেডিস নোডকে সংযুক্ত করে একটি ক্লাস্টার তৈরি করে। এর মাধ্যমে রেডিস ডেটাবেসের ডেটা শার্ডিং (Sharding) করা হয়, যার ফলে বড় পরিসরের ডেটা সঞ্চয় এবং ব্যবস্থাপনা সম্ভব হয়। রেডিস ক্লাস্টার মূলত ডেটার উচ্চ পরিমাণ, স্কেলেবিলিটি এবং এক্সটেনশন কভার করার জন্য ডিজাইন করা হয়েছে।

রেডিস ক্লাস্টার কার্যকরীভাবে ডেটা শার্ডিং এবং রিড/রাইট অপারেশনগুলি বিভক্ত করে সার্ভারগুলির মধ্যে সমানভাবে বিতরণ করে।


Redis Cluster কীভাবে কাজ করে?

রেডিস ক্লাস্টারের মাধ্যমে একাধিক রেডিস ইনস্ট্যান্স একত্রিত হয়ে একটি একক ইউনিট হিসেবে কাজ করে। ক্লাস্টারটি ডেটাকে শার্ডিং পদ্ধতির মাধ্যমে বিভিন্ন নোডে বিভক্ত করে, এবং এটি ক্লাস্টারের মধ্যে নির্দিষ্ট নোডগুলিতে ডেটা সংরক্ষণ করে।

রেডিস ক্লাস্টারের মধ্যে কিছু মূল ধারণা রয়েছে:

  1. Sharding: ডেটার বড় অংশকে ছোট ছোট ভাগে বিভক্ত করা হয়, যা একাধিক রেডিস নোডে সঞ্চিত থাকে। এটি একটি ডিস্ট্রিবিউটেড সিস্টেমে ডেটা ম্যানেজমেন্ট সহজ করে তোলে।
  2. Slots: রেডিস ক্লাস্টার একটি ডেটা শার্ডিং সিস্টেম ব্যবহার করে, যা ১৬,৩৮৪টি স্লট (slots) এ বিভক্ত থাকে। প্রতিটি স্লট একটি নির্দিষ্ট রেঞ্জের কিপেয়ার ধারণ করে।
  3. Replicas: ক্লাস্টারিং সিস্টেমে একাধিক প্রতি নোডের রেপ্লিকা (Replica) থাকতে পারে, যা হট ফেইলওভার নিশ্চিত করে। এটি ডেটা সুরক্ষা এবং উচ্চ অ্যাভেইলেবিলিটি নিশ্চিত করে।
  4. Master-Slave: রেডিস ক্লাস্টার সাধারণত মাস্টার-স্লেভ আর্কিটেকচার ব্যবহার করে। প্রতিটি ডেটা শার্ডের একটি মাস্টার নোড এবং এক বা একাধিক স্লেভ নোড থাকতে পারে। স্লেভ নোডগুলি মাস্টার নোডের সাথে সিঙ্ক্রোনাইজ করা থাকে এবং মাস্টার নোডে সমস্যা হলে স্লেভ নোড স্বয়ংক্রিয়ভাবে প্রধান নোড হিসেবে কাজ করতে পারে।

Redis Cluster এর প্রধান বৈশিষ্ট্য

  1. ডেটা শার্ডিং:
    • রেডিস ক্লাস্টার ডেটা শার্ডিং ব্যবহার করে, যাতে ডেটা একাধিক নোডে ভাগ করা হয়। এর মাধ্যমে ডেটা স্কেল করা সহজ হয় এবং পারফরম্যান্সে উন্নতি হয়।
    • শার্ডিংয়ের মাধ্যমে একাধিক নোডে ডেটা বিভক্ত হয়ে যায় এবং ডেটার আকারের উপর নির্ভর করে কাজ করা যায়।
  2. প্রতিরক্ষা (High Availability):
    • রেডিস ক্লাস্টার হাই অ্যাভেইলেবিলিটি সাপোর্ট করে, যেখানে প্রতিটি ক্লাস্টার নোডের একাধিক স্লেভ নোড থাকতে পারে। স্লেভ নোড মাষ্টার নোডের ডেটা কপি রাখে, এবং মাষ্টার নোডের ব্যর্থতা ঘটলে স্লেভ নোড অটোমেটিক্যালি মাষ্টার হিসেবে কাজ করতে পারে।
  3. অটোমেটিক ফেইলওভার:
    • ক্লাস্টারে যদি কোনো মাষ্টার নোড অচল হয়ে যায়, স্লেভ নোড তা অ্যাডজাস্ট করতে সক্ষম হয়। এটি ক্লাস্টারের স্থিতিশীলতা নিশ্চিত করে।
  4. স্কেলিং (Horizontal Scaling):
    • রেডিস ক্লাস্টার হরিজেন্টাল স্কেলিং সাপোর্ট করে, অর্থাৎ আপনি নতুন নোড যোগ করতে পারেন ক্লাস্টারে এবং এটি স্বয়ংক্রিয়ভাবে ডেটাকে নতুন নোডে পুনঃবিতরণ করবে।
  5. ট্রানজেকশনাল অপারেশনস:
    • রেডিস ক্লাস্টার একক ট্রানজেকশনাল অপারেশনকে সমর্থন করে না, তবে ক্লাস্টারে MULTI, EXEC, WATCH এবং DISCARD এর মতো সাধারণ ট্রানজেকশন কমান্ডগুলি কাজ করবে।

Redis Cluster কনফিগারেশন

রেডিস ক্লাস্টার তৈরি করতে আপনাকে একটি কনফিগারেশন ফাইল ব্যবহার করতে হবে, এবং রেডিস ইনস্ট্যান্সগুলিকে ক্লাস্টার মোডে চালু করতে হবে। নিচে কিছু গুরুত্বপূর্ণ কনফিগারেশন নির্দেশনা দেওয়া হলো:

  1. cluster-enabled: রেডিস ক্লাস্টার সক্ষম করতে, cluster-enabled প্যারামিটারটি yes সেট করতে হবে:

    cluster-enabled yes
    
  2. cluster-config-file: রেডিস ক্লাস্টার কনফিগারেশন ফাইলের নাম নির্ধারণ করতে:

    cluster-config-file nodes.conf
    
  3. cluster-node-timeout: নোড টাইমআউট সেট করতে:

    cluster-node-timeout 5000
    
  4. port: ক্লাস্টার নোডের পোর্ট নির্ধারণ করতে:

    port 7000
    
  5. bind: রেডিস ক্লাস্টার নোডের আইপি ঠিকানা নির্ধারণ করতে:

    bind 127.0.0.1
    

Redis Cluster তৈরি করার জন্য পদক্ষেপ

  1. নতুন রেডিস ইনস্ট্যান্স শুরু করুন: প্রথমে ক্লাস্টারের জন্য প্রয়োজনীয় সংখ্যক রেডিস ইনস্ট্যান্স চালু করুন, এবং তাদের কনফিগারেশন ফাইল কনফিগার করুন।
  2. নোড সংযোগ: রেডিস ক্লাস্টার তৈরি করতে redis-trib.rb (যা রেডিসের পুরনো টুল ছিল) অথবা redis-cli ব্যবহার করতে হবে। ক্লাস্টার তৈরি করার জন্য সাধারণত redis-cli ব্যবহার করা হয়:

    redis-cli --cluster create 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 --cluster-replicas 1
    

    এখানে, আমরা ৩টি মাষ্টার নোড এবং তাদের সাথে ৩টি স্লেভ নোড তৈরি করেছি।

  3. ক্লাস্টার স্ট্যাটাস চেক করা: ক্লাস্টারের স্ট্যাটাস চেক করতে:

    redis-cli -c -h 127.0.0.1 -p 7000 cluster info
    

Redis Cluster এর সুবিধা

  • স্কেলেবিলিটি: ক্লাস্টারের মাধ্যমে আপনি সহজেই নোড যোগ করতে পারেন, যা আপনার সিস্টেমের ক্ষমতা বৃদ্ধি করবে।
  • হাই অ্যাভেইলেবিলিটি: নোডের ফেইলওভার এবং রেপ্লিকেশন দ্বারা সার্ভিস ডাউন না হয়ে চলতে থাকে।
  • ডিস্ট্রিবিউটেড ডেটা: ডেটা সহজেই শার্ড করা হয় এবং বিভিন্ন নোডে সঞ্চিত থাকে।
  • পারফরম্যান্স: রেডিস ক্লাস্টার অনেক বেশি পারফরম্যান্স প্রদান করে কারণ এটি অনেক নোডে ডেটা বিতরণ করে, যা প্রতিটি নোডের উপরে লোড কমায়।

সারাংশ

রেডিস ক্লাস্টার একটি শক্তিশালী ডিস্ট্রিবিউটেড সিস্টেম যা ডেটাকে শার্ড করে এবং একাধিক নোডের মধ্যে বিভক্ত করে, ফলে বড় পরিসরে ডেটা ব্যবস্থাপনা, স্কেলেবিলিটি এবং উচ্চ অ্যাভেইলেবিলিটি নিশ্চিত হয়। এটি সাধারণত রেডিস সার্ভারের পারফরম্যান্স বৃদ্ধি এবং স্টোরেজ ক্ষমতা বৃদ্ধি করতে ব্যবহৃত হয়।

Content added By

Redis Cluster কনফিগার করা (Sharding)

357

রেডিস ক্লাস্টার (Redis Cluster) হল একটি ডিস্ট্রিবিউটেড রেডিস সেটআপ যা ডেটা শার্ডিং (Sharding) এবং হাই অ্যাভেইলেবিলিটি (High Availability) সরবরাহ করে। রেডিস ক্লাস্টার আপনাকে একাধিক রেডিস নোডের মধ্যে ডেটা ভাগ করার মাধ্যমে স্কেল করতে সাহায্য করে। এটি মূলত ডেটাকে একাধিক নোডে ভাগ করে (শার্ডিং) এবং রেডিস সার্ভারগুলোর মধ্যে ডেটার ভারসাম্য বজায় রাখে।

Redis Cluster কনফিগার করা

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


১. রেডিস ক্লাস্টার নোড সেটআপ

প্রথমে, আপনাকে একটি রেডিস ক্লাস্টারের জন্য বেশ কয়েকটি রেডিস নোড তৈরি করতে হবে। কমপক্ষে 3টি রেডিস নোড প্রয়োজন (তবে সাধারণত 6টি নোডের পরামর্শ দেওয়া হয়, যাতে এটি একটি স্থিতিশীল ক্লাস্টার হয়)।

নোড কনফিগারেশন ফাইল (redis.conf) কনফিগার করা:

প্রতিটি রেডিস নোডের জন্য কনফিগারেশন ফাইলে কিছু সেটিংস পরিবর্তন করতে হবে।

  1. bind: এটি আপনাকে আপনার নোডের জন্য একটি নির্দিষ্ট আইপি ঠিকানা বেঁধে দেওয়ার জন্য ব্যবহৃত হয়।

    bind 0.0.0.0  # সকল আইপি থেকে কানেকশন গ্রহণ করতে
    
  2. port: প্রতি নোডের জন্য একটি ইউনিক পোর্ট নম্বর নির্ধারণ করুন।

    port 7000   # প্রথম নোডের পোর্ট
    
  3. cluster-enabled: ক্লাস্টার সক্ষম করতে এই প্যারামিটারটি yes করতে হবে।

    cluster-enabled yes
    
  4. cluster-config-file: ক্লাস্টারের কনফিগারেশন ফাইলের নাম দিন।

    cluster-config-file nodes-7000.conf  # নোডের কনফিগারেশন ফাইল
    
  5. cluster-node-timeout: ক্লাস্টারের নোডগুলোর মধ্যে টাইমআউট সেট করতে:

    cluster-node-timeout 5000  # 5 সেকেন্ড টাইমআউট
    
  6. 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


সারাংশ

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

Content added By

Redis Cluster এ Data Partitioning

337

Redis Cluster একটি ডিস্ট্রিবিউটেড রেডিস আর্কিটেকচার যা ডেটা পার্টিশনিং (Data Partitioning) বা শার্ডিং (Sharding) সমর্থন করে। এতে, রেডিসের ডেটা একাধিক নোডে ভাগ হয়ে থাকে এবং সার্ভারের লোডকে ভারসাম্যপূর্ণভাবে বিতরণ করে, ফলে সিস্টেমটি আরও স্কেলেবল এবং উচ্চ পারফরম্যান্সযোগ্য হয়।

Redis Cluster এ Data Partitioning

রেডিস ক্লাস্টার ডেটা পার্টিশনিংয়ের জন্য মাল্টিপল শার্ড ব্যবহার করে। প্রতিটি শার্ড ক্লাস্টারের একটি নির্দিষ্ট অংশের ডেটা ধারণ করে। রেডিস ক্লাস্টারের মধ্যে ডেটা পার্টিশনিং করার জন্য, একটি নির্দিষ্ট hash slot ব্যবস্থা ব্যবহৃত হয়। এই পদ্ধতিতে:

  1. মোট 16,384 Hash Slots ব্যবহার করা হয়।
  2. ডেটা পার্টিশনিং: সমস্ত কিপেয়ারগুলিকে এই 16,384 হ্যাশ স্লটের মধ্যে বিভক্ত করা হয়, এবং প্রতিটি স্লট একাধিক রেডিস নোডের মধ্যে বিতরণ করা হয়।
  3. ডিস্ট্রিবিউটেড শার্ডিং: ক্লাস্টারের প্রতিটি নোড একটি বা একাধিক হ্যাশ স্লট ধারণ করে, এবং সেই স্লটের মধ্যে থাকা কিপেয়ারগুলির উপর রিড/রাইট অপারেশন পরিচালনা করে।

Redis Cluster-এ Data Partitioning Working Principle

  1. Hash Slot Calculation: রেডিস ক্লাস্টারে ডেটার partitioning করার জন্য কিপেয়ারগুলিকে hash slots-এ ম্যাপ করা হয়। মোট 16,384 হ্যাশ স্লট থেকে একটি কিপেয়ার নির্বাচন করা হয় যেটি hash slot-এর মধ্যে থাকবে। কিপেয়ারের জন্য সঠিক hash slot পেতে, রেডিস একটি hashing algorithm ব্যবহার করে।

    কিপেয়ারের জন্য সঠিক হ্যাশ স্লট নির্ধারণের জন্য, রেডিস CRC16 এলগরিদম ব্যবহার করে এবং তারপরে এটি 16,384 স্লটের মধ্যে একটি স্লটে ম্যাপ করে।

    hash_slot = CRC16(key) % 16384
    
  2. Data Distribution: রেডিস ক্লাস্টার বিভিন্ন নোডে এই 16,384 হ্যাশ স্লটগুলিকে বিভক্ত করে রাখে। উদাহরণস্বরূপ:
    • নোড 1 স্লট 0 থেকে 1023 পর্যন্ত কিপেয়ার ধারণ করতে পারে।
    • নোড 2 স্লট 1024 থেকে 2047 পর্যন্ত কিপেয়ার ধারণ করতে পারে।
    • এভাবে, পুরো 16,384 স্লট বিভিন্ন নোডে ভাগ হয়ে থাকে।
  3. Scalability: যখন ক্লাস্টারে নতুন নোড যোগ করা হয়, তখন নতুন নোডটি স্লটগুলো গ্রহণ করতে পারে এবং ডেটা রিবালেন্সিং স্বয়ংক্রিয়ভাবে সম্পন্ন হয়। এটি ডেটা অ্যাক্সেসের ভারসাম্যপূর্ণ বিতরণ নিশ্চিত করে।
  4. Cross Slot Operations: যদি কোনও অপারেশন একাধিক হ্যাশ স্লটের মধ্যে হয়ে থাকে, তবে রেডিস ক্লাস্টার সেই অপারেশনটি সম্পাদন করতে পারবে না। উদাহরণস্বরূপ, যদি দুটি কিপেয়ার দুটি আলাদা হ্যাশ স্লটে থাকে, তাহলে তাদের উপর একই ট্রানজ্যাকশন বা মুলতুবি অপারেশন চালানো সম্ভব হবে না। তবে, MOVED এবং ASK এর মতো রিডিরেকশন কমান্ডের মাধ্যমে এ ধরনের সমস্যা মোকাবিলা করা হয়।

Redis Cluster-এ Data Partitioning এর সুবিধা

  1. স্কেলেবিলিটি (Scalability):
    • রেডিস ক্লাস্টারের মধ্যে ডেটা শার্ডিংয়ের মাধ্যমে, আপনি ডেটাবেসের আকার বৃদ্ধি করতে পারেন এবং আরও নোড যোগ করে অ্যাপ্লিকেশনের স্কেলআপ করতে পারেন। ক্লাস্টারটি স্বয়ংক্রিয়ভাবে নতুন নোডে ডেটা পুনঃবণ্টন (resharding) করবে।
  2. লোড ব্যালেন্সিং (Load Balancing):
    • ডেটা বিভিন্ন নোডে সমানভাবে বিতরণ করা হয়, ফলে সার্ভারের উপর লোড কমে এবং অ্যাপ্লিকেশনের পারফরম্যান্স বৃদ্ধি পায়।
  3. হাই অ্যাভেইলিবিলিটি (High Availability):
    • ডেটার কপির জন্য Replica (স্লেভ) নোড ব্যবহার করা হয়, যাতে কোনো নোড ব্যর্থ হলে অন্য নোডগুলি ডেটার কপি রেখে অ্যাপ্লিকেশনের সিস্টেমের অ্যাভেইলিবিলিটি বজায় থাকে।
  4. ডিস্ট্রিবিউটেড রিড/রাইট অপারেশন (Distributed Read/Write Operations):
    • রেডিস ক্লাস্টার প্রতিটি নোডে ডেটা রিড/রাইট অপারেশন করতে পারে, যা পারফরম্যান্স বৃদ্ধিতে সাহায্য করে। ডিস্ট্রিবিউটেড সিস্টেমের কারণে একাধিক ক্লায়েন্ট একই সময় বিভিন্ন নোডে একাধিক অপারেশন করতে সক্ষম হয়।

Redis Cluster Setup Example for Data Partitioning

যদি আপনি রেডিস ক্লাস্টার তৈরি করতে চান, তাহলে কিছু সাধারণ কনফিগারেশন এবং স্টেপগুলো নিম্নরূপ হতে পারে:

  1. Redis Cluster Nodes Setup: প্রথমে, কমপক্ষে তিনটি রেডিস সার্ভার (নোড) চালু করুন। প্রতিটি সার্ভারে redis.conf ফাইলের মধ্যে cluster-enabled অপশনটি yes করতে হবে।

    cluster-enabled yes
    cluster-config-file nodes.conf
    cluster-node-timeout 5000
    
  2. Redis Cluster Creation: একাধিক রেডিস সার্ভার প্রস্তুত করার পর, ক্লাস্টার তৈরি করতে redis-cli ব্যবহার করুন। উদাহরণস্বরূপ:

    redis-cli --cluster create <node1-ip>:6379 <node2-ip>:6379 <node3-ip>:6379 --cluster-replicas 1
    
  3. Verifying Cluster Setup: ক্লাস্টার সফলভাবে তৈরি হলে, আপনি ক্লাস্টারের স্ট্যাটাস চেক করতে পারেন:

    redis-cli -c -h <node-ip> -p 6379 cluster info
    
  4. Handling Data Distribution: একবার ক্লাস্টার তৈরি হলে, আপনি যেকোনো কিপেয়ার সন্নিবেশ করতে পারেন এবং তা স্বয়ংক্রিয়ভাবে সঠিক হ্যাশ স্লট এবং নোডে বিতরণ হবে:

    redis-cli -h <node-ip> -p 6379 SET key1 "value1"
    

সারাংশ

Redis Cluster ডেটা পার্টিশনিংয়ের জন্য 16,384 hash slots ব্যবহার করে এবং এই স্লটগুলিকে বিভিন্ন নোডে বিতরণ করে। এটি ডেটার স্কেলেবিলিটি, লোড ব্যালেন্সিং এবং হাই অ্যাভেইলিবিলিটি নিশ্চিত করে। রেডিস ক্লাস্টার শার্ডিং এবং রিপ্লিকেশনকে একত্রিত করে ডিস্ট্রিবিউটেড সিস্টেম তৈরি করতে সহায়তা করে, যার মাধ্যমে আপনি রেডিস সার্ভারগুলির মধ্যে ডেটা সঠিকভাবে শেয়ার করতে পারেন এবং আরও স্কেলেবল অ্যাপ্লিকেশন তৈরি করতে সক্ষম হন।

Content added By

Cluster Failover এবং High Availability

302

Cluster Failover এবং High Availability রেডিসের অত্যন্ত গুরুত্বপূর্ণ বৈশিষ্ট্য যা রেডিস ক্লাস্টারকে আরও কার্যকর, স্থিতিশীল এবং নির্ভরযোগ্য করে তোলে। এই বৈশিষ্ট্যগুলি ব্যবহার করে, রেডিস সিস্টেমের অ্যাভেইলেবিলিটি এবং ডেটা সংরক্ষণ নিশ্চিত করা যায়, যাতে সার্ভারের ব্যর্থতা সত্ত্বেও সিস্টেম চালু থাকে এবং ডেটা ক্ষতিগ্রস্ত না হয়।

Cluster Failover এবং High Availability রেডিসে কিভাবে কাজ করে?


Cluster Failover

Cluster Failover রেডিস ক্লাস্টারের মধ্যে ডেটা শেয়ার এবং পুনরুদ্ধারের প্রক্রিয়া। এটি রেডিস ক্লাস্টার ব্যবস্থায় একাধিক মাস্টার এবং স্লেভ সার্ভার রাখে, যেখানে যদি কোনও মাষ্টার সার্ভার ব্যর্থ হয়, তাহলে স্লেভ সার্ভারটি স্বয়ংক্রিয়ভাবে মাস্টার সার্ভার হিসেবে গ্রহণ করে এবং ক্লাস্টারের কার্যক্রম অব্যাহত থাকে।

রেডিস ক্লাস্টারে, ফেইলওভার প্রক্রিয়াটি মূলত স্লেভ সার্ভারের অটোমেটিক প্রমোশন এর মাধ্যমে ঘটে। অর্থাৎ, যদি মাষ্টার সার্ভার অপ্রাপ্য হয়ে যায়, স্লেভ সার্ভারটি তার দায়িত্ব গ্রহণ করে এবং ক্লাস্টারকে অব্যাহত রাখে।

Cluster Failover-এর প্রক্রিয়া:

  1. মাস্টার সার্ভার ব্যর্থতা: একটি মাষ্টার সার্ভার যদি ব্যর্থ হয় বা বন্ধ হয়ে যায়, তার সাথে যুক্ত স্লেভ সার্ভারটি ফেইলওভার প্রক্রিয়ায় এক্টিভেট হয়ে যায়।
  2. স্লেভ সার্ভার প্রমোশন: স্লেভ সার্ভারটি নতুন মাষ্টার হিসেবে নির্বাচিত হয় এবং পুরনো মাষ্টারের ডেটা পুনরুদ্ধার করা হয়।
  3. ডেটার ধারাবাহিকতা: মাষ্টার সার্ভারের ব্যর্থতার পরেও সিস্টেমের ডেটা অক্ষত থাকে এবং ক্লাস্টারের পারফরম্যান্স অক্ষুণ্ন থাকে।

ফেইলওভার সেটআপ:

  • রেডিস ক্লাস্টারে ফেইলওভার সক্ষম করতে, স্লেভ সার্ভারগুলি মাষ্টার সার্ভারের সাথে সংযুক্ত থাকতে হবে।
  • ফেইলওভার পরিচালনা করার জন্য, রেডিস Sentinel ব্যবস্থাও ব্যবহৃত হতে পারে যা সার্ভারগুলোর অবস্থান মনিটর করে এবং ব্যর্থ সার্ভারের পরিবর্তে একটি নতুন সার্ভার নির্বাচন করে।

High Availability (HA)

High Availability বা উচ্চ উপলব্ধতা হল এমন একটি কনফিগারেশন যা সার্ভারের ব্যর্থতা সত্ত্বেও সিস্টেমের ডেটা উপলব্ধ রাখতে সহায়তা করে। রেডিসে উচ্চ উপলব্ধতা নিশ্চিত করতে সাধারণত Redis Sentinel এবং Redis Cluster ব্যবহৃত হয়।

Redis Sentinel:

Redis Sentinel একটি অটোমেটিক ফেইলওভার সিস্টেম এবং এটি High Availability নিশ্চিত করে। এটি রেডিস ক্লাস্টারের মাষ্টার সার্ভারের স্থিতি মনিটর করে এবং মাষ্টার সার্ভার ব্যর্থ হলে একটি স্লেভ সার্ভারকে মাষ্টার হিসেবে প্রমোট করে। Sentinel এর মাধ্যমে, মাষ্টার সার্ভারের অপ্রাপ্যতা সত্ত্বেও রেডিস সিস্টেম চলতে থাকে।

Redis Sentinel এর প্রধান কাজগুলো হল:

  1. Monitors: রেডিস সার্ভারের স্বাস্থ্যের পর্যবেক্ষণ করে।
  2. Notifies: যদি কোনও সার্ভার ব্যর্থ হয়, তাহলে সিস্টেম অ্যাডমিনিস্ট্রেটরকে বা সিস্টেমে সংশ্লিষ্ট অংশকে জানানো হয়।
  3. Failover: মাষ্টার সার্ভারের ব্যর্থতার পর স্লেভ সার্ভারকে প্রমোট করে ক্লাস্টার চালু রাখে।
  4. Configuration Provider: Sentinel রেডিস ক্লায়েন্টদের ক্লাস্টারের বর্তমান কনফিগারেশন জানায়।

Redis Sentinel এর প্রক্রিয়া:

  1. মনিটরিং: Sentinel সার্ভারগুলি মাষ্টার এবং স্লেভ সার্ভারগুলির স্থিতি পরীক্ষা করে।
  2. ফেইলওভার: যদি মাষ্টার সার্ভার ব্যর্থ হয়, Sentinel একটি স্লেভ সার্ভারকে প্রমোট করে নতুন মাষ্টার তৈরি করে।
  3. কনফিগারেশন আপডেট: রেডিস ক্লায়েন্টরা Sentinel সার্ভার থেকে নতুন মাষ্টার সার্ভারের কনফিগারেশন পেয়ে যায়, যাতে তারা ডেটা অ্যাক্সেস করতে পারে।

High Availability (HA) কনফিগারেশন:

  • Redis Sentinel এর মাধ্যমে ক্লাস্টারের মাষ্টার সার্ভারের ব্যর্থতার পর নতুন মাষ্টার নির্বাচন করা হয় এবং ফেইলওভার প্রক্রিয়া সম্পন্ন হয়।
  • এই কনফিগারেশন নিশ্চিত করে যে, ক্লাস্টারটি উচ্চ উপলব্ধতা বজায় রাখবে এবং ডেটা অক্ষত থাকবে।

Redis Cluster Failover এবং High Availability এর সাথে সম্পর্ক

  1. High Availability নিশ্চিত করতে Redis Cluster এবং Redis Sentinel একত্রে কাজ করে।
    • Redis Cluster রেপ্লিকেশন ও শার্ডিং সিস্টেমে ব্যবহার হয়, যেখানে ডেটা একাধিক সার্ভারের মধ্যে ভাগ করা হয়।
    • Redis Sentinel ব্যর্থতার সময় স্বয়ংক্রিয়ভাবে স্লেভ সার্ভারকে প্রমোট করে ফেইলওভার প্রক্রিয়া সম্পন্ন করে।
  2. Redis Sentinel ব্যর্থ হলে, ক্লাস্টারের অটোমেটিক ফেইলওভার নিশ্চিত করে High Availability এবং Cluster Failover সিস্টেমের মধ্যে পারফরম্যান্স বজায় থাকে।

উপসংহার

  • Cluster Failover রেডিসে উচ্চ উপলব্ধতা নিশ্চিত করার জন্য স্লেভ সার্ভারগুলিকে মাষ্টার হিসেবে প্রমোট করে, যখন মাষ্টার সার্ভার ব্যর্থ হয়। এটি রেডিস ক্লাস্টার ব্যবস্থার অংশ।
  • High Availability (HA) নিশ্চিত করতে Redis Sentinel ব্যবহৃত হয়, যা মাষ্টার সার্ভারের ব্যর্থতা ঘটলে স্বয়ংক্রিয়ভাবে স্লেভ সার্ভারকে প্রমোট করে এবং ক্লাস্টারের ডেটা বজায় রাখে।
  • এই প্রক্রিয়াগুলোর মাধ্যমে, রেডিস সিস্টেমের সামগ্রিক উপলব্ধতা, পারফরম্যান্স, এবং ডেটা সুরক্ষা নিশ্চিত হয়।
Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...