Solr教程-安裝運行

Solr是一個分佈式高性能全文搜索引擎,是基於Lucene開發的很是流行的企業搜索引擎平臺。Solr提供了很是豐富的搜索功能,能夠用來構建很是複雜的搜索業務。html

這個系列教程旨在介紹Solr的經常使用功能。java


準備

在開始以前你須要準備一些必要的硬件及軟件設施:nginx

  1. JDK 1.8 (或者更高版本)
  2. Solr 7.5.x
  3. Postman (可選)
  4. CentOS 7.x (本系列以此OS爲準)
  5. VirtualBox (可選)

CentOS能夠選擇安裝,Solr是支持多操做系統的,可是在Linux下體驗更好,大部分生產環境也都是Linux系統,建議使用CentOS來學習以及使用Solr。shell

VirtualBox能夠選擇安裝,若是你是Windows操做系統,建議使用VirtualBox安裝CentOS來學習使用Solr。apache

後面的操做都是基於CentOS 7.x版本操做系統來運行。centos

安裝Solr

安裝Solr須要Java 1.8或者更高版本,可使用java -version命令檢查你係統上安裝的Java版本。因爲Java語言有好幾個實現,有些實現並不能很是好的支持Solr,根據Lucene JavaBugs來檢查你的Java是否對Solr有很好的支持。Solr支持的操做系統包括Linux, MacOS, Windows。瀏覽器

https://lucene.apache.org/solr/mirrors-solr-latest-redir.html下載對應操做系統的7.5.0版本的Solr安裝包。負載均衡

  • solr-7.5.0.tgz 是針對Linux/Unix/MacOS系統的安裝包
  • solr-7.5.0.zip 是針對Windows系統的安裝包
  • solr-7.5.0-src.tgz 是源碼包
tar zxf solr-7.5.0.tgz
cd solr-7.5.0
bin/solr start

而後使用瀏覽器打開http://localhost:8983,你就能夠看到Solr Admin UI的界面了,這是Solr自帶的管理界面,使用很是方便,在裏面能夠查看狀態,管理core,進行查詢。curl

bin/solr start運行的solr是以standalone模式(非分佈式)運行的,若是是學習可使用此模式快速的嘗試。可是建議使用後面將要介紹的SolrCloud模式來運行,SolrCloud模式能夠很好的進行擴展,應對海量數據的實時搜索,動態剔除/增長機器節點,動態轉移數據分片(shard),全部這些操做均可以不停機進行操做。生產環境也建議使用SolrCloud模式運行。分佈式

這是以SolrCloud模式啓動solr的命令,只須要添加一個-c參數便可

bin/solr start -c

詳細的命令行參數請參考Solr控制腳本參考

SolrCloud啓動以後會佔用8983端口,默認會啓動一個內置的zookeeper實例,佔用9983端口(在solr的端口上加1000)。

多節點的SolrCloud安裝-生產環境部署

通常生產環境部署會把zookeeper單獨部署,其餘的solr節點單獨部署。

外部Zookeeper

下面假設是生產環境部署zookeeper,建議至少須要三個zookeeper節點。 開發環境以及測試使用一個zookeeper也沒有關係。

假設已經有三個機器來運行zookeeper來組建一個小的zookeeper集羣:

  1. 192.168.1.2
  2. 192.168.1.3
  3. 192.168.1.4

步驟爲:下載zookeeper-3.4.13 -> 解壓 -> 配置conf/zoo.cfg -> 啓動

curl -o zookeeper-3.4.13.tar.gz 'https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz'
tar -xzvf zookeeper-3.4.13.tar.gz
cd zookeeper-3.4.13
cp conf/zoo_sample.cfg conf/zoo.cfg
sed -i 's/dataDir=.*/dataDir=.\/data/g' conf/zoo.cfg
mkdir data
echo -e "\nserver.1=192.168.1.2:2888:3888\nserver.2=192.168.1.3:2888:3888\nserver.3=192.168.1.4:2888:3888" >> conf/zoo.cfg
echo 1 > data/myid

解釋一下上面的一些命令:

前四行就不過多解釋,下載zookeeper-3.4.13安裝包,解壓,拷貝conf/zoo_example.cfg爲conf/zoo.cfg配置文件。conf/zoo.cfg爲必須的配置文件,不然zookeeper是沒法啓動的。

第五行使用sed命令把conf/zoo.cfg配置文件裏面的dataDir設置爲安裝目錄下面的data目錄。接着第六行建立dataDir指定的目錄,不然也沒法正確啓動zookeeper。第七行寫入三臺機器互相通訊的配置,2888是鏈接leader端口,3888是選舉端口,兩個端口均可以修改。

最後一行也是最重要的一行,每臺機器在data/myid文件裏面寫入一個不重複的值來標識每一個節點。因此在其餘兩臺機器就不能再寫入1了,分別寫入2和3便可。

上面拷貝conf/zoo_example.cfg爲conf/zoo.cfg的時候,已經默認設置了2181端口爲zookeeper客戶端鏈接的端口,下面在solr啓動的時候使用。

最後運行bin/zkServer.sh start啓動三臺機器上的zookeeper便可。

啓動多個solr節點

假設如今也有三個機器安裝了solr(下載下來直接解壓便可),分別爲192.168.1.10192.168.1.11192.168.1.12,解壓的目錄都爲solr-7.5.0。命令行切換到solr-7.5.0目錄運行以下命令:

bin/solr start -c -z 192.168.1.2:2181,192.168.1.3:2181,192.168.1.4:2181

三臺機器運行一樣的命令後,整個SolrCloud集羣就已經啓動好了,能夠訪問http://192.168.1.10:8983查看solr admin ui。

負載均衡

這個話題比較有意思,不少人問我SolrCloud已經使用了Zookeeper來選舉leader了,SolrCloud裏面的leader shard也會把請求分發到其餘的shard上,爲何還要作負載均衡呢。若是你深刻了解過solr的search component你就會明白,接收請求的那個機器作的計算是要比其餘機器多的,若是你在代碼當中只是訪問其中一臺機器,那麼這臺機器的負載會高於其餘的機器。因此你須要在你的應用程序和SolrCloud之間搭建一個負載均衡,把請求均勻的分佈到各個機器上去。

經常使用的有nginx, haproxy這兩個作負載均衡的軟件了。最後要保證高可用,還須要作一個負載均衡層面的熱備的配置,這樣你的SolrCloud能夠說已經很是堅固了。

原文地址:https://kevinjiang.info/2019/03/05/Solr%E6%95%99%E7%A8%8B-%E5%AE%89%E8%A3%85%E8%BF%90%E8%A1%8C/

相關文章
相關標籤/搜索