অ্যাপাচি সলর (Apache Solr) একটি স্কেলেবল এবং ডিস্ট্রিবিউটেড সার্চ প্ল্যাটফর্ম যা Apache Lucene এর উপর ভিত্তি করে তৈরি। সলর replication সিস্টেমের মাধ্যমে ডেটা রেডান্ডেন্সি এবং হাই অ্যাভেইলেবিলিটি নিশ্চিত করে। Master-Slave Replication সলরের একটি অত্যন্ত গুরুত্বপূর্ণ বৈশিষ্ট্য যা একটি সলর ইনস্ট্যান্সকে master হিসেবে ব্যবহার করে এবং অন্য সলর ইনস্ট্যান্সগুলোকে slave হিসেবে ব্যবহার করে ডেটার কপি তৈরি করতে সহায়তা করে।
এই টিউটোরিয়ালে, আমরা Solr Master-Slave Replication কনফিগারেশন, এটি কীভাবে কাজ করে, এবং কিভাবে সলরে master-slave replication সেটআপ করা যায় তা আলোচনা করব।
Master-Slave Replication in Solr
Master-Slave Replication সলরের একটি কনফিগারেশন যা মূলত Master সার্ভার থেকে Slave সার্ভারে ডেটা কপি করার প্রক্রিয়া সম্পাদন করে। এখানে, Master সলর ইনস্ট্যান্স ডেটা পরিবর্তন করে এবং সেই পরিবর্তন Slave সার্ভারে রেপ্লিকেট করা হয়। এটি সাধারণত indexing এবং searching ব্যবস্থাপনায় ব্যবহৃত হয়।
Master-Slave Replication এর উদ্দেশ্য:
- Data Redundancy: মূল ডেটার কপি রাখার মাধ্যমে সিস্টেমের ডেটার নিরাপত্তা বৃদ্ধি করা।
- Load Balancing: সার্চ রিকোয়েস্টগুলি Slave সার্ভারে পরিচালনা করে, মূল Master সার্ভারের ওপর লোড কমানো।
- High Availability: একাধিক Slave সার্ভার থাকলে, যদি কোনো একটি Slave সার্ভার ডাউন হয়ে যায়, অন্যটি রিকভারি করতে সাহায্য করে।
Master-Slave Replication কনফিগারেশন প্রক্রিয়া
Master-Slave Replication কনফিগার করার জন্য কিছু ধাপ অনুসরণ করতে হয়। এগুলো হল:
- Master Configuration: মাস্টার সার্ভার কনফিগার করা।
- Slave Configuration: স্লেভ সার্ভার কনফিগার করা।
- Replication Setup: মাস্টার এবং স্লেভ সার্ভারের মধ্যে রেপ্লিকেশন সম্পর্ক স্থাপন করা।
Step 1: Master Configuration
এটি হলো প্রথম ধাপ, যেখানে আপনি সলরের মাস্টার সার্ভারের কনফিগারেশন করবেন। মাস্টার সার্ভার সাধারণত ইনডেক্সিং এবং ডেটা আপডেটের জন্য ব্যবহার করা হয়।
- master.slave কনফিগারেশন ফাইলের মধ্যে
solr.xmlএ<master>সেকশনটি অ্যাড করুন:
<master>
<replicate>
<solrurl>http://localhost:8983/solr/</solrurl>
</replicate>
</master>
এখানে solrurl হল মাস্টার সার্ভারের URL, যেখানে থেকে স্লেভ সার্ভার ডেটা গ্রহণ করবে।
Step 2: Slave Configuration
Slave সার্ভারের কনফিগারেশন করা হয়, যাতে এটি মাস্টার সার্ভারের ডেটা গ্রহণ এবং ইনডেক্সিংয়ের জন্য প্রস্তুত থাকে।
- solr.xml এ স্লেভ কনফিগার করুন:
<slave>
<masterurl>http://localhost:8983/solr/</masterurl>
<pollinginterval>00:00:10</pollinginterval> <!-- 10 সেকেন্ড পর পর মাস্টারের পরিবর্তন চেক হবে -->
</slave>
এখানে masterurl হল মাস্টার সার্ভারের URL, যা স্লেভ সার্ভার থেকে ডেটা গ্রহণের জন্য ব্যবহার হবে। pollinginterval প্যারামিটারটি মাস্টারের ডেটা পরিবর্তনের পর স্লেভ সার্ভারের মধ্যে কিভাবে সিঙ্ক্রোনাইজ হবে তা নির্দেশ করে।
Step 3: Replication Setup
মাস্টার এবং স্লেভ সার্ভারের মধ্যে রেপ্লিকেশন চালানোর জন্য, আপনাকে সলরের replication handler কনফিগার করতে হবে।
- Replication Handler Setup: সলরের solrconfig.xml ফাইলে replication handler কনফিগারেশন যোগ করুন।
Master Configuration:
<requestHandler name="/replication" class="solr.ReplicationHandler">
<lst name="defaults">
<str name="replicateAfter">true</str>
<str name="maxOutstandingReplications">3</str>
<str name="pollInterval">30000</str> <!-- Replication every 30 seconds -->
</lst>
</requestHandler>
এখানে, /replication রিকোয়েস্ট হ্যান্ডলারটি মাস্টার এবং স্লেভের মধ্যে ডেটা সিঙ্ক্রোনাইজেশনের জন্য ব্যবহৃত হয়।
Slave Configuration:
<requestHandler name="/replication" class="solr.ReplicationHandler">
<lst name="defaults">
<str name="replicateAfter">true</str>
<str name="maxOutstandingReplications">3</str>
<str name="pollInterval">30000</str>
</lst>
</requestHandler>
এই কনফিগারেশনটি স্লেভ সার্ভারে ডেটা রেপ্লিকেশন পরিচালনা করতে ব্যবহৃত হবে।
Step 4: Starting the Replication
মাস্টার এবং স্লেভ সার্ভারের মধ্যে রেপ্লিকেশন শুরু করতে, আপনাকে রেপ্লিকেশন প্রক্রিয়া ট্রিগার করতে হবে।
- Master Server থেকে Replication Trigger করা:
curl "http://localhost:8983/solr/your_core/replication?command=fullimport"
এটি মাস্টার সার্ভারের ডেটা স্লেভে কপি করার জন্য ট্রিগার করবে।
- Slave Server এর রেপ্লিকেশন কনফিগারেশন সক্রিয় হওয়া সাপেক্ষে, স্লেভ সার্ভার মাস্টারের সাথে ডেটা সিঙ্ক্রোনাইজ করবে।
Step 5: Verify Replication
আপনি সলরের রিপ্লিকেশন স্ট্যাটাস চেক করতে পারেন:
curl "http://localhost:8983/solr/your_core/replication?command=details"
এটি রিপ্লিকেশন সম্পর্কিত বিস্তারিত তথ্য প্রদর্শন করবে, যেমন স্লেভ সার্ভারটি মাস্টার সার্ভারের সাথে সিঙ্ক্রোনাইজ হচ্ছে কি না।
Master-Slave Replication-এর উপকারিতা
- Data Redundancy: Master-Slave Replication ব্যবহার করে, ডেটার কপি রাখা সম্ভব হয়, যার মাধ্যমে আপনি ডেটার সুরক্ষা নিশ্চিত করতে পারেন।
- Scalability: স্লেভ সার্ভারের মাধ্যমে লোড ব্যালান্সিং করা যায়, ফলে সার্চ রিকোয়েস্টগুলো স্লেভ সার্ভারে চলে যায় এবং মাস্টারের উপর লোড কমে যায়।
- High Availability: যদি মাস্টার সার্ভার ডাউন হয়, স্লেভ সার্ভার থেকে ডেটা রিকভারি করা সম্ভব হয়, যা সিস্টেমের হাই অ্যাভেইলেবিলিটি নিশ্চিত করে।
সারাংশ
Master-Slave Replication সলরের একটি অত্যন্ত গুরুত্বপূর্ণ বৈশিষ্ট্য, যা ডেটার রেডান্ডেন্সি এবং সিস্টেমের হাই অ্যাভেইলেবিলিটি নিশ্চিত করতে সহায়তা করে। মাস্টার সার্ভার ডেটা পরিবর্তন করে এবং স্লেভ সার্ভারে সেগুলি রেপ্লিকেট হয়, যাতে সার্চ রিকোয়েস্টের লোড ব্যালান্স করা যায় এবং ডেটা সুরক্ষা বৃদ্ধি পায়। সলরের replication handler এবং solrconfig.xml কনফিগারেশন ব্যবহার করে আপনি এই ফিচারটি কার্যকরভাবে কনফিগার এবং ব্যবহৃত করতে পারেন।
Read more