虛擬機器下 solr7.1 cloud 叢集搭建 (手動解壓和官方指令碼兩種方式)
準備工作:
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叢集中。
[email protected]:/opt/solr-7.1.0/bin# ./solr zk upconfig -d [要上傳的配置檔案目錄] -n [zookeeper上儲存的配置檔名稱] -z [zookeeper的叢集地址]
很多教程中用的是cloud_scripts/下的zkcli.sh。實際上都是一樣的,看自己的喜好,這個檔案在zookeeper下也有,可以用help來看看引數說明。
上傳之後,我們在新建一個集合,用我們剛才上傳的配置檔案,如果不指定,就會使用預設的配置檔案
[email protected]:/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 引數,具體請參考官方文件。