Solr 11 - Solr集群模式的部署(基于Solr 4.10.4搭建SolrCloud)

目錄

  • 1 SolrCloud結構說明
  • 2 環境的安裝
    • 2.1 環境說明
    • 2.2 部署并啟動ZooKeeper集群
    • 2.3 部署Solr單機服務
    • 2.4 添加Solr的索引庫
  • 3 部署Solr集群服務(SolrCloud)
    • 3.1 啟動ZooKeeper
    • 3.2 ZooKeeper管理配置文件
    • 3.3 修改SolrCloud監聽端口
    • 3.4 關聯Solr與ZooKeeper
    • 3.5 分發SolrCloud服務
    • 3.6 啟動所有Solr服務
    • 3.7 訪問SolrCloud

1 SolrCloud結構說明

1) ZooKeeper集群:

a) ZooKeeper需要保證高可用, 需要搭建集群;

b) ZooKeeper需要進行投票和選舉機制, 最少需要三個節點;

c) ZooKeeper的三個節點, 注意修改端口號不一樣

2) Solr集群:

a) 需要四個節點(Solr應用服務器);

b) 四臺Tomcat部署4個 solr應用服務器;

c) 整個Collection分為兩個分片: 每個分片均由兩個副本組成.

2 環境的安裝

2.1 環境說明

  • OS: CentOS 7.0
  • JDK: HotSpot(TM) 1.8.0_162
  • Tomcat: 8.0.53
  • ZooKeeper: 3.4.10
  • Solr: 4.10.4

2.2 部署并啟動ZooKeeper集群

ZooKeeper集群的安裝部署, 詳細文檔參見 ZooKeeper 01 - 什么是ZooKeeper + 部署ZooKeeper集群.

2.3 部署Solr單機服務

參考Solr04 - 在Jetty和Tomcat上部署Solr單機服務, 這里通過Tomcat的虛擬環境發布Solr項目.

(1) 創建SolrCloud的發布路徑:

創建 /data/solr-cloud作為項目發布路徑, 并賦予讀寫權限:

mkdir -p /data/solr-cloud && cd /data
chmod 644 solr-cloud

(2) 將apache-tomcat-8.0.53.tar.gz拷貝到/data/solr-cloud/tomcat下并解壓:

mkdir -p /data/solr-cloud/tomcat && cd /data/solr-cloud/tomcat
tar -zxf apache-tomcat-8.0.53.tar.gz

(3) 解壓solr.4.10.4.tgz:

solr.4.10.4.tgz拷貝到任意一臺服務器的/data/solr-cloud下, 解壓:

tar -zxf solr-4.10.4.tgz

(4) 找到Solr安裝包example/webapps下的solr.war包, 解壓縮:

cd /data/solr-cloud/solr-4.10.4/example/webapps
# 使用jar命令解壓縮
jar -xvf solr.war solr
# 解壓縮之后, 刪除solr.war包, 防止Tomcat自動解壓縮此包, 導致配置被覆蓋
rm -rf solr.war

(5) 部署Solr項目: 創建存放Solr應用的目錄, 并將解壓后的solr.war拷貝至此目錄下:

cd /data/solr-cloud 
mkdir -p tomcat/display/solr
# 將所有文件拷貝至solr目錄下
cp -r solr-4.10.4/example/webapps tomcat/display/solr

(6) 使用Tomcat的虛擬目錄安裝: 這里沒有將Solr服務添加到Tomcat的webapps目錄下, 所以需要修改Tomcat的 $TOMCAT_HOME/conf/server.xml文件, 添加Solr的服務路徑:

說明: 這里將Solr服務部署在 /data/solr-cloud/tomcat/display/solr路徑下.

<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"><!-- 配置訪問路徑, 效果為: http://ip:port/solr --><Context path="/solr" privileged="true"docBase="/data/solr-cloud/tomcat/display/solr"> <Environment name="solr/home" type="java.lang.String" override="true"value="/data/solr-cloud/tomcat/solrhome"/> </Context> <!-- ... ... -->
</Host>

參數說明:

path: 指定訪問該Web應用的名稱, 即 http://ip:8080/solr 中端口號之后的部分;
docBase: 指定Web應用的文件路徑, 如果是war包, 必須加上后綴;
<Environment>節點就是設置solr/home的目錄, 用來存放各個Collection的索引文件.

(7) 配置其他文件:

a. 拷貝Solr解壓包下的log4j.properties文件至Solr服務的WEB-INF/classes下:

cd /data/solr-cloud
mkdir -p tomcat/display/solr/WEB-INF/classes
cp solr-4.10.4/example/resources/log4j.properties tomcat/display/solr/WEB-INF/classes

b. 拷貝Solr解壓包下example/lib/ext中的所有jar包拷貝到Solr服務的WEB-INF/lib下:

cd /data/solr-cloud
cp -r solr-4.10.4/example/lib/ext/* tomcat/display/solr/WEB-INF/lib

c. 拷貝Solr解壓包下example/solr下的solr.xml至solrhome下(必須存在, 否則Solr服務將不能正常啟動):

cd /data/solr-cloud && mkdir -p tomcat/solrhome
cp -r solr-4.10.4/example/solr/solr.xml tomcat/solrhome

d. 拷貝Solr解壓包下的example/solr/collection1至tomcat目錄下的solrhome中, 用作SolrCore的配置文件:

cd /data/solr-cloud
cp -r solr-4.10.4/examplesolr/collection1 tomcat/solrhome

啟動Tomcat后, 訪問 http://ip:port/solr, 如果出現Solr Web管理頁面, 說明單機版Solr部署完成.

2.4 添加Solr的索引庫

(1) 在Solr的管理界面點擊[Core Admin], 再點擊[Add Core]這項, 系統提示instanceDir和dataDir必須存在, 否則將拋出如下錯誤:

new_core: org.apache.solr.common.SolrException:org.apache.solr.common.SolrException: Could not load conf for core new_core: Error loading solr config from /data/solr-cloud/tomcat/solrhome/new_core/conf/solrconfig.xml

添加索引庫報錯圖示

(2) 映射solrhome的位置:

vim /data/solr-cloud/tomcat/display/solr/WEB-INF/web.xml
# 刪除40行和46行的注釋, 如下: 
<env-entry><env-entry-name>solr/home</env-entry-name><env-entry-value>/data/solr-cloud/tomcat/solrhome</env-entry-value><env-entry-type>java.lang.String</env-entry-type>
</env-entry>

(3) 重新啟動Tomcat, 發現名為collection1的SolrCore已經加載上了:

添加索引庫成功

其他注意事項:

a) 如果刪除rm –rf /data/solr-cloud/tomcat/solrhome/collection1/core.properties文件, 集群啟動后就沒有collection;

b) 以后再次創建SolrCore時, 可以直接復制collection1目錄, 修改core.properties文件中的name即可.

3 部署Solr集群服務(SolrCloud)

3.1 啟動ZooKeeper

SolrCloud的部署需要依賴ZooKeeper, 需要先啟動所有ZooKeeper服務器.

3.2 ZooKeeper管理配置文件

在分布式服務中, 多采用ZooKeeper統一管理配置文件, 這里Solr使用到的配置文件主要有schema.xmlsolrconfig.xml等, SolrCloud各個節點使用ZooKeeper統一管理的文件即可.

(1) 將Solr單機服務的配置文件交由ZooKeeper管理:

執行下述命令將Solr單機conf下的配置文件上傳到ZooKeeper(此命令為一條命令):

cd /data/solr-cloud/solr-4.10.4/example/scripts/cloud-scripts# 注意: 下面一長串只是一條命令, 不要太早回車哦~
sh zkcli.sh -zkhost 10.0.20.50:2181,10.0.20.51:2181,10.0.20.52:2181 -cmd upconfig -confdir /data/solr-cloud/tomcat/solrhome/collection1/conf -confname myconf

命令說明:

zkhost: 指定ZooKeeper集群的ip及端口號, 多個之間以半角逗號隔開;
cmd: 表示使用某個內部命令, 這里使用upconfig, 即更新配置信息;
confdir: 需要上傳的配置文件所在的位置;
confname: 自定義上傳后ZooKeeper管理的配置文件的名稱.

(2) 使用ZooKeeper的服務器查詢配置文件:

cd /data/zookeeper/zookeeper-3.4.10/bin/
sh zkCli.sh# 信息如下: 
......
WATCHER::
WatchedEvent state:SyncConnected type:None path:null
[zk: localhost:2181(CONNECTED) 0] ls /
[configs, zookeeper]
[zk: localhost:2181(CONNECTED) 1] ls /configs
[myconf]
[zk: localhost:2181(CONNECTED) 2] ls /configs/myconf
[currency.xml, mapping-FoldToASCII.txt, protwords.txt, scripts.conf, synonyms.txt, stopwords.txt, _schema_analysis_synonyms_english.json, velocity, admin-extra.html, update-script.js, _schema_analysis_stopwords_english.json, solrconfig.xml, admin-extra.menu-top.html, elevate.xml, schema.xml, clustering, mapping-ISOLatin1Accent.txt, _rest_managed.json, xslt, spellings.txt, lang, admin-extra.menu-bottom.html]
[zk: localhost:2181(CONNECTED) 3] quit
Quitting...
2018-10-25 21:27:08,122 [myid:] - INFO  [main:ZooKeeper@684] - Session: 0x166a788acfd0001 closed
2018-10-25 21:27:08,126 [myid:] - INFO  [main-EventThread:ClientCnxn$EventThread@519] - EventThread shut down for session: 0x166a788acfd0001

查看ZooKeeper管理的配置文件

3.3 修改SolrCloud監聽端口

修改每個Solr服務的/usr/local/solr-cloud/solr.xml文件中的hostPort(此端口默認為Jetty容器的訪問端口8983). 如果在catalina.sh中指定, 此處的設置將被覆蓋.

<solrcloud>  <str name="host">${host:}</str>  <int name="hostPort">${jetty.port:8080}</int>  <str name="hostContext">${hostContext:solr}</str>  <int name="zkClientTimeout">${zkClientTimeout:30000}</int>  <bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool>  
</solrcloud>  

3.4 關聯Solr與ZooKeeper

即關聯Tomcat與ZooKeeper, 修改每一臺Solr服務所屬的tomcat/bin/catalina.sh, 指定ZooKeeper服務的地址:

vim /data/solr-cloud/tomcat/apache-tomcat-8.0.53/bin/catalina.sh
# 在cygwin=false(大約109行)之前, 通過-DzkHost參數指定ZooKeeper的IP和端口號:
JAVA_OPTS="$JAVA_OPTS -DzkHost=zoo1:2181,zoo2:2181,zoo3:2181"  

可以使用vim的查找功能查找JAVA_OPTS的定義的位置: 按[Esc], 在命令模式下輸入:/cygwin, 然后回車, 按字母[n]查找下一個.

3.5 分發SolrCloud服務

cd /data
scp -r solr-cloud/ 10.0.20.51:/data
scp –r solr-cloud/ 10.0.21.52:/data 

3.6 啟動所有Solr服務

在啟動ZooKeeper集群后, 依次啟動所有Solr服務 --- 即Tomcat.

3.7 訪問SolrCloud

訪問任意一臺Solr, 左側菜單將出現[Cloud]功能按鈕, 點擊查看, 出現下圖中的信息, 說明SolrCloud部署成功.

SolrCloud啟動圖

參考資料

solr7.3.1在CentOS7上的安裝

solrCloud+tomcat+zookeeper集群配置

版權聲明

作者: 馬瘦風

出處: 博客園 馬瘦風的博客

您的支持是對博主的極大鼓勵, 感謝您的閱讀.

本文版權歸博主所有, 歡迎轉載, 但請保留此段聲明, 并在文章頁面明顯位置給出原文鏈接, 否則博主保留追究相關人員法律責任的權利.

轉載于:https://www.cnblogs.com/shoufeng/p/9881362.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/279054.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/279054.shtml
英文地址,請注明出處:http://en.pswp.cn/news/279054.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

matlab怎么畫一箭穿心,MATLAB學習與使用:如何繪制三維心形圖 經驗告訴你該這樣...

MATLAB是MATrix & LABoratory(矩陣實驗室)的縮寫&#xff0c;是一款強大的科學軟件&#xff0c;具有編程、繪圖、仿真等功能。利用MATLAB繪制一款三維的心形圖&#xff0c;然后送給心愛的姑娘&#xff0c;也是理工男撩妹的一項小技能。工具/材料MATLAB三維心形圖操作方法01…

mac重置系統_如何在Mac上重置打印系統

mac重置系統Printers are notorious for failing frequently. A quick restart of the printer or computer usually fixes most intermittent issues, but occasionally it’s best to reset your printing settings and reinstall the printer completely. Consider this a f…

COW奶牛!Copy On Write機制了解一下

前言 只有光頭才能變強 在讀《Redis設計與實現》關于哈希表擴容的時候&#xff0c;發現這么一段話&#xff1a; 執行BGSAVE命令或者BGREWRITEAOF命令的過程中&#xff0c;Redis需要創建當前服務器進程的子進程&#xff0c;而大多數操作系統都采用寫時復制&#xff08;copy-on-w…

參數回調

1.場景 參數回調方式與調用本地 callback 或 listener 相同&#xff0c;只需要在 Spring 的配置文件中聲明哪個參數是 callback 類型即可。 Dubbo 將基于長連接生成反向代理&#xff0c;這樣就可以從服務器端調用客戶端邏輯 2.

matlab胡良劍第五章,MATLAB習題參考答案(胡良劍,孫曉君)

MATLAB習題參考答案第一章 MATLAB入門4、求近似解解&#xff1a;>> x-2:0.05:2;yx.^4-2.^x兩個近似解&#xff1a;y1f(-0.85) -0.0328; y2f(1.250) 0.0630第二章 MATLAB編程與作圖1、 設x是數組&#xff0c;求均值和方差 解&#xff1a;函數文件如下&#xff1a;function…

windows 全局變量_如何在Windows中使用全局系統環境變量

windows 全局變量Any system administrator who spends a good bit of time in the command prompt or batch scripts is probably well aware of built in environment variables Windows offers (i.e. Path, WinDir, ProgramFiles, UserProfile, etc.). If you find yourself…

Day2-T1

原題目 Describe&#xff1a;貪心&#xff0c;左邊和右邊中選字典序小的 code&#xff1a; #include<bits/stdc.h> using namespace std; int n,step,head,tail; char p[50005]; int main() {freopen("bcl.in","r",stdin);freopen("bcl.out&quo…

hadoop編譯java,Hadoop源碼編譯(2.4.1)

背景Hadoop 2.4.1預編譯版本自帶的libhadoop.so是在32位機器上編譯上,導致在64位OS上運行時&#xff0c;總出現如下告警&#xff1a;WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable查看…

C# System.Windows.Forms.NumericUpDown 控件全選其中文字

num_length.Focus(); UpDownBase updbText (UpDownBase)num_length; num_length.Select(0, updbText.Text.Length);轉載于:https://www.cnblogs.com/LuoEast/p/7942476.html

twitter api使用_使用P2創建自己的Twitter風格的組博客

twitter api使用Would you like a great way to post stuff quickly online and communicate with your readers? Here’s how you can use the P2 theme to transform WordPress into a great collaboration and communications platform. 您是否想以一種很好的方式在網上快…

10_30_unittest

1、斷言 1&#xff09;、self.assertEqual(2,res)#期望值qian、結果值hou2&#xff09;TextTestRunner 源碼 必要的參數3&#xff09;測試結果 上下文管理器 with open("test.txt",w,encodingutf-8) as file:runner unittest.TextTestRunner(streamfile,verbosity2)…

用maven profile實現環境配置切換

前言 互聯網后端服務通常會部署多個環境&#xff1a;開發環境、測試環境、預發布環境和生產環境。不同的環境通常有各自的環境配置&#xff0c;例如mysql服務器的地址、用戶名密碼&#xff0c;zookeeper的ip和端口等等。為了使打出的jar包能獲取不同環境的配置&#xff0c;業界…

laravel graphql php,結合 Laravel 初步學習 GraphQL

本文字數&#xff1a;7134&#xff0c;大概需要14.27分鐘。按照官網所述的&#xff1a;A query language for your API一種用于 API 的查詢語言GraphQL is a query language for APIs and a runtime for fulfilling those queries with your existing data. GraphQL provides a…

wi-fi共享大師免廣告_如何保護Wi-Fi網絡免受入侵

wi-fi共享大師免廣告Insecure Wi-Fi is the easiest way for people to access your home network, leech your internet, and cause you serious headaches with more malicious behavior. Read on as we show you how to secure your home Wi-Fi network. 不安全的Wi-Fi是人們…

MongoDb分片集群認證

本文主要基于已經搭建好的未認證集群&#xff0c;結合上篇Mongodb副本集分片集群模式環境部署&#xff08;https://www.cnblogs.com/woxingwoxue/p/9875878.html&#xff09;&#xff0c; MongoDb分片集群認證幾個主要流程1.在分片集群環境中&#xff0c;副本集內成員之間需要用…

漢克爾變換matlab,HankelTransform

HankelTransform所屬分類&#xff1a;matlab例程開發工具&#xff1a;matlab文件大小&#xff1a;135KB下載次數&#xff1a;66上傳日期&#xff1a;2011-09-17 13:41:39上 傳 者&#xff1a;甜頭說明&#xff1a; Matlab Hankel變換源代碼&#xff0c;可以直接當做MATLAB too…

【材質】色彩基礎

RBG顏色空間 目前&#xff0c;絕大部分顯示器采用的是RGB顏色標準&#xff0c;因此幾乎所有軟件也采用此標準&#xff0c;UE4也不例外。 R、G、B這三個字母分別代表紅色&#xff08;red&#xff09;、綠色&#xff08;green&#xff09;、藍色&#xff08;blue&#xff09;三條…

使用mintty(_如何使用Mintty改善Cygwin控制臺

使用mintty(Cygwin’s great for getting some Linux command-line goodness in Windows, but using the Windows Shell to access it kills some of that magic. Using Mintty and a few other methods, you can make the experience much more luxurious. Cygwin非常適合在Wi…

18.phpmyadmin 4.8.1 遠程文件包含漏洞(CVE-2018-12613)

phpmyadmin 4.8.1 遠程文件包含漏洞&#xff08;CVE-2018-12613&#xff09; phpMyAdmin是一套開源的、基于Web的MySQL數據庫管理工具。其index.php中存在一處文件包含邏輯&#xff0c; 通過二次編碼即可繞過檢查&#xff0c;造成遠程文件包含漏洞。 受影響版本: phpMyAdmin 4.…

開源php面板,寶塔面板nginx安裝終于搞定了

server{listen 80;server_name lvyou.yssknet.com;index index.php index.html index.htm default.php default.htm default.html;root ***********/public;#SSL-START SSL相關配置&#xff0c;請勿刪除或修改下一行帶注釋的404規則#error_page 404/404.html;#SSL-END#ERROR-PA…