Elasticsearch-এ Shard Allocation
Elasticsearch-এ শার্ড অ্যালোকেশন কনফিগার করার জন্য বেশ কিছু সেটিংস এবং প্যারামিটার আছে যা cluster এবং node level এ প্রভাব ফেলে। কিছু গুরুত্বপূর্ণ কনসেপ্ট ও কনফিগারেশন:
Cluster.routing.allocation.enable:
- এটি শার্ড অ্যালোকেশন নিয়ন্ত্রণ করার জন্য ব্যবহৃত হয়।
- ভ্যালু হতে পারে:
"all": সমস্ত প্রাইমারি এবং রেপ্লিকা শার্ড অ্যালোকেট করার অনুমতি দেয়।"primaries": শুধুমাত্র প্রাইমারি শার্ডগুলো অ্যালোকেট করা হয়।"new_primaries": নতুন প্রাইমারি শার্ড অ্যালোকেট করার অনুমতি দেয়।"none": কোনো শার্ডই অ্যালোকেট করা হবে না।
Awareness Allocation:
- শার্ডগুলো যাতে নির্দিষ্ট জোন বা rack-এ অবস্থিত থাকে তা নিশ্চিত করতে Elasticsearch-এ zone awareness এবং rack awareness কনফিগার করা যায়। এটি নিশ্চিত করে যে একটি জোন ডাউন হয়ে গেলেও অন্য জোনে শার্ডের কপি থাকে।
- উদাহরণ:
- এখানে, শার্ডগুলোকে বিভিন্ন
rack_id-তে বিতরণ করা হবে।
{
"cluster.routing.allocation.awareness.attributes": "rack_id"
}
Allocation Filtering:
- নির্দিষ্ট শার্ড বা ইন্ডেক্সগুলোকে নির্দিষ্ট নোডে অ্যালোকেট করতে এটি ব্যবহার করা হয়।
- উদাহরণ:
- এই সেটিংসটি নিশ্চিত করবে যে শার্ডগুলি শুধুমাত্র
node-1এ অ্যালোকেট হবে।
{
"cluster.routing.allocation.include._name": "node-1"
}
Elasticsearch-এ Shard Rebalancing
Elasticsearch-এ Shard Rebalancing স্বয়ংক্রিয়ভাবে কাজ করে, কিন্তু কিছু সেটিংস আছে যা কাস্টমাইজ করা যায়:
Cluster.routing.rebalance.enable:
- রিব্যালেন্সিং কন্ট্রোল করার জন্য ব্যবহৃত হয়।
- ভ্যালু হতে পারে:
"all": সমস্ত শার্ড রিব্যালেন্স করা হয়।"primaries": শুধু প্রাইমারি শার্ডগুলো রিব্যালেন্স করা হয়।"replicas": শুধু রেপ্লিকা শার্ড রিব্যালেন্স করা হয়।"none": কোনো শার্ড রিব্যালেন্স করা হবে না।
Rebalance Throttling:
- একবারে কতগুলো শার্ড রিব্যালেন্স হতে পারবে তা নির্ধারণ করতে
cluster.routing.allocation.cluster_concurrent_rebalanceপ্যারামিটারটি ব্যবহার করা যায়। - উদাহরণ:
- এটি নিশ্চিত করবে যে একবারে সর্বোচ্চ ২টি শার্ড রিব্যালেন্স হবে।
{
"cluster.routing.allocation.cluster_concurrent_rebalance": 2
}
Disk-based Shard Allocation:
- Elasticsearch নোডগুলোর ডিস্ট্রিবিউশন মনিটর করে, যাতে ডিস্ক স্পেস কমে গেলে স্বয়ংক্রিয়ভাবে শার্ডগুলো অন্য নোডে মুভ করাতে পারে।
- প্যারামিটারগুলো:
"cluster.routing.allocation.disk.threshold_enabled": true"cluster.routing.allocation.disk.watermark.low": "85%"(ডিফল্ট)"cluster.routing.allocation.disk.watermark.high": "90%"(ডিফল্ট)
Elasticsearch-এ Shard Allocation এবং Rebalancing মনিটর করা
- Cluster Health API:
GET /_cluster/healthদিয়ে ক্লাস্টারের হেলথ চেক করতে পারেন।
- Cluster Allocation Explanation API:
GET /_cluster/allocation/explainদিয়ে জানতে পারেন কেন কোনো শার্ড নির্দিষ্ট নোডে অ্যালোকেট হয়নি বা মুভ হয়নি।
Practical Tips:
- Shard Size: সাধারণত, একটি শার্ডের সাইজ ১০-৫০ গিগাবাইটের মধ্যে রাখার চেষ্টা করবেন, কারণ খুব বড় শার্ড ক্লাস্টারের পারফরম্যান্সে প্রভাব ফেলতে পারে।
- Shard Count Optimization: শার্ডের সংখ্যা অত্যধিক হলে পারফরম্যান্স সমস্যার সম্মুখীন হতে পারেন। সঠিক সাইজিং এবং কনফিগারেশন ক্লাস্টারের স্কেলেবিলিটি বাড়ায়।
- Monitoring and Alerts: শার্ড অ্যালোকেশন ও রিব্যালেন্সিং মনিটরিং-এর জন্য Kibana এবং Elasticsearch monitoring plugin ব্যবহার করতে পারেন।
এভাবে Elasticsearch-এ shard allocation এবং rebalancing কনফিগার করা এবং মনিটর করা যায়, যা পারফরম্যান্স এবং রিলায়েবিলিটি নিশ্চিত করতে সাহায্য করে।
Read more