多節點徹底分佈式SolrCloudjson
Node Name IP HostName 瀏覽器
Node1 192.168.182.128 vm11 curl
Node2 192.168.182.129 vm22分佈式
Node3 192.168.182.130 vm33oop
三個節點安裝ZooKeeper,三個節點安裝Solr,IP/HOST同上。優化
2.1 運行ZooKeeper(不使用Solr內嵌的)url
下載、解壓ZooKeeper,我用的是zookeeper-3.4.6.tar.gz,安裝目錄是/home/hadoop/tools/zookeeper-3.4.6rest
cd /home/hadoop/tools/zookeeper-3.4.6server
mkdir dataxml
echo "1" >data/myid (這個在後面的配置文件用到)
cd conf
vi zoo.cfg (裏面的內容是這樣的)
dataDir=/home/hadoop/tools/zookeeper-3.4.6/data
clientPort=2181
initLimit=5
syncLimit=2
server.1=vm11:2888:3888
server.2=vm22:2888:3888
server.3=vm33:2888:3888
dataDir 把內存中的數據存儲成快照文件snapshot的目錄,同時myid也存儲在這個目錄下(myid中的內容爲本機server服務的標識)是ZK存放數據的目錄,最好放在其餘的目錄,不要在安裝目錄下。
clientPort 客戶端鏈接server的端口,即zk對外服務端口,通常設置爲2181。
initLimit Leader容許Follower在initLimit時間內完成這個工做。默認值爲10,即10 * tickTime
syncLimit Leader發出心跳包在syncLimit以後,尚未從Follower那裏收到響應,那麼就認爲這個Follower已經不在線了。默認爲5,即5 * tickTime
tickTime ZK中的一個時間單元。ZK中全部時間都是以這個時間單元爲基礎,進行整數倍配置的。
server.X hostname爲機器ip,第一個端口n爲事務發送的通訊端口,第二個n爲leader選舉的通訊端口,默認爲2888:3888
配置好了以後,就能夠啓動ZK了。
./bin/zkServer.sh start
在其餘的節點上重複作這個,惟一須要注意的是myid這個文件,在其餘的節點上修改成2,3,再啓動。
這樣ZK就創建起來了。
[hadoop@vm22 bin]$ ./zkServer.sh status
JMX enabled by default
Using config: /home/hadoop/tools/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode: leader
2.2 安裝運行Solr
下載解壓Solr,我用的是solr-5.3.0 solr5的一大feature就是能做爲獨立的App運行,不須要和其餘的
Node Name IP HostName
Node1 192.168.182.128 vm11
Node2 192.168.182.129 vm22
Node3 192.168.182.130 vm33
三個節點安裝ZooKeeper,三個節點安裝Solr,IP/HOST同上。
2.1 運行ZooKeeper(不使用Solr內嵌的)
下載、解壓ZooKeeper,我用的是zookeeper-3.4.6.tar.gz,安裝目錄是/home/hadoop/tools/zookeeper-3.4.6
cd /home/hadoop/tools/zookeeper-3.4.6
mkdir data
echo "1" >data/myid (這個在後面的配置文件用到)
cd conf
vi zoo.cfg (裏面的內容是這樣的)
dataDir=/home/hadoop/tools/zookeeper-3.4.6/data
clientPort=2181
initLimit=5
syncLimit=2
server.1=vm11:2888:3888
server.2=vm22:2888:3888
server.3=vm33:2888:3888
dataDir 把內存中的數據存儲成快照文件snapshot的目錄,同時myid也存儲在這個目錄下(myid中的內容爲本機server服務的標識)是ZK存放數據的目錄,最好放在其餘的目錄,不要在安裝目錄下。
clientPort 客戶端鏈接server的端口,即zk對外服務端口,通常設置爲2181。
initLimit Leader容許Follower在initLimit時間內完成這個工做。默認值爲10,即10 * tickTime
syncLimit Leader發出心跳包在syncLimit以後,尚未從Follower那裏收到響應,那麼就認爲這個Follower已經不在線了。默認爲5,即5 * tickTime
tickTime ZK中的一個時間單元。ZK中全部時間都是以這個時間單元爲基礎,進行整數倍配置的。
server.X hostname爲機器ip,第一個端口n爲事務發送的通訊端口,第二個n爲leader選舉的通訊端口,默認爲2888:3888
配置好了以後,就能夠啓動ZK了。
./bin/zkServer.sh start
在其餘的節點上重複作這個,惟一須要注意的是myid這個文件,在其餘的節點上修改成2,3,再啓動。
這樣ZK就創建起來了。
[hadoop@vm22 bin]$ ./zkServer.sh status
JMX enabled by default
Using config: /home/hadoop/tools/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode: leader
容器綁定,優化安裝配置 我解壓到 /home/hadoop/tools/solr-5.3.0。激動人心的時刻就要到來了。
咱們知道ZooKeeper 就是爲了解決統一命名服務、狀態同步服務、集羣管理、分佈式應用配置項的管理等而來的。
1) 首先要上傳配置文件,放在Zk裏面,讓Solr從ZK裏面來得到配置,管理集羣,這個的確是一件美好的事情
在Solr的目錄下面有個server/scripts/cloud-scripts目錄,裏面提供了一個腳原本作這個事情(固然在ZK裏面也有腳原本作這個,Solr裏面的這個是作了一個封裝)
./server/scripts/cloud-scripts/zkcli.sh -cmd upconfig -confdir ./server/solr/configsets/basic_configs/conf -confname myconf -z vm11:2181,vm22:2181,vm33:2181
這幾個參數的意義仍是比較容易看出來的。
創建Link between collection and conf
./server/scripts/cloud-scripts/zkcli.sh -cmd linkconfig -collection mycol -confname myconf -z vm11:2181,vm22:2181,vm33:2181
能夠經過ZK的命令查看是否成功:cd /home/hadoop/tools/zookeeper-3.4.6/bin
./zkCli.sh -server vm22:2181
[zk: vm22:2181(CONNECTED) 2] ls /configs/myconf
[_rest_managed.json, currency.xml, solrconfig.xml, protwords.txt, stopwords.txt, synonyms.txt, lang, schema.xml]
[zk: vm22:2181(CONNECTED) 3] ls /collections/mycol
[state.json, leader_elect, leaders]
2) 下面就能夠把每一個啓動solr節點都啓動了。
./bin/solr start -cloud -p 8983 -s "/home/hadoop/tools/solr-5.3.0/server/solr" -z vm11:2181,vm22:2181,vm33:2181
-cloud指定運行爲cloud模式 -p 端口
-s 就是要指定solr.xml所在的目錄,就是不少時候說的solr.solr.home(solr的官方文檔也是這樣)這個名字真的是很奇葩,開始的時候很難理解,這麼說吧,solr.home就是通常說的solr的安裝目錄,就像萬能的Java_home,hadoop_home.而solr.solr.home能夠理解爲每一個solr運行時的配置目錄,包括core,等等。固然也能夠copy裏面的幾個文件,把-s指向其餘的目錄
-z ZK配置,多個的時候中間用,隔開
三個節點都運行這個命令,運行起來後,這樣cloud就跑起來了。
3) 下面來建立Shard,經過curl來執行
curl ’http://vm11:8983/solr/admin/collections?action=CREATE&name=mycol&numShards=3&replicationFactor=3&maxShardsPerNode=3&collection.configName=myconf‘
這個myconf從上面上傳到zk裏面的配置,咱們在前面早就配置好了。其餘的幾個參數很明顯。
在一個節點上運行就能夠了。開始打開瀏覽器:http://192.168.182.128:8983
幾個地方我高亮出來了,很容易看出來。再來看看solr.solr.home。例如Node1,這個裏面包括三個shard,每一個的一個replica