1. 程式人生 > >虛擬機器下 solr7.1 cloud 叢集搭建 (手動解壓和官方指令碼兩種方式)

虛擬機器下 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進行說明:

  1. zookeeper的資料存放的地方(我的理解),我這裡為了方便配置在Home目錄下,實際可根據需求進行配置
  2. zookeeper的埠
  3. zookeeper叢集的設定,2888和3888分別是監聽和投票選舉埠,server.1 server.2 server.3後續進行說明
  4. 是一些配置引數,比如觸發事件什麼,請自行百度瞭解相關意思。

  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。

 上述的命令採用的是預設安裝的情況,實際條件我們可以進行一些自己的配置。

  1.   -d solr的一些引數和可寫的檔案存放的位置,預設為/var/solr
  2.  -i solr的解壓位置,預設為/opt/下
  3.  -p solr繫結的埠,預設為8983
  4.  -s service的名稱
  5.  -u 對應的使用者的名稱,預設為solr
  6.  -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 引數,具體請參考官方文件。