搜索引擎系列八:solr-部署詳解(solr兩種部署模式介紹、獨立服務器模式詳解、SolrCloud分布式集群模式詳解)
一、solr兩種部署模式介紹
Standalone Server 獨立服務器模式:適用於數據規模不大的場景
SolrCloud 分布式集群模式:適用於數據規模大,高可靠、高可用、高並發的場景
二、獨立服務器模式詳解
1. 獨立服務器模式架構
說明:
1、每個solr服務器實例(啟動的一個solr服務器進程)都有一個solr主目錄(系統變量名為:solr.solr.home)。啟動服務器實例時須為實例指定主目錄(默認為:server/solr目錄)。
2、solr主目錄中存放該服務器實例托管的內核。
3、一個solr服務器實例中可托管多個內核。
2.Solr主目錄介紹
每個主目錄下都有一個solr服務器實例配置文件solr.xml。 solrCloud模式下solr.xml可放置在zk上。
創建一個主目錄(復制solr.xml),在它之上啟動一個服務實例
啟動命令:solr.cmd start -s D:/test/solrhome -p 8984
3. solr命令介紹
啟動服務器實例命令:
bin/solr start [options]
bin/solr start -help
bin/solr restart [options]
bin/solr restart -help
註意:重啟要用和啟動時一樣的options
啟動時指定solr主目錄的命令:solr.cmd start -s D:/test/solrhome -p 8984
查看本機上運行的solr服務實例的狀態:bin/solr status
停止solr服務實例:
bin/solr stop [options]
bin/solr stop -help
停止單個服務:
bin/solr stop –p port
停止所有solr實例:
bin/solr stop -all
4. core 內核詳解
4.1 內核以及內核的用途
內核:是在Solr服務器中的具體唯一命名的、可管理和可配置的索引。一臺solr服務器可以托管一個或多個內核。
內核的典型用途:區分不同模式的文檔
4.2 core 內核管理:
創建內核
bin/solr create [options]
bin/solr create –help
bin/solr create_core [options]
bin/solr create_core -help
示例:
bin/solr create –c mycore –p 8983
-c <name> 內核的名字(必需).
-d <confdir> 內核配置目錄。默認_default.
-p <port> 創建命令要發送到的solr服務實例的端口。如未指定則獲取本機運行的solr服務實例列表的第一個。
卸載、加載、重載內核
刪除內核
bin/solr delete [options]
bin/solr delete -help
示例:
bin/solr delete –c corename –p port
4.3 core 內核目錄結構
內核屬性文件core.properties的作用:配置內核的一些配置、作為內核的標識在啟動solr的時候加載內核
註意:可以看到集群模式下是沒有conf目錄的,這是因為集群模式的conf是放在zk下給所有的內核使用的
內核配置文件目錄
三、SolrCloud分布式集群模式詳解
1. 為什麽需要分布式集群模式?
源於需求:
1. 索引數據量大
如何存儲? 如何保證搜索性能?
2. 如何保證高可靠、高可用?
3. 如何應對高並發、實時響應需求?
索引將被如何存儲?
分割成多個片存儲到集群的不同節點上,每個分片有備份,存儲在集群的不同節點上。
獨立服務器上索引叫內核,那集群上索引叫什麽?
solrCloud中以 collection(集合)來稱呼索引,內核存儲的是集合分片(shard)的備份(replication)
2. SolrCloud分布式集群架構
3. 分布式集群模式啟動
3.1 啟動zookeeper
獨立的zookeeper,則需先啟動zookeeper
內嵌的zookeeper,則先啟動包含zookeeper的solrNode
3.2 啟動solrNode
內嵌的zookeeper的第一個solrNode節點服務啟動:
bin/solr start –c –p port –s solrhome
其他solr節點的啟動:
bin/solr start –c –p port –s solrhome –z zkhost:port
註意:啟動的zookeeper實例的端口為 slor實例的端口+1000
4. 分布式集群模式部署練習
在我們的電腦上部署一個兩個節點的集群
步驟1:創建兩個solr主目錄,如
D:\test\solrCloud\node1\solr
D:\test\solrCloud\node2\solr
node1/solr目錄下需要zk的配置文件,到D:\solr-7.3.0\server\solr 下拷貝 zoo.cfg
然後到D:\solr-7.3.0\server\solr拷貝solr.xml到兩個solr目錄下
步驟2:啟動第一個內嵌有zk的solrNode
solr.cmd start –c –s D:/test/solrCloud/node1/solr -m 100M
沒有指定端口默認8983
-m 100M表示分配100M的內存
步驟3:啟動第二個solrNode
solr.cmd start –c –s D:/test/solrCloud/node2/solr -m 100M -p 8984 –z localhost:9983
註意:啟動的zookeeper實例的端口為 slor實例的端口+1000
在瀏覽器輸入地址http://localhost:8983/solr查看現在的solr的web控制臺有什麽變化
創建集合 collection
集合—分片數2---備份因子2
solr.cmd create –c collection01 –d _default –shards 2 –replicationFactor 2 –p 8983
說明:在8983這個solr實例上使用默認配置_default創建一個集合collection01,這個集合有2個分片,每個分片有2個備份
solr.cmd create –c collection02 –d sample_techproducts_configs –shards 2 –replicationFactor 2 –p 8983
說明:在8983這個solr實例上使用默認配置sample_techproducts_configs創建一個集合collection02,這個集合有2個分片,每個分片有2個備份
創建完成以後就可以在solr的管理頁面看到創建的集合了
提交數據到集合collection02中:
Linux/Mac;
solr-7.3.0:$ bin/post -c collection02 example/exampledocs/*
Windows:
java -jar -Dc=collection02 -Dauto example\exampledocs\post.jar example\exampledocs\*
執行完以後就可以在集合的備份內核中看到提交的數據了
搜索引擎系列八:solr-部署詳解(solr兩種部署模式介紹、獨立服務器模式詳解、SolrCloud分布式集群模式詳解)