solrCloud分佈式集羣安裝配置
1.前提
安裝Zookeeper集羣
2.安裝部署多個solr節點
10.41.2.82
10.41.2.83
10.41.2.84
10.41.2.86
mkdir -p /usr/local/search
scp -r 10.41.2.82:/usr/local/search/solr /usr/local/search/
scp -r 10.41.2.82:/usr/local/search/tomcat /usr/local/search/
2.配置
配置主要是將tomcat與Zookeeper相關聯。
修改tomcat 的 bin目錄下catalina.sh文件。
2.1配置第一個節點(10.41.2.82)
solrCloud將配置信息存放在Zookeeper中,供其他節點共享。因此需要在一個節點上配置solrCloud的信息,其他節點無需配置,即可從Zookeeper中獲取。
vi /usr/local/search/tomcat/apache-tomcat-7.0.55/bin/catalina.sh
JAVA_OPTS="-Dbootstrap_confdir=/usr/local/search/solr/solrhome/data/solr/collection1/conf -Dcollection.configName=solrconf -DzkHost=10.41.2.82:2181,10.41.2.83:2181,10.41.2.84:2181,10.41.2.85:2181,10.41.2.86:2181
-DnumShards=2 $JAVA_OPTS"
2.2配置其他節點(10.41.2.83,10.41.2.84,10.41.2.86)
vi /usr/local/search/tomcat/apache-tomcat-7.0.55/bin/catalina.sh
JAVA_OPTS="-DzkHost=10.41.2.82:2181,10.41.2.83:2181,10.41.2.84:2181,10.41.2.85:2181,10.41.2.86:2181 $JAVA_OPTS"
2.3配置solr Collection
vi /usr/local/search/solr/solrhome/data/solr/solr.xml
<solr>
<solrcloud>
<str name="host">${host:}</str>
<int name="hostPort">8080</int>
<str name="hostContext">${hostContext:solr}</str>
<int name="zkClientTimeout">${zkClientTimeout:30000}</int>
<bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool>
<str name="zkHost">10.41.2.82:2181,10.41.2.83:2181,10.41.2.84:2181,10.41.2.85:2181,10.41.2.86:2181</str>
</solrcloud>
<shardHandlerFactory name="shardHandlerFactory"
class="HttpShardHandlerFactory">
<int name="socketTimeout">${socketTimeout:0}</int>
<int name="connTimeout">${connTimeout:0}</int>
</shardHandlerFactory>
</solr>
2.4移除core.properties
rm -fr /usr/local/search/solr/solrhome/data/solr/collection1/core.properties
3.啓停
3.1啓動
3.1.1啓動Zookeeper
/usr/local/zookeeper/zookeeper-3.4.5/bin/zkServer.sh start
3.1.2啓動tomcat
注意:先啓動有solrCloud配置信息的那個節點,這裏是10.41.2.82
/usr/local/search/tomcat/apache-tomcat-7.0.55/bin/startup.sh
3.2停止
3.2.1停止tomcat
/usr/local/search/tomcat/apache-tomcat-7.0.55/bin/shutdown.sh
3.2.2停止Zookeeper
/usr/local/zookeeper/zookeeper-3.4.5/bin/zkServer.sh stop
4.測試
4.1訪問Web-UI
http://10.41.2.82:8080/solr
4.2創建collection,shard ,core
4.2.1創建Collection,自動分配shard和replica
curl "http://10.41.2.82:8080/solr/admin/collections?action=CREATE&name=jinan&numShards=2&replicationFactor=2&maxShardsPerNode=2”
這樣會出來一個名稱爲jinan的collection,它有2個shard,每個shard有1個數據節點,1個備份節點,即該collection共有4個core
缺點:不靈活,不能選擇適合的節點,不能選擇數據存放路徑,不能選擇實例存放路徑
訪問:
http://10.41.2.82:8080/solr/#/~cloud
可以看出創建了一個connection
【
刪除Collection:
http://10.41.2.82:8080/solr/admin/collections?action=DELETE&name=jinan
】
4.2.2創建Collection,手動分配shard和replica(推薦使用該方法,因爲可控性強)
curl "http://10.41.2.82:8080/solr/admin/cores?action=CREATE&name=inspur-shard1-replica1&instanceDir=/usr/local/search/solr/solrhome/data/solr/inspur-shard1-replica1&dataDir=/usr/local/search/solr/solrhome/data/solr/inspur-shard1-replica1/data&collection=inspur&shard=shard1"
curl "http://10.41.2.83:8080/solr/admin/cores?action=CREATE&name=inspur-shard1-replica2&instanceDir=/usr/local/search/solr/solrhome/data/solr/inspur-shard1-replica2&dataDir=/usr/local/search/solr/solrhome/data/solr/inspur-shard1-replica2/data&collection=inspur&shard=shard1"
curl "http://10.41.2.84:8080/solr/admin/cores?action=CREATE&name=inspur-shard2-replica1&instanceDir=/usr/local/search/solr/solrhome/data/solr/inspur-shard2-replica1&dataDir=/usr/local/search/solr/solrhome/data/solr/inspur-shard2-replica1/data&collection=inspur&shard=shard2"
curl "http://10.41.2.86:8080/solr/admin/cores?action=CREATE&name=inspur-shard2-replica2&instanceDir=/usr/local/search/solr/solrhome/data/solr/inspur-shard2-replica2&dataDir=/usr/local/search/solr/solrhome/data/solr/inspur-shard2-replica2/data&collection=inspur&shard=shard2"
5.添加節點
5.1部署新的節點(10.41.2.85)
mkdir -p /usr/local/search
scp -r 10.41.2.82:/usr/local/search/solr /usr/local/search/
scp -r 10.41.2.82:/usr/local/search/tomcat /usr/local/search/
5.2修改配置
因爲是直接拷貝過來的,路徑都是一樣的,所以無需配置
5.3刪除拷貝過來一些已經創建的core目錄
rm -fr /usr/local/search/solr/solrhome/data/solr/inspur-shard1-replica1/*
rm -fr /usr/local/search/solr/solrhome/data/solr/jinan_shard1_replica1
rm -fr /usr/local/search/solr/solrhome/data/solr/jinan_shard1_replica2
rm -fr /usr/local/search/solr/solrhome/data/solr/collection1/data/*
5.4啓動節點
5.4.1修改啓動腳本catalina.sh
JAVA_OPTS="-DzkHost=10.41.2.82:2181,10.41.2.83:2181,10.41.2.84:2181,10.41.2.85:2181,10.41.2.86:2181 $JAVA_OPTS"
5.4.2啓動
/usr/local/search/tomcat/apache-tomcat-7.0.55/bin/startup.sh
5.5訪問Web-UI
可以看出節點10.41.2.85已經加入到了名稱爲jinan的collection中了。
5.5手工新增core
curl "
http://10.41.2.85:8080/solr/admin/cores?action=CREATE&name=inspur-shard2-replica3&instanceDir=/usr/local/search/solr/solrhome/data/solr/inspur-shard2-replica3&dataDir=/usr/local/search/solr/solrhome/data/solr/inspur-shard2-replica3/data&collection=inspur&shard=shard2"
可以看出新增節點已經加入到名稱爲inspur的collection中。
6.刪除節點
只要每個shard中至少有一個節點存活就可以保證solrCloud的可用性。
將節點10.41.2.83停掉
/usr/local/search/tomcat/apache-tomcat-7.0.55/bin/shutdown.sh
訪問Web-UI
可以看出節點10.41.2.83節點的狀態已經變成不可用的,使用其他的節點來替代它