准備工作:
vmware workstation 12,OS使用的是ubuntu16.04,三台虛擬機搭建一個solr集群,zookeeper共用這三台虛擬機組成zookeeper集群。
zookeeper的版本為3.4.10,solr版本為7.1,不使用tomcat,使用solr自帶的jetty。jdk版本為1.8.0_151。
第一步:虛擬機的建立
選擇默認配置即可,內存我配置的2G一台,1CPU,網絡采用NAT,DHCP自動分配。建好一台虛擬機后,我們可以去配置一些基本環境,如Jdk等,然后使用克隆的方式,減少一些不必要的操作。
基本配置也就是安裝openssh-server,jdk等常用環境即可。
安裝完成的結果如下。
圖1 安裝完成后xshell下遠程連接的界面
第二步:zookeeper集群環境搭建
下載zookeeper3.4.10,我把zookeeper解壓到了登錄用戶(我的用戶是solr)的根目錄下(我的是/home/solr/zookeeper-3.4.10),實際可根據需求自行放置在相應的目錄下即可。
隨后我們進入zookeeper下conf目錄,復制一份cfg文件,並進行配置。
cd /zookeeper-3.4.10/conf # 進入zookeeper config目錄 cp zoo_sample.cfg zoo.cfg # 復制一份配置文件,並修改內容
圖2 zoo.cfg配置文件
對上述1.2.3.4進行說明:
- zookeeper的數據存放的地方(我的理解),我這里為了方便配置在Home目錄下,實際可根據需求進行配置
- zookeeper的端口
- zookeeper集群的設置,2888和3888分別是監聽和投票選舉端口,server.1 server.2 server.3后續進行說明
- 是一些配置參數,比如觸發事件什么,請自行百度了解相關意思。
server.1 server.2 server.3 說明的是集群中其他zookeeper的"代號",server.后的數字的范圍為1~255
這個數字在剛才配置文件目錄(如上述的/home/solr/zookeeper)下新建一個myid文件,里面填寫這些數字來標識身份即可,比如server.1所在的服務器的zookeeper目錄下就應該有一個myid文件,內容為1。
./zkServer.sh start # 啟動zookeeper
啟動zookeeper查看狀態可以看到如下內容,說明zookeeper集群搭建成功。
圖3 zookeeper follwer 狀態
圖4 zookeeper leader 狀態
第三步 solr集群的搭建(按照官方按照腳本來進行配置)
在這里,我們先用官方的文檔中的腳本來進行安裝,將solr安裝為系統中的一個服務。
tar xzf solr-7.1.0.tgz solr-7.1.0/bin/install_solr_service.sh --strip-components=2 # 將腳本文件從包中解壓出來 sudo bash ./install_solr_service.sh solr-7.1.0.tgz # 進行安裝solr
在這種情況下,solr會默認安裝在/opt/solr-7.1.0/下,同時會自動建立一個/opt/solr 去鏈接/opt/solr-7.1.0,這是為了方便后續更新solr版本是,只要更換/opt/solr-7.1.0文件即可。
同時,默認情況下,會將一些配置文件放置在/var/solr中,后續我們會用到該文件夾。
同時,如果不存在用戶solr,會自動新建一個solr用戶,最后,該腳本會自動啟動solr。
上述的命令采用的是默認安裝的情況,實際條件我們可以進行一些自己的配置。
- -d solr的一些參數和可寫的文件存放的位置,默認為/var/solr
- -i solr的解壓位置,默認為/opt/下
- -p solr綁定的端口,默認為8983
- -s service的名稱
- -u 對應的用戶的名稱,默認為solr
- -n 這個參數說明執行完成后不啟動solr
在執行完腳本后,我們就可以用 sudo service solr [start|restart|stop|status] 等命令來控制solr。
但是在上述情況下,我們並沒有配置solr和zookeeper之間的關系,所以啟動后不會是cloud模式,隨后,我們來配置solr。
首先,進入/var/solr/data 目錄,修改solr.xml文件。
圖5 solr.xml 配置文件
在這里,我們主要配置host這個參數,將host:后面填入虛擬機對應的IP,否則搭建集群的時候,cloud會顯示localhost,會引發錯誤。
隨后,安裝腳本在默認情況下,會在/etc/default/下生成一個solr.in.sh文件,我們要修改這個文件,配置zk_Host參數(也就是zookeeper的參數)。
圖6 solr.in.sh 配置文件
這個配置文件還有其他很多的參數,讀者可以自行去查看是如何意思,我在這里只配置了zk_host,其他都采用默認設置
zk_host 說明了zookeeper集群的位置,可以看出來,這就是我們第一步配置的zookeeper的集群中所以節點的地址。
配置完成后,我們就可以啟動solr。
第四步,基礎操作
首先我們應該用zookeeper上傳一份我們自己的配置文件,放置在我們的zookeeper集群中。
root@ubuntu:/opt/solr-7.1.0/bin# ./solr zk upconfig -d [要上傳的配置文件目錄] -n [zookeeper上保存的配置文件名稱] -z [zookeeper的集群地址]
很多教程中用的是cloud_scripts/下的zkcli.sh。實際上都是一樣的,看自己的喜好,這個文件在zookeeper下也有,可以用help來看看參數說明。
上傳之后,我們在新建一個集合,用我們剛才上傳的配置文件,如果不指定,就會使用默認的配置文件
root@ubuntu:/opt/solr-7.1.0/bin# ./solr create-collection -c [新建集合的名字] -n [zookeeper上配置文件的名稱,上一步設置的那個n] -shards 2 [分兩塊] -replicationFactor 2 [replic數量]
我們進入solr-cloud,就可以看到我們新建的集合,也可以看到我們solr-cloud集群已經搭載成功。
圖7 solr-cloud
第五步 直接解壓solr的配置說明
其他配置和官方腳本安裝都一樣,核心問題就是配置文件的位置不一樣,需要特別說明。
solr.xml在解壓后根目錄下server/solr 下
solr.in.sh 在根目錄下的bin/下
啟動命令要使用 -cloud -z 參數,具體請參考官方文檔。