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…

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…

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)…

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是人们…

【材质】色彩基础

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

关于“Python”的核心知识点整理大全38

14.1.1 创建 Button 类 由于Pygame没有内置创建按钮的方法&#xff0c;我们创建一个Button类&#xff0c;用于创建带标签的实心矩形。 你可以在游戏中使用这些代码来创建任何按钮。下面是Button类的第一部分&#xff0c;请将这个类保存为 文件button.py&#xff1a; button.py …

同步您的Google Chrome书签,主题等

Do you regularly use Google Chrome on multiple computers? Here’s how you can keep almost everything in your browser synced easily in Google Chrome. 您是否经常在多台计算机上使用Google Chrome&#xff1f; 您可以通过以下方法在Google Chrome浏览器中轻松同步浏…

找call写call_如何将Google Call Widget添加到任何网页

找call写callAdding a Google Call Widget to your website or blog allows visitors to contact you using your Google Voice number. The widget provides an easy and cost-effective way to provide live customer support without the customer knowing your real number…

XML与web开发-01- 在页面显示和 XML DOM 解析

前言&#xff1a; 关于 xml 特点和基础知识&#xff0c;可以菜鸟教程进行学习&#xff1a;http://www.runoob.com/xml/xml-tutorial.html 本系列笔记&#xff0c;主要介绍 xml 在 web 开发时需要了解的知识 XML 在页面显示数据 XML 指可扩展标记语言&#xff08;eXtensible Mar…

酷安应用市场php源码,酷安应用市场 v11.0.3-999 去广告极限精简版

酷安&#xff0c;真实有趣的数码社区。酷安app&#xff0c;国内安卓应用市场客户端&#xff0c;应用资源丰富&#xff0c;应用开发者水准高&#xff0c;应用无首发Logo&#xff0c;原汁原味上架&#xff0c;得到了安卓用户群广泛认可。有人说现在的酷安市场(酷安网)没有以前那么…

chromebook刷机_如何将网站添加到您的Chromebook架子上

chromebook刷机Bookmarks are great to keep your favorite sites nearby, but they aren’t the fastest option out there. Instead, why not add shortcuts for your favorite websites right on the Chromebook shelf? 书签可以很好地将您喜欢的网站保留在附近&#xff0c…

Locktopus锁定iOS设备上的单个应用程序

If you want to share a cool game on your iOS device but not let everyone read your email, Locktopus offers a simple app-by-app lockdown solution. 如果您想在iOS设备上共享一个很棒的游戏&#xff0c;但又不想让所有人都阅读您的电子邮件&#xff0c;那么Locktopus提…

视频翻录_将DVD解密并复制到硬盘驱动器而无需翻录

视频翻录Have you ever wanted to make backup copies of your DVDs but didn’t want to mess with confusing DVD ripping software? Today, we’ll look at drop dead simple method to decrypt DVDs on the fly with DVD43 so you can easily copy them to your hard dri…

详解面向对象、构造函数、原型与原型链

详解面向对象、构造函数、原型与原型链 为了帮助大家能够更加直观的学习和了解面向对象&#xff0c;我会用尽量简单易懂的描述来展示面向对象的相关知识。并且也准备了一些实用的例子帮助大家更加快速的掌握面向对象的真谛。 jQuery的面向对象实现封装拖拽简易版运动框架封装这…