Cassandra রেপ্লিকেশন ফ্যাক্টর ও কনসিস্টেন্সি লেভেল সম্পর্কে

Cassandra রেপ্লিকেশন ফ্যাক্টর সম্পর্কে

নির্ভরযোগ্যতা ও ফল্ট টলারেন্স নিশ্চিত করতে Cassandra একাধিক নোডে ডেটা রেপ্লিকা স্টোর করে। প্রতিটি এজ কীস্পেসের জন্য রেপ্লিকেশন স্ট্র্যাটেজি নির্ধারণ করে যে নোডগুলিতে রেপ্লিকা রাখা হয়।

Cassandra ক্লাস্টার জুড়ে একটি কীস্পেসের জন্য রেপ্লিকার মোট সংখ্যাকে কীস্পেসের রেপ্লিকেশন ফ্যাক্টর বলা হয়। রেপ্লিকেশন ফ্যাক্টর এক হলে বুঝতে হবে যে Cassandra ক্লাস্টারে প্রতিটি সারির একটি করে কপি আছে। রেপ্লিকেশন ফ্যাক্টর দুই হলে, এর অর্থ হল প্রতিটি সারির দুটি কপি আছে, যেখানে প্রতিটি কপি আলাদা আলাদা নোডে আছে। সব রেপ্লিকা সমান গুরুত্বপূর্ণ; কোনও প্রাথমিক বা মাস্টার রেপ্লিকা নেই।

প্রতিটি ডেটা সেন্টারে তিন বা তার বেশি Cassandra নোড সহ প্রোডাকশন সিস্টেমে, Edge কীস্পেসের জন্য ডিফল্ট রেপ্লিকেশন ফ্যাক্টর হল তিন। সাধারণ নিয়ম অনুযায়ী, রেপ্লিকেশন ফ্যাক্টর ক্লাস্টারে ক্যাসান্ড্রা নোডের সংখ্যার থেকে বেশি হওয়া উচিত নয়।

Cassandra স্কিমা দেখতে নিম্নলিখিত পদ্ধতি ব্যবহার করুন, যা প্রতিটি Edge কীস্পেসের জন্য রেপ্লিকেশন ফ্যাক্টর দেখায়:

  1. Cassandra নোডে লগ-ইন করুন।
  2. নিম্নলিখিত কমান্ড রান করুন:
    /opt/apigee/apigee-cassandra/bin/cqlsh $(hostname -i) [-u cassuser -p casspass] -e "select keyspace_name, replication from system_schema.keyspaces;"

    যেখানে $(hostname -i) Cassandra নোডের IP অ্যাড্রেসে সমাধান করে। অথবা আপনি নোডের IP অ্যাড্রেস দিয়ে $(hostname -i) পাল্টে দিতে পারেন।

    cassuser: আপনি Cassandra যাচাইকরণ চালু করে থাকলে, Cassandra ইউজারনেম দিন। এটি ঐচ্ছিক এবং আপনার Cassandra যাচাইকরণ চালু করা না থাকলে এটি এড়িয়ে যাওয়া যেতে পারে।

    casspass: আপনি Cassandra যাচাইকরণ চালু করে থাকলে, Cassandra পাসওয়ার্ড দিন। এটি ঐচ্ছিক এবং আপনার Cassandra যাচাইকরণ চালু করা না থাকলে এটি এড়িয়ে যাওয়া যেতে পারে।

আপনি নিচের মতো আউটপুট দেখতে পাবেন, যেখানে প্রতিটি সারি একটি করে কীস্পেসকে উপস্থাপন করে:

  keyspace_name       | replication                                                                 
  kms                 | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'dc-1': '3'}
  system_distributed  | {'class': 'org.apache.cassandra.locator.SimpleStrategy', 'replication_factor': '3'}
  apprepo             | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'dc-1': '3'}
  

