Elasticsearch-এ Cluster Management এবং Nodes খুব গুরুত্বপূর্ণ দুটি কনসেপ্ট, যা ক্লাস্টারের স্থিতিশীলতা, পারফরম্যান্স, এবং স্কেলিং বজায় রাখতে সাহায্য করে। Elasticsearch একটি ডিস্ট্রিবিউটেড সার্চ ইঞ্জিন, যেখানে একাধিক নোড একসঙ্গে কাজ করে একটি ক্লাস্টার তৈরি করে এবং ডেটা ইনডেক্সিং, সার্চ, এবং বিশ্লেষণ কার্য পরিচালনা করে। ক্লাস্টার এবং নোড ম্যানেজমেন্টের মাধ্যমে আপনি ক্লাস্টারের স্থিতিশীলতা, শার্ড ম্যানেজমেন্ট, এবং নোড স্কেলিং পরিচালনা করতে পারেন।

1. Elasticsearch Cluster এর ধারণা

Elasticsearch ক্লাস্টার হলো এক বা একাধিক নোডের সমষ্টি যা একসঙ্গে একটি ইউনিফাইড সার্চ এবং ডেটা প্রসেসিং ইঞ্জিন হিসেবে কাজ করে। প্রতিটি ক্লাস্টারের একটি ইউনিক Cluster Name থাকে, এবং ক্লাস্টারে থাকা প্রতিটি নোড একই ক্লাস্টার নেম শেয়ার করে।

Cluster এর মূল উপাদান:

  • Node: একটি নোড হলো একটি ইন্ডিভিজুয়াল ইনস্ট্যান্স যা Elasticsearch এ রান করে। এক বা একাধিক নোড মিলে একটি ক্লাস্টার তৈরি করে। নোডে ডেটা সংরক্ষণ এবং সার্চ রিকোয়েস্ট হ্যান্ডেল করার জন্য শার্ড থাকে।
  • Master Node: এটি ক্লাস্টারের জন্য গুরুত্বপূর্ণ কার্য সম্পাদন করে, যেমন শার্ড বরাদ্দ করা, ক্লাস্টারের স্টেট মেইনটেইন করা, এবং নতুন নোড যোগ বা রিমুভ করার মতো কাজ।
  • Data Node: ডেটা সংরক্ষণ এবং সার্চ রিকোয়েস্ট হ্যান্ডেল করার জন্য ব্যবহৃত হয়। এগুলো শার্ড ধারণ করে এবং ইনডেক্স ও সার্চ অপারেশন পরিচালনা করে।
  • Ingest Node: ডেটা প্রসেসিং পাইপলাইনের জন্য ব্যবহৃত হয়, যেমন ইনডেক্স করার পূর্বে ডেটা ট্রান্সফর্ম বা মডিফাই করা।
  • Coordinating Node: এটি সার্চ রিকোয়েস্ট রিসিভ করে এবং বিভিন্ন ডেটা নোড থেকে রেজাল্ট সংগ্রহ করে একটি ইউনিফাইড রেসপন্স তৈরি করে। যখন কোনো নোডের কোনো নির্দিষ্ট ভূমিকা নেই (যেমন মাস্টার বা ডেটা নোড), তখন এটি coordinating node হিসেবে কাজ করতে পারে।

2. Node Types এবং তাদের ভূমিকা

Elasticsearch এ বিভিন্ন ধরণের নোড থাকে, প্রতিটির আলাদা ভূমিকা ও কাজ আছে:

Master Node:

  • ক্লাস্টারের স্টেট এবং কনফিগারেশন ম্যানেজ করে।
  • শার্ড বরাদ্দ এবং রিব্যালেন্সিং পরিচালনা করে।
  • সাধারণত ক্লাস্টারে একাধিক মাস্টার-এলিজেবল নোড থাকে যাতে একটির ব্যর্থতার পরেও ক্লাস্টার কাজ চালিয়ে যেতে পারে।
  • কনফিগারেশন:
node.master: true

Data Node:

  • ডেটা সংরক্ষণ করে এবং সার্চ ও ইনডেক্সিং রিকোয়েস্ট হ্যান্ডেল করে।
  • ক্লাস্টারের প্রধান লোড সাধারণত ডেটা নোডে আসে, তাই ডেটা নোডগুলোতে পর্যাপ্ত CPU, মেমরি, এবং ডিস্ক স্পেস থাকা উচিত।
  • কনফিগারেশন:
node.data: true

Ingest Node:

  • ডেটা ইনজেস্ট করার সময় প্রসেসিং (যেমন লোগ পার্স করা, ডেটা ফিল্টার করা) করার জন্য ব্যবহৃত হয়।
  • এটি ডেটা প্রসেসিং অ্যাপ্লিকেশনগুলোতে লোড কমিয়ে ক্লাস্টারের পারফরম্যান্স বাড়ায়।
  • কনফিগারেশন:
node.ingest: true

Coordinating Node:

  • যখন কোনো নোডে মাস্টার বা ডেটা ভূমিকা থাকে না, তখন এটি coordinating node হিসেবে কাজ করে।
  • এটি সার্চ এবং ইনডেক্সিং রিকোয়েস্ট হ্যান্ডেল করে এবং অন্যান্য নোডের সাথে কমিউনিকেশন করে একটি ইউনিফাইড রেসপন্স তৈরি করে।
  • এটি ডিফল্ট হিসেবে সক্রিয় থাকে, যদি নোডে অন্য কোনো ভূমিকা না থাকে।

