Elasticsearch Cluster সেটআপ এবং Performance Tuning প্রোজেক্ট

Latest Technologies - ইলাস্টিকসার্চ (ElasticSearch) - প্র্যাকটিস প্রোজেক্টস | NCTB BOOK

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

১. Elasticsearch Cluster সেটআপ

Elasticsearch Cluster সেটআপ করার জন্য কয়েকটি গুরুত্বপূর্ণ স্টেপ আছে। ক্লাস্টার সেটআপ করার সময় ক্লাস্টারের আর্কিটেকচার, নোড টাইপ, এবং কনফিগারেশন ফাইলগুলোকে সঠিকভাবে কনফিগার করা খুব গুরুত্বপূর্ণ।

১.১ নোড টাইপ নির্বাচন

Elasticsearch Cluster-এ বিভিন্ন ধরণের নোড থাকতে পারে:

  • Master Nodes: ক্লাস্টারের হেলথ এবং ম্যানেজমেন্টের দায়িত্বে থাকে।
  • Data Nodes: ডেটা স্টোর এবং সার্চ অপারেশন পরিচালনা করে।
  • Ingest Nodes: ডেটা প্রসেস করে এবং তা ইনডেক্স করার জন্য প্রস্তুত করে।
  • Coordinating Nodes: সার্চ এবং ইনডেক্স রিকোয়েস্ট ম্যানেজ করে এবং তা বিভিন্ন নোডে বিতরণ করে।

বেস্ট প্র্যাকটিস: বড় ক্লাস্টারের জন্য আলাদা Master, Data, এবং Coordinating নোড কনফিগার করা ভালো। ছোট ক্লাস্টারের ক্ষেত্রে নোডগুলো মিক্সড টাইপ হতে পারে।

১.২ ক্লাস্টার সেটআপ স্টেপ

Elasticsearch ইনস্টল করা:

  • Docker ব্যবহার করতে পারেন বা সরাসরি সার্ভারে ইনস্টল করতে পারেন।
  • Docker কমান্ড:
docker run -d --name es01 -p 9200:9200 -e "discovery.type=single-node" elasticsearch:8.0.0

ক্লাস্টার কনফিগারেশন আপডেট করা (elasticsearch.yml):

  • নোডের কনফিগারেশন ফাইল (elasticsearch.yml) আপডেট করুন:
cluster.name: my-elasticsearch-cluster
node.name: es-node-1
node.roles: [master, data]
network.host: 0.0.0.0
discovery.seed_hosts: ["es-node-1", "es-node-2", "es-node-3"]
cluster.initial_master_nodes: ["es-node-1", "es-node-2", "es-node-3"]
  • এখানে, node.roles নির্দেশ করে যে এই নোডটি কোন ধরনের কাজ করবে (master, data)।

একাধিক নোড তৈরি করা:

  • অন্য নোডগুলোতে একই Elasticsearch ভার্সন এবং কনফিগারেশন ইনস্টল করুন, কিন্তু node.name এবং network.host আলাদা করতে হবে।

Cluster Health চেক করা:

  • ক্লাস্টার সেটআপ করার পর curl কমান্ড দিয়ে ক্লাস্টারের হেলথ চেক করতে পারেন:
curl -X GET "localhost:9200/_cluster/health?pretty"

২. Performance Tuning

Elasticsearch Cluster-এ পারফরম্যান্স টিউনিং করার জন্য নিচের কিছু গুরুত্বপূর্ণ স্টেপ এবং বেস্ট প্র্যাকটিস অনুসরণ করতে হবে:

২.১ JVM মেমরি এবং Heap Size

Elasticsearch জাভা ভিত্তিক, তাই এটি JVM ব্যবহার করে। মেমরি এবং Heap Size সঠিকভাবে সেট করা না হলে পারফরম্যান্স ইস্যু দেখা দিতে পারে।

  • Heap Size সেট করা:
    • jvm.options ফাইলে Heap Size সেট করুন:
-Xms4g
-Xmx4g
  • সাধারণত, সার্ভারের মোট মেমরির ৫০% Elasticsearch-এর জন্য সেট করা উচিত, কিন্তু ৩০ জিবি-এর বেশি না।

