2012-10-25 10 views
8

के साथ सोलर प्रतिकृति को कैसे कॉन्फ़िगर कर सकता हूं मेरे पास एकाधिक कोर के साथ सोलर चल रहा है। भारी भार के कारण, मैं एक दास को सटीक वही इंडेक्स स्थापित करना चाहता हूं।मैं एकाधिक कोर

प्रलेखन http://wiki.apache.org/solr/SolrReplication कहता है "प्रतिलिपि अनुरोध हैंडलर को प्रत्येक कोर के लिए solrconfig.xml में जोड़ें", लेकिन मेरे पास केवल एक solrconfig.xml है।

मेरे विन्यास:
कॉन्फ़िग:/डेटा/Solr/वेब/Solr/conf/config फ़ाइलों
डाटा:/डेटा/Solr/डेटा/Solr/कोर डेटा dirs

यह वास्तव में कॉपी करने के लिए आवश्यक है प्रत्येक कोर के लिए solrconfig.xml?
और मुझे इन एकाधिक solrconfig फ़ाइलों को कहां रखना चाहिए?

solr.xml

<?xml version="1.0" encoding="UTF-8" ?> 
    <solr persistent="true"> 
    <property name="dih.username" value="user"/> 
    <property name="dih.password" value="passwd"/> 
    <property name="jdbclib" value="/usr/progress/dlc102b/java"/> 
    <property name="dih.dburl" value="jdbc:datadirect:openedge://172.20.7.218:31380;databaseName=easource"/> <cores adminPath="/admin/cores"> 
    <core instanceDir="/data/solr/web/trunk/" name="product" dataDir="/data/solr/data/trunk/product-swap"> 
     <property name="dih-config" value="dih-config-product.xml"/> 
    </core> 
    <core instanceDir="/data/solr/web/trunk/" name="product-swap" dataDir="/data/solr/data/trunk/product"> 
     <property name="dih-config" value="dih-config-product.xml"/> 
    </core> 
    <core instanceDir="/data/solr/web/trunk/" name="periodp" dataDir="/data/solr/data/trunk/periodp"> 
     <property name="dih.config" value="dih-config-periodp.xml"/> 
    </core> 
    <core instanceDir="/data/solr/web/trunk/" name="periodp-swap" dataDir="/data/solr/data/trunk/periodp-swap"> 
     <property name="dih.config" value="dih-config-periodp.xml"/> 
    </core> 
    </cores> 
</solr> 
+0

क्या आप अपना 'solr.xml' पोस्ट कर सकते हैं जहां आपने अपना कोर कॉन्फ़िगर किया था? – javanna

+0

मैंने solr.xml – DionS

+0

जोड़ा, धन्यवाद, मैंने जो सोचा था। मेरे जवाब पर एक नज़र डालें। – javanna

उत्तर

16

आपको जो करना है वह दास सर्वर पर आपके पास मौजूद सॉल्टर इंस्टेंस की प्रतिलिपि है और प्रतिकृति हैंडलर को solrconfig.xml पर कॉन्फ़िगर करें। प्रत्येक कोर के लिए अलग-अलग instanceDir निर्देशिका होने का सबसे अच्छा अभ्यास है क्योंकि आमतौर पर प्रत्येक कोर का अपना schema.xml और solrconfig.xml होता है।

<solr persistent="true" sharedLib="lib"> 
    <cores adminPath="/admin/cores"> 
     <core name="core0" instanceDir="core"> 
      <property name="dataDir" value="/data/core0" /> 
     </core> 
     <core name="core1" instanceDir="core"> 
      <property name="dataDir" value="/data/core1" /> 
     </core> 
    </cores> 
</solr> 

यह अपनी स्थिति होना चाहिए यदि आप वर्तमान में एक से अधिक है: वैसे भी आप एक ही instanceDir लेकिन एक अलग dataDir है, जो आप अपने solrconfig.xml में dataDir के रूप में कॉन्फ़िगर करने के लिए बात करने के लिए एक ही conf सिर्फ अपने solr.xml को विन्यस्त उपयोग कर सकते हैं कोर लेकिन एक solrconfig.xml