আপনি দেখতে পাবেন যে ডেটা সেন্টার ১, dc-1-এর জন্য, তিনটি Cassandra নোড সহ ইনস্টলেশনের জন্য kms কীস্পেসের ডিফল্ট রেপ্লিকেশন ফ্যাক্টর হল তিন। Cassandra-র ইন্টার্নাল নির্দিষ্ট কিছু কীস্পেসের (যেমন, system, system_schema ইত্যাদি) জন্য, রেপ্লিকেশন স্ট্র্যাটেজি ও রেপ্লিকেশন ফ্যাক্টর আলাদা হতে পারে। এটি হল ইচ্ছাকৃত সিস্টেম আচরণ।

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

Cassandra কনসিস্টেন্সি লেভেল সম্পর্কে

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

রিড ও রাইট অপারেশনের জন্য Cassandra-র সাথে কানেক্ট করার সময়, মেসেজ প্রসেসর ও ম্যানেজমেন্ট সার্ভার নোড সাধারণত LOCAL_QUORUM-এর Cassandra ভ্যালু ব্যবহার করে কীস্পেসের জন্য কনসিস্টেন্সি লেভেল নির্দিষ্ট করে। তবে, কিছু কীস্পেসকে একটি কনসিস্টেন্সি লেভেল ব্যবহার করার জন্য সংজ্ঞায়িত করা হয়।

ডেটা সেন্টারের জন্য LOCAL_QUORUM-এর ভ্যালু গণনা করার পদ্ধতি হল:

LOCAL_QUORUM = (replication_factor/2) + 1

উপরে বর্ণিত, তিনটি Cassandra নোড সহ Edge প্রোডাকশন এনভায়রনমেন্টের জন্য ডিফল্ট রেপ্লিকেশন ফ্যাক্টর হল তিন। তাই, LOCAL_QUORUM-এর ডিফল্ট ভ্যালু = (৩/২) +১ = ২ (ভ্যালু পূর্ণসংখ্যায় রাউন্ড ডাউন করা হয়েছে)।

LOCAL_QUORUM = 2 হলে, ডেটা সেন্টারের মধ্যে থাকা তিনটি Cassandra নোডের মধ্যে অন্তত দুটিকে রিড/রাইট অপারেশনের উত্তর দিতে হবে, তবেই অপারেশনটি সফল হবে। তিনটি নোড Cassandra ক্লাস্টারের ক্ষেত্রে, ক্লাস্টারটি তাই প্রতিটি ডেটা সেন্টার পিছু একটি নোড ডাউন হয়ে যাওয়া সহ্য করতে পারে।

কনসিস্টেন্সি লেভেল LOCAL_QUORUM হিসেবে নির্দিষ্ট করার মাধ্যমে, একাধিক ডেটা সেন্টার জুড়ে অপারেশন যাচাই করার জন্য Edge-এর প্রয়োজনীয় লেটেন্সি এড়িয়ে যায়। কোনও কীস্পেস কনসিস্টেন্সি লেভেল হিসেবে Cassandra QUORUM ভ্যালু ব্যবহার করলে, রিড/রাইট অপারেশনকে সব ডেটা সেন্টার জুড়ে যাচাই করতে হবে।

Edge Message Processor বা ম্যানেজমেন্ট সার্ভার নোড দ্বারা ব্যবহৃত ধারাবাহিকতার লেভেল দেখতে:

  1. Message Processor নোডে লগ-ইন করুন।
  2. /opt/apigee/edge-message-processor/conf ডিরেক্টরিতে পরিবর্তন করুন:
    cd /opt/apigee/edge-message-processor/conf
  3. পড়া ও লেখার ধারাবাহিকতার জন্য:
    grep -ri "consistency.level" *
  4. ম্যানেজমেন্ট সার্ভার নোডে লগ-ইন করুন।
  5. /opt/apigee/edge-management-server/conf ডিরেক্টরিতে পরিবর্তন করুন:
    cd /opt/apigee/edge-management-server/conf
  6. ৩ নম্বর ধাপ আবার করুন।

আপনি ক্লাস্টারে অতিরিক্ত Cassandra নোড যোগ করলে, কনসিস্টেন্সি লেভেল প্রভাবিত হয় না।