২.২ Disk I/O অপ্টিমাইজেশন

  • SSD ব্যবহার করুন: Elasticsearch-এর জন্য SSD ব্যবহার করা ভালো, কারণ এটি দ্রুত ডেটা রিড/রাইট করতে পারে।
  • Disk Watermark কনফিগার করুন:
cluster.routing.allocation.disk.watermark.low: 85%
cluster.routing.allocation.disk.watermark.high: 90%
  • এই সেটিংস নিশ্চিত করে যে ডেটা কেবল তখনই নতুন নোডে মুভ হবে, যখন নির্দিষ্ট সীমা ছাড়িয়ে যাবে।

২.৩ Thread Pool কনফিগারেশন

Elasticsearch-এর Thread Pool সঠিকভাবে কনফিগার করা পারফরম্যান্স বাড়াতে সাহায্য করে:

  • Bulk Operations: যদি বড় ব্যাচের ডেটা ইনডেক্স করতে হয়, তাহলে Bulk Thread Pool অপ্টিমাইজ করুন।
thread_pool.bulk.size: 4
thread_pool.bulk.queue_size: 200
  • Search Operations: সার্চ অপারেশনের জন্য thread_pool.search সেটিংস কনফিগার করা যেতে পারে।

২.৪ শার্ড এবং ইনডেক্স ম্যানেজমেন্ট

  • শার্ড সংখ্যা এবং ইনডেক্স অপ্টিমাইজেশন:
    • ডিফল্টভাবে, Elasticsearch প্রতিটি ইনডেক্সের জন্য ৫টি শার্ড তৈরি করে। আপনার ডেটার আকার এবং সিস্টেম কনফিগারেশন অনুযায়ী শার্ড সংখ্যা কমাতে বা বাড়াতে পারেন।
    • বেস্ট প্র্যাকটিস: প্রতিটি শার্ডের আকার ১০-৫০ জিবি রাখার চেষ্টা করুন।
  • রেপ্লিকা:
    • প্রতিটি ইনডেক্সের জন্য রেপ্লিকা সংখ্যা ১ রাখা নিরাপদ। এটি ডেটা রিডান্ডেন্সি নিশ্চিত করে এবং ফেইলওভার হলে সার্ভিস চালু রাখে।

২.৫ Caching অপ্টিমাইজেশন

  • Query Cache:
    • Elasticsearch-এ কনফিগার করা ক্যাশ সার্চ অপারেশনকে দ্রুততর করতে পারে:
indices.queries.cache.size: 20%
  • Field Data Cache:
    • এই ক্যাশ সঠিকভাবে কনফিগার করা না হলে মেমরি সমস্যা হতে পারে। তাই field data cache-এর লিমিট সেট করুন:
indices.fielddata.cache.size: 40%

৩. ক্লাস্টারের মনিটরিং এবং ট্রাবলশুটিং

Elasticsearch Cluster মনিটরিং এবং ট্রাবলশুটিং করতে পারে Kibana, Elastic Stack-এর Monitoring ফিচার, অথবা অন্যান্য টুল (যেমন Grafana, Prometheus)।

৩.১ Cluster Health চেক করা

  • Cluster Health চেক করার জন্য:
curl -X GET "localhost:9200/_cluster/health?pretty"
  • এটি আপনাকে ক্লাস্টারের স্ট্যাটাস (Green, Yellow, Red) জানাবে।

৩.২ Performance মনিটরিং

  • Kibana Monitoring:
    • Kibana ব্যবহার করে Elasticsearch নোডের পারফরম্যান্স, ইন্ডেক্সিং রেট, সার্চ রেসপন্স টাইম, এবং JVM স্ট্যাটিসটিক্স মনিটর করতে পারেন।
  • Node Stats API:
curl -X GET "localhost:9200/_nodes/stats?pretty"
  • নির্দিষ্ট নোডের পারফরম্যান্স মেট্রিক্স জানতে:

উপসংহার

Elasticsearch Cluster সেটআপ এবং Performance Tuning করার প্রক্রিয়া বড় আকারের ডেটা ম্যানেজমেন্ট এবং রিয়েল-টাইম সার্চ অপারেশনের জন্য অত্যন্ত গুরুত্বপূর্ণ। সঠিকভাবে ক্লাস্টার কনফিগার এবং টিউন করলে আপনি পারফরম্যান্স ইস্যু কমাতে এবং স্কেল করতে সক্ষম হবেন।

Content added By
Promotion