Voting-only Node:

  • মাস্টার নোড নির্বাচনের সময় ভোট দিতে পারে, কিন্তু মাস্টার হিসেবে কাজ করে না।
  • এটি ক্লাস্টারের স্থিতিশীলতা বাড়াতে এবং ক্লাস্টার নির্বাচনের সময় সহায়ক ভূমিকা পালন করতে পারে।
  • কনফিগারেশন:
node.voting_only: true

3. Cluster Management এবং Monitoring

Elasticsearch ক্লাস্টার ম্যানেজ করার জন্য বিভিন্ন কমান্ড এবং API রয়েছে যা আপনাকে ক্লাস্টারের স্থিতিশীলতা এবং পারফরম্যান্স মনিটর করতে সাহায্য করে।

ক্লাস্টারের স্বাস্থ্য পরীক্ষা:

ক্লাস্টারের স্বাস্থ্যের অবস্থা জানার জন্য:

GET /_cluster/health

এটি ক্লাস্টারের তিনটি স্ট্যাটাস রিপোর্ট করে:

  • Green: সব শার্ড (প্রাইমারি এবং রেপ্লিকা) অ্যাকটিভ।
  • Yellow: সব প্রাইমারি শার্ড অ্যাকটিভ, কিন্তু কিছু রেপ্লিকা শার্ড মিসিং।
  • Red: কিছু প্রাইমারি শার্ড মিসিং বা ইনঅ্যাকটিভ।

ক্লাস্টারে নোডের তথ্য জানার জন্য:

GET /_cat/nodes?v

এটি ক্লাস্টারের নোডগুলোর স্ট্যাটাস, রোল, এবং পারফরম্যান্স মেট্রিক্স প্রদর্শন করবে।

4. Shard Management এবং Cluster Scaling

Elasticsearch ক্লাস্টার ম্যানেজমেন্টে শার্ড ম্যানেজমেন্ট এবং ক্লাস্টার স্কেলিং গুরুত্বপূর্ণ ভূমিকা পালন করে।

  • Shard Allocation: শার্ড বরাদ্দ স্বয়ংক্রিয়ভাবে Elasticsearch দ্বারা পরিচালিত হয়, তবে কিছু ক্ষেত্রে শার্ড ম্যানুয়ালি বরাদ্দ বা পুনর্বিন্যাস করা যায়:
POST /_cluster/reroute
  • Cluster Scaling: Elasticsearch স্কেলিং সাপোর্ট করে, অর্থাৎ ক্লাস্টারে নতুন নোড যোগ করে বা ম্যানুয়ালি শার্ড মুভ করে স্কেল করা যায়।
    • Horizontal Scaling: নতুন ডেটা নোড যোগ করে স্কেল করা।
    • Vertical Scaling: নোডে মেমরি বা CPU আপগ্রেড করে স্কেল করা।

5. Cluster Settings Management

Elasticsearch ক্লাস্টারের কনফিগারেশন ডাইনামিকালি পরিবর্তন করা যায়, যেমন শার্ড বরাদ্দ বা ক্লাস্টারের ব্যালেন্সিং।

Shard Allocation Enable/Disable:

PUT /_cluster/settings
{
  "transient": {
    "cluster.routing.allocation.enable": "none"
  }
}

Rebalance Settings:

PUT /_cluster/settings
{
  "transient": {
    "cluster.routing.rebalance.enable": "all"
  }
}

6. Cluster Best Practices

  • মাস্টার নোডের সংখ্যা: মাস্টার নোডের সংখ্যা সর্বদা বিজোড় (odd) রাখুন (যেমন ৩, ৫) যাতে নির্বাচনের সময় ভোটিং প্রক্রিয়া সঠিকভাবে পরিচালিত হয়।
  • নোড মনিটরিং: নোডগুলোর CPU, মেমরি, এবং ডিস্ক ব্যবহার নিয়মিত মনিটর করুন। Kibana এবং X-Pack ব্যবহার করে ড্যাশবোর্ড তৈরি করতে পারেন, যা ক্লাস্টার মেট্রিকস সহজে পর্যবেক্ষণ করতে সহায়ক।
  • আর্কিটেকচার প্ল্যানিং: ডেটা লোড এবং সার্চ রিকোয়েস্ট অনুযায়ী নোডের সংখ্যা এবং শার্ড কনফিগারেশন সাবধানে পরিকল্পনা করুন।

উপসংহার

Elasticsearch এ Cluster Management এবং Nodes এর সঠিক ম্যানেজমেন্ট ডেটা ডিসট্রিবিউশন, শার্ড ম্যানেজমেন্ট এবং ক্লাস্টারের পারফরম্যান্স ও স্থিতিশীলতা নিশ্চিত করতে সাহায্য করে। ক্লাস্টারের স্বাস্থ্য এবং শার্ড বরাদ্দ নিয়মিত মনিটর করে আপনি Elasticsearch কে অপ্টিমাইজ করতে এবং স্কেলিং পরিচালনা করতে পারবেন।

Content added By

আরও দেখুন...

Promotion