solrconfig.xml दासों पर प्रतिकृति खंड में मूल नाम सहित मास्टर का यूआरएल होना आवश्यक है, जो प्रत्येक कोर के लिए बिल्कुल अलग है। लेकिन आप प्लेसहोल्डर $ {solr.core.name} इस तरह उपयोग कर सकते हैं:

<requestHandler name="/replication" class="solr.ReplicationHandler" > 
    <lst name="slave"> 
     <str name="masterUrl">http://master_host:port/solr/${solr.core.name}/replication</str> 
     <str name="pollInterval">00:00:20</str> 
    </lst> 
</requestHandler> 

वास्तव में, solr.core.name जैसे कुछ गुण स्वचालित रूप से core scope लिए जोड़ रहे हैं और आप अपने विन्यास में उन्हें देख सकते हैं। नतीजतन, यदि आपके पास कोई कोर विशिष्ट सेटिंग्स नहीं है तो प्रतिकृति अनुभाग प्रत्येक कोर के लिए समान हो सकता है।

इसके अलावा, आप निम्न कॉन्फ़िगरेशन के साथ master and slave के लिए एक ही config इस्तेमाल कर सकते हैं और सिर्फ मूल्य (सही या गलत) है कि आप वातावरण चर enable.master और enable.slave कि आप क्या करना चाहते हैं के आधार पर करने के लिए आवंटित बदल जाते हैं। मेरा मतलब है कि आप एक ही फाइल का उपयोग कर सकते हैं, लेकिन निश्चित रूप से यह विभिन्न मशीनों पर होगा क्योंकि यह उसी मशीन पर मास्टर और दास रखने के लिए बहुत अधिक समझ नहीं लेगा।

<requestHandler name="/replication" class="solr.ReplicationHandler" > 
    <lst name="master"> 
     <str name="enable">${enable.master:false}</str> 
     <str name="replicateAfter">commit</str> 
    </lst> 
    <lst name="slave"> 
     <str name="enable">${enable.slave:false}</str> 
     <str name="masterUrl">http://master_host:8983/solr/${solr.core.name}/replication</str> 
     <str name="pollInterval">00:00:60</str> 
    </lst> 
</requestHandler> 
+0

बहुत बहुत धन्यवाद, मुझे यह solrcore.properties फ़ाइल का उपयोग करके काम कर रहा है जिसमें enable.master और enable.slave दोनों मशीनों को खराब कर दिया गया है। – DionS

+0

खुशी हुई मेरे जवाब में मदद मिली, आपका स्वागत है! – javanna

+0

आपके द्वारा दिए गए उदाहरण के लिए धन्यवाद, मेरे लिए वास्तव में सहायक है। मैं sym लिंक एकाधिक सजातीय कोर का उपयोग कर रहा हूं (डुन पूछें क्यों, मेरे क्लाइंट से अनुरोध है)। और पता लगाएं कि आपका समाधान हत्यारा पंच है! – ajreal

1

हाँ, आप कोर आप नकल कर रहे हैं में से प्रत्येक के पिछले भाग में फ़ाइलों का ठीक उसी की नकल की आवश्यकता है।

अपने सोलर उदाहरणों को और भी उतारने के लिए, मेरा सुझाव है कि आप केवल मास्टर के लिए इस्तेमाल किए गए मास्टर और 2 गुलामों के लिए उपयोग किए जाने वाले मास्टर के लिए उपयोग करें, जो आपके दस्तावेज़ों से पूछताछ के लिए उपयोग किया जाता है।

+0

धन्यवाद, अगर प्रतिकृति अभी भी पर्याप्त नहीं है तो मैं भी इस विकल्प पर विचार करूंगा। – DionS

संबंधित मुद्दे