Cassandra র‍্যাক সহায়তা যোগ করা

এই বিভাগে Cassandra-এর স্কেলিং অপারেশন সম্পর্কে সাধারণ নির্দেশিকা প্রদান করা হয়েছে। এর জন্য Apigee Edge for Private Cloud-এ Cassandra-কে র‍্যাক অ্যাওয়ার করতে হবে।

আপনার Cassandra রিংকে র‍্যাক সম্পর্কে সচেতন করা কেন গুরুত্বপূর্ণ সেই সম্পর্কে আরও তথ্যের জন্য, নিম্নলিখিত রিসোর্সগুলি দেখুন:

র‍্যাক কী?

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

এই বিভাগে দেওয়া উদাহরণে তিনটি Cassandra র‍্যাক ব্যবহার করা হয়েছে, যা Apigee-এর প্রোডাকশন টপোলজিতে সমর্থিত র‍্যাকের সংখ্যা।

Apigee Edge for Private Cloud-এ Cassandra-এর ডিফল্ট ইনস্টলেশন একটি একক লজিক্যাল র্যাক অনুমান করে এবং সমস্ত নোডগুলি এর মধ্যে একটি ডেটা সেন্টারে রাখে। যদিও এই কনফিগারেশন ইনস্টল এবং ম্যানেজ করা সহজ, তবে কোনও একটি নোডে অপারেশন ব্যর্থ হলে এটিও ব্যর্থ হতে পারে।

নিচের ছবিতে Cassandra রিংয়ের ডিফল্ট কনফিগারেশন দেখানো হয়েছে:

৩টি নোড সহ ১টি র‍্যাক
(ছবি ১) ডিফল্ট কনফিগারেশন: একটি র‍্যাকে সব নোড

আরও শক্তিশালী কনফিগারেশনে, প্রতিটি নোডকে একটি পৃথক র‍্যাক এবং অপারেশনে অ্যাসাইন করা হবে এছাড়াও সেই প্রতিটি র‍্যাকে রেপ্লিকাতেও এক্সিকিউট করা হবে।

নিচের ছবিতে ৩-নোড রিং দেখানো হয়েছে। এই ছবিতে দেখানো হয়েছে যে কোন ক্রমে অপারেশনগুলি রিং জুড়ে (ঘড়ির কাঁটার দিকে) রেপ্লিকেট করা হয় এবং এই তথ্য হাইলাইট করে যে কোনও দুটি নোড একই র‍্যাকে নেই:

৩টি র‍্যাক, প্রতিটি র‍্যাকে ১টি করে নোড আছে
(ছবি ২) র‍্যাক অ্যাওয়ার কনফিগারেশন: তিনটি নোড, প্রতিটি র‍্যাকে একটি করে

এই কনফিগারেশনে, অপারেশনগুলি একটি নোডে পাঠানো হয় তবে সেই নোডের রেপ্লিকাতেও পাঠানো হয় অন্যান্য র্যাকে (ঘড়ির কাঁটার দিকে)।

র‍্যাক অ্যাওয়ারনেস যোগ করুন (৩টি নোড সহ)

Private Cloud-এর জন্য Apigee Edge-এর সব প্রোডাকশন ইনস্টলেশন টপোলজি-তে অন্তত তিনটি Cassandra নোড থাকে, যেগুলিকে এই বিভাগে "IP1", "IP2" ও "IP3" হিসেবে উল্লেখ করা হয়েছে। ডিফল্ট হিসেবে, এই প্রতিটি নোড একই র্যাকে থাকে, "ra-1"।

এই বিভাগে বর্ণনা করা হয়েছে যে কীভাবে Cassandra নোডকে আলাদা র‍্যাকে অ্যাসাইন করতে হয় যাতে সব অপারেশন রিংয়ের মধ্যে আলাদা লজিক্যাল গ্রুপিংয়ে রেপ্লিকা নোডে পাঠানো যায়।

ইনস্টলেশনের সময় Cassandra নোডকে বিভিন্ন র‍্যাকে অ্যাসাইন করতে:

  1. ইনস্টলার চালানোর আগে, Cassandra নোডে লগ-ইন করুন এবং এডিট করার জন্য নিম্নলিখিত সাইলেন্ট কনফিগারেশন ফাইল খুলুন:
    /opt/silent.conf

    ফাইলটি না থাকলে তৈরি করুন এবং "apigee" ব্যবহারকারীকে মালিক হিসেবে সেট করতে ভুলবেন না।

  2. CASS_HOSTS প্রপার্টি এডিট করুন, স্পেস দিয়ে আলাদা করা IP অ্যাড্রেসের তালিকা (DNS বা হোস্টনেম এন্ট্রি নয়) যা নিম্নলিখিত সিনট্যাক্স ব্যবহার করে:
    CASS_HOSTS="IP_address:data_center_number,rack_number [...]"

    ডিফল্ট ভ্যালু হল তিন নোডের Cassandra রিং, যেখানে প্রতিটি নোড র‍্যাক ১ ও ডেটা সেন্টার ১-এ অ্যাসাইন করা থাকে, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:

    CASS_HOSTS="IP1:1,1 IP2:1,1 IP3:1,1"
  3. র‍্যাক অ্যাসাইনমেন্ট পরিবর্তন করুন যাতে নোড ২ র‍্যাক ২-এ এবং নোড ৩ র‍্যাক ৩-এ অ্যাসাইন করা হয়, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:
    CASS_HOSTS="IP1:1,1 IP2:1,2 IP3:1,3"

    র‍্যাক অ্যাসাইনমেন্ট পরিবর্তন করে, আপনি Cassandra-কে দুটি অতিরিক্ত লজিক্যাল গ্রুপিং (র‍্যাক) তৈরি করার নির্দেশ দেন, যা পরে প্রথম নোডের মাধ্যমে প্রাপ্ত সমস্ত অপারেশন গ্রহণ করে এমন রেপ্লিকা প্রদান করে।

    CASS_HOSTS কনফিগারেশন প্রপার্টি ব্যবহার করার ব্যাপারে আরও তথ্যের জন্য, Edge কনফিগারেশন ফাইল রেফারেন্স দেখুন।

  4. কনফিগারেশন ফাইলে আপনার করা পরিবর্তন সেভ করুন এবং আপনার আপডেট করা কনফিগারেশনের সাথে Cassandra ইনস্টল করতে নিম্নলিখিত কমান্ডটি এক্সিকিউট করুন:
    /opt/apigee/apigee-setup/bin/setup.sh -p c -f path/to/silent/config

    যেমন:

    /opt/apigee/apigee-setup/bin/setup.sh -p c -f /opt/silent.conf
  5. রিংয়ের প্রতিটি Cassandra নোডের জন্য এই পদ্ধতিটি পুনরাবৃত্তি করুন, যে ক্রমে নোডগুলি CASS_HOSTS প্রপার্টিতে অ্যাসাইন করা হয়েছে। এই ক্ষেত্রে, আপনাকে অবশ্যই নিম্নলিখিত ক্রমে Cassandra ইনস্টল করতে হবে:
    1. নোড ১ (IP1)
    2. নোড ২ (IP2)
    3. Node 3 (IP3)

ইনস্টল করার পরে, আপনাকে Cassandra কনফিগারেশন চেক করতে হবে।

Cassandra কনফিগারেশন চেক করুন

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

/opt/apigee/apigee-cassandra/bin/nodetool status

(আপনি Cassandra নোডের একটিতে এই কমান্ডটি এক্সিকিউট করেন।)

ফলাফলটি নিম্নলিখিতটির মতো দেখতে হওয়া উচিত, যেখানে র‍্যাক কলামটি প্রতিটি নোডের জন্য বিভিন্ন র‍্যাক আইডি দেখায়:

Datacenter: dc-1
========================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address         Load       Tokens  Owns    Host ID                             Rack
UN  IP1   737 MB  256     ?     554d4498-e683-4a53-b0a5-e37a9731bc5c     ra-1
UN  IP2   744 MB  256     ?     cf8b7abf-5c5c-4361-9c2f-59e988d52da3     ra-2
UN  IP3   723 MB  256     ?     48e0384d-738f-4589-aa3a-08dc5bd5a736     ra-3

আপনি Cassandra-র জন্য JMX যাচাইকরণ চালু করলে, আপনাকে অবশ্যই nodetool-এ আপনার ইউজারনেম এবং পাসওয়ার্ড পাস করতে হবে। আরও তথ্যের জন্য, ক্লাস্টার নোড ম্যানেজ করতে nodetool ব্যবহার করুন দেখুন।

ছয়-নোড রিং ইনস্টল করুন

অতিরিক্ত রিডানডেন্সির জন্য, আপনি Cassandra রিংকে ছয়টি নোডে প্রসারিত করতে পারেন। এই ক্ষেত্রে, আপনি তিনটি র‍্যাকের প্রতিটিতে দুটি করে নোড অ্যাসাইন করেন। এই কনফিগারেশনের জন্য আরও তিনটি Node প্রয়োজন: Node 4 (IP4), Node 5 (IP5) এবং Node 6 (IP6)।

নিচের ছবিতে দেখানো হয়েছে যে রিং জুড়ে অপারেশনগুলি কোন ক্রমে রেপ্লিকেট করা হয় (ঘড়ির কাঁটার দিকে) এবং এই সত্যটি হাইলাইট করে যে রেপ্লিকেশন চলাকালীন, কোনও দুটি সংলগ্ন নোড একই র্যাকে থাকে না:

৩টি র‍্যাক, প্রতিটি র‍্যাকে ২টি করে নোড আছে
(ছবি ৩) ৬-নোড Cassandra রিং: তিনটি র‍্যাকের প্রতিটিতে দুটি করে নোড

এই কনফিগারেশনে, প্রতিটি নোডের আরও দুটি রেপ্লিকা থাকে: অন্য দুটি র‍্যাকের প্রতিটিতে একটি করে। যেমন, র‍্যাক ১-এর নোড ১-এর রেপ্লিকা র‍্যাক ২ ও র‍্যাক ৩-এ আছে। নোড ১-এ পাঠানো অপারেশনগুলিও ঘড়ির কাঁটার ক্রমে অন্যান্য র‍্যাকের রেপ্লিকায় পাঠানো হয়।

তিন-নোড Cassandra রিংকে ছয়-নোড Cassandra রিংয়ে বড় করতে, আপনার সাইলেন্ট কনফিগারেশন ফাইলে নিম্নলিখিত উপায়ে নোড কনফিগার করুন:

CASS_HOSTS="IP1:1,1 IP4:1,3 IP2:1,2 IP5:1,1 IP3:1,3 IP6:1,2"

তিন-নোড রিংয়ের মতো, আপনাকে অবশ্যই একই ক্রমে Cassandra ইনস্টল করতে হবে, যে ক্রমে নোডগুলি CASS_HOSTS প্রপার্টিতে দেখা যায়:

  1. নোড ১ (IP1)
  2. Node 4 (IP4)*
  3. নোড ২ (IP2)
  4. Node 5 (IP5)
  5. Node 3 (IP3)
  6. Node 6 (IP6)

* সেট-আপ ইউটিলিটি চালানোর আগে সাইলেন্ট কনফিগারেশন ফাইলে আপনার পরিবর্তনগুলি করুন চতুর্থ নোডে (Cassandra ইনস্টলেশন অর্ডারে দ্বিতীয় মেশিন)।

১২টি নোড পর্যন্ত বড় করুন

ফল্ট টলারেন্স এবং উপলভ্যতা আরও বাড়াতে, আপনি রিংয়ে ক্যাসান্দ্রা নোডের সংখ্যা ছয় থেকে বাড়িয়ে ১২ করতে পারেন। এই কনফিগারেশনের জন্য অতিরিক্ত ছয়টি নোড (IP7 থেকে IP12) প্রয়োজন।

নিচের ছবিতে দেখানো হয়েছে যে রিং জুড়ে অপারেশনগুলি কোন ক্রমে রেপ্লিকেট করা হয় (ঘড়ির কাঁটার দিকে) এবং এই সত্যটি হাইলাইট করে যে রেপ্লিকেশন চলাকালীন, কোনও দুটি সংলগ্ন নোড একই র্যাকে থাকে না:

৩টি র‍্যাক, প্রতিটি র‍্যাকে ৪টি করে নোড আছে
(ছবি ৪) ১২-নোড Cassandra রিং: তিনটি র‍্যাকের প্রতিটিতে চারটি করে নোড

১২-নোড রিং ইনস্টল করার পদ্ধতি তিন বা ছয়-নোড রিং ইনস্টল করার মতোই: CASS_HOSTS-কে প্রদত্ত ভ্যালুতে সেট করুন এবং নির্দিষ্ট ক্রমে ইনস্টলার রান করুন।

১২-নোড Cassandra রিংয়ে প্রসারিত করতে, আপনার সাইলেন্ট কনফিগারেশন ফাইলে নিম্নলিখিত উপায়ে নোডগুলি কনফিগার করুন:

CASS_HOSTS="IP1:1,1 IP7:1,2 IP4:1,3 IP8:1,1 IP2:1,2 IP9:1,3 IP5:1,1 IP10:1,2 IP3:1,3 IP11:1,1 IP6:1,2 IP12:1,3"

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

  1. নোড ১ (IP1)
  2. Node 7 (IP7)*
  3. Node 4 (IP4)
  4. Node 8 (IP8)
  5. নোড ২ (IP2)
  6. Node 9 (IP9)
  7. Node 5 (IP5)
  8. Node 10 (IP10)
  9. Node 3 (IP3)
  10. Node 11 (IP11)
  11. Node 6 (IP6)
  12. Node 12 (IP12)

* ৭ম নোডে (Cassandra ইনস্টলেশন অর্ডারে দ্বিতীয় মেশিন) Private Cloud-এর জন্য Apigee Edge ইনস্টল করার আগে আপনাকে এইসব পরিবর্তন করতে হবে।