solr安裝(叢集版)
什麼時候搭建叢集?
當我們搜尋系統訪問量過大的時候,solr索引量過大的時候我們就需要搭建solr叢集。
怎麼搭建叢集?
在搭建叢集之前,我們需要明白幾個名詞
Collection:Collection在solr叢集中是一個邏輯上完整的索引結構,它常常被劃分為一個或多個分片(Shard),他們使用相同的配置資訊。例如對商品資訊搜尋,可以建立一個collection,collection=shard1+shard2+...+shardX
Shard:每個Shard被劃成一個或多個replication,通過選舉確定那個是leader.
Core:Core是solr中一個獨立的執行單位,提供索引,搜尋服務。一個shard需要由一個Core或多個Core組成。
Master-Slave:Master-Slave一個主從結構,master為主節點,salve是從節點,為了達到高可用,我們在同一個Shard下搭建一個master節點和salver節點,當master節點掛了,salver節點扶正。
zookeeper:zookeepr在這裡,我們用它作為叢集的管理工具它是叢集的入口,它集中管理配置檔案,實現了叢集的負載均衡,和容錯。
下面我們來看下我們要搭建的solr的架構圖
zookeeper是叢集的入口,每個collection分成兩片,每片有兩個節點,一個主一個從。
因為zookeeper有一個投票選舉,為了保證可以超過半數,所以需要三個
solr叢集分成兩片,每片有一主一備共四片,所以需要四個
我們開始搭建叢集
我們的叢集架構中需要三個zookeeper,四個solr,由於我的電腦裡裝執行不起來這麼多的虛擬機器,所以我用一臺虛擬機器來搭建一個偽分散式,也就是在一臺虛擬機器上用不同的區分不同的應用。
另外,zookeeper和solr都是java開發的,java服務比較耗記憶體所以虛擬機器記憶體建議大點。
搭建solr叢集的搭建共兩大步:1.zookeeper叢集搭建,2.solr叢集搭建
搭建zookeeper叢集
zookeeper叢集中
1.新建一個目錄存放叢集
zookeeper叢集中三個節點的搭建是一樣的,所以我只演示一個節點的搭建,另兩個省略。
命令:mkdir solr-cloud
2.把zookeeper上傳到solr-cloud裡去
我是用的是xftp5
3.解壓zookeeper
命令:tar zxf zookeeper-3.4.6.tar.gz
4.複製三份解壓後的zookeeper-3.4.6到zookeeper01中
命令:cp -r zookeeper-3.4.6 /root/art/solr-cloud/zookeeper01
5.進入zookeeper01中建立一個data目錄
命令:mkdir data
6.在data裡建立一個myid檔案
命令:touch myid
檢視一下改沒改成功
命令:cat myid
7.把conf/zoo_sample.cfg改名成zoo.cfg
命令:mv zoo_sample.cfg zoo_sample.cfg
8.修改zoo.cfg檔案,把data目錄修改成我們建立的data目錄
命令:vim zoo.cfg
這樣我們就完成了一個zookeeper的配置
剩下兩個zookeeper和這個一樣,此處省略
solr叢集搭建
三個zookeeper搭建完成,我們需要搭建四個solr
solr叢集的四個節點搭建也是一樣的,同樣我只演示一個節點的搭建。
1.把tomcat複製四份
cp -r pache-tomcat-7.0.47 /root/art/solr-cloud/tomcat01
2.把tomcat每一個的埠號改一下
命令:vim tomcat01/conf/server.xml
在這裡只給出一個tomcat修改的圖,另三個省略
3.把solr的web工程部署到這四個tomcat中
也就是把配置好的單機版的賦值到tomcat的webapps中
命令:cp -r /root/art/solr/apache-tomcat-7.0.47/webapps/solr tomcat04/webapps/
5.修改每一份solrhome的solr.xml
命令:vim solr.xml
這裡只展示一份的修改,其他四個和這個一樣
6.修改每個solr工程的web.xml,建立起每個solr和solrhome的關係
命令:vim tomcat01/webapps/solr/WEB-INF/web.xml
7.接著我們建立tomcat和zookeeper之間的關係
8.讓zookeeper管理配置檔案
使用一個工具,把隨便一個solehome中的conf檔案上傳到zookeeper中就行,我選擇了solrhome01,工具在solr/example/scripts/zkcli.sh
執行上傳檔案命令:./zkcli.sh -zkhost 192.168.2.100:2181,192.168.2.100:2182,192.168.2.100:2183 -cmd upconfig -confdir /usr/local/solr-cloud/solrhome01/collection1/conf/ -confname myconf
檢視是否上傳成功
先使用zookeeper的客戶端zkCli.sh連線zookeeper
他在zookeeper01/bin/zkCli.sh
開始連線
連線的時候只要連線任意一個zookeeper節點就行,不是必須連leader
連線非當前節點
檢視檔案是否上傳成功
9.啟動tomcat
給tomcat寫個批處理
命令:vim start-tomcat.sh
在檔案中遍歷四個tomcat的啟動命令
給批處理檔案改許可權
命令:chmod +x start-tomcat.sh
啟動tomcat
命令:./start-tomcat.sh
檢視日誌
10.訪問solr
192.168.2.100:8182/solr
我們的solr的叢集就搭建完成了,這個是一個主三個從,把collection1分成了一片,不是我想要的叢集
如果只想要一個分片的就不用看了
下面我演示一下建立一個collection,分成兩片,兩主,兩從
建立collection
我們需要向solr發起一個請求
http://192.168.2.100:8180/solr/admin/collections?action=CREATE&name=collection2&numShards=2&replicationFactor=2
順便也說一下刪除collection吧
刪除collection
http://192.168.2.100:8180/solr/admin/collections?action=DELETE&name=collection1