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.mzph.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…