知识点
相关文章
更多最近更新
更多实战: SOLR的分布式部署(复制模式 CollectionDistribute)部署流程详解 (二)
2019-03-27 01:01|来源: 网路
需求:
- 实现SOLR主,辅服务器更新同步,每次客户端COMMIT请求都会及时应用在辅服务器上。
- 实现MULTICORE,实际生产环境中往往会有多个搜索应用实例。
步骤:
一、 准备条件
- 服务器准备
准备两台服务器:
一台用作主服务器(192.168.0.36),负责分发索引
另一台负责辅服务器(192.168.0.46),负责承载搜索服务。
2. 软件环境
Linux版本不限,32,64位不限
应用容器:TOMCAT 6.0
JAVA版本:JDK1.6以上版本
Solr应用环境目录: /solr/video/ (可使用ln –s 创建软连接) 和 /solr/album/
(本例设定为两个应用:实际情况可自由增减 )
Solr索引目录:/solr/data/album 和 /solr/data/video
3. 划分应用
本例中划分两个应用 专辑 album 和 视频 video
4. 基础目录创建(主,辅均需配置)
a) 在 /solr/ 应用环境目录下创建两个目录:album 和 video
b) 分别将SOLR安装目录下Solr/example/solr/conf文件夹至这两个目录
c) 分别复制安装目录solr/src/scripts文件夹至 album 和 video目录,并将script改名为bin(后续要用到)
d) 按照特定需求分别修改索引字段结构文件: schema.xml(有关此文件的配置不再撰述)
e) 复制 Solr/example/multicore 下的solr.xml文件至 应用环境根目录:/solr/
f) 创建索引目录 /solr/data/album 和 /solr/data/video
二、 配置MULTICORE(主,辅均需配置)
划分业务类型,如做一个视频搜索引擎需要专辑和视频两大应用,则:
1) 配置SOLR业务类型:在 /solr/下 编辑solr.xml文件
<core name="core0" instanceDir="core0" />
<core name="core1" instanceDir="core1" />
-
-
- 修改为
-
<core name="album" instanceDir="album" />
<core name="video" instanceDir="video" />
2) 指定索引目录,进入/solr/album/conf目录,打开编辑器修改solrconfig.xml,找到<dataDir> 节点,将真正的目录“/solr/data/album”替换掉原有数据。(视频应用步骤与此相同。)
三、 配置分布式应用(以下均在主服务器上配置)
1) 分别修改分布式分发脚本: scripts.conf
(/solr/album/bin 和 /solr/video/bin)
#触发外部命令所使用的用户
user=haiting
#本地机器名
solr_hostname=localhost
#本地SOLR开放的端口(及TOMCAT服务端口)
solr_port=9001
#分发脚本使用的RSYNC服务端口,业务端口要区分开,在本例中,album为19001,video为19002,客户端与服务端端口设置需一致,否则会导致SNAPPULLER过程失败。
rsyncd_port=19001
#索引文件路径
data_dir=/solr/data/album
#TOMCAT容器中SOLR服务名(默认不变)
webapp_name=solr
#主服务器IP(主与辅同配置)
master_host=192.168.0.46
#主服务器索引文件路径
master_data_dir=/solr/data/album
#主服务器状态过程日志存放目录
master_status_dir=/solr/status/album
2) 修改脚本所在默认路径
(通过修改scripts-util公用脚本实现)
l 找到该文件所在路径:/solr/album/bin和/solr/video/bin
l 第27行
confFile=${solr_root}/conf/scripts.conf
修改为:
confFile=/solr/bin/album/conf/scripts.conf
和
confFile=/solr/bin/video/conf/scripts.conf
注明:不进行此步骤会造成SOLR外部调用监听器执行会失败(/solr/)
3) 修改主配置文件solrconfig.xml
l 找到以下目录:/solr/album/conf和 /solr/video/conf
l 分别修改两个应用的 COMMIT监听器,使得SOLR接收到COMMIT请求时,自动调用外部命令snappuller
找到 postCommit 节点,配置后的节点如下所示:
<listener event="postCommit" class="solr.RunExecutableListener">
<str name="exe">/solr/video/bin/snapshooter</str>
<str name="dir">.</str>
<bool name="wait">true</bool>
<arr name="args"> <str>-d</str> <str>/solr/data/video</str> </arr>
<arr name="env"> <str>MYVAR=val1</str> </arr>
</listener>
注明:每一个应用对应的配置文件都需要配置,包括外部命令的目录.
四、 配置、执行分发脚本
1. 主服务器
1) 启动SOLR
2) 启用RSYNC
手工执行脚本:
/solr/video/bin/rsyncd-enable –v
说明:-v终端打印执行详细日志
3) 开启RSYNC
/solr/video/bin/rsyncd-start –v
2. 客户端
推荐使用SolrJ(目录位于/solr/src/solrj)
a) 将SOLR接收URL改为:http://192.168.0.36:9001/solr/video
(或http://192.168.0.36:9001/solr/album )
b) 执行发送命令,将数据推送至主服务器
3. 辅服务器
a) 配置清理脚本
l su haiting
l crontab –e
l 0 0 * * * /solr/album/bin/snapcleaner -D 7
l 0 0 * * * /solr/video/bin/snapcleaner -D 7
l Wq!
说明:系统每7天调用一次清理脚本,清理不用的快照
b) 启用快照
手动执行
/solr/video/bin/snappuller-enable -v
c) 获取并安装快照
l 配置cron
l su haiting
l crontab –e
l */5 * * * * /solr/video/bin/snappuller;/solr/video/bin/snapinstaller
l */5 * * * * /solr/album/bin/snappuller;/solr/album/bin/snapinstaller
l wq!
说明:系统每五分钟调用一次smappuller和snapinstaller,及每五分钟生效一次。
本文补充: 因SOLR的复制分发模式所需要的脚本没有考虑到 MULTICORE模块存在,所以在两种并行的情况下会造成快照安装失败,报 logMessage snapshot installed but Solr server has not open a new Searcher 错误。 具体修改方法: 在/solr/album/bin 和 /solr/video/bin 下修改commit文件,将第三页中的 curl_url=http://${solr_hostname}:${solr_port}/${webapp_name}/update 修改成 curl_url=http://${solr_hostname}:${solr_port}/${webapp_name}/album/update 保存即可。
转自http://blog.csdn.net/thundersssss/archive/2009/12/29/5099232.aspx转自:http://www.cnblogs.com/wycg1984/archive/2010/03/09/1681337
相关问答
更多-
分布式系统架构实战--简易版支付系统怎么部署?[2023-08-13]
一、前期准备 1、MySQL数据库的安装:MySQL-5.6.22,自行安装 2、Dubbo视频教程--基础篇--第03节--ZooKeeper注册中心安装 3、Dubbo视频教程--基础篇--第06节--Dubbo管理控制台的安装 4、Dubbo视频教程--基础篇--第10节--Dubbo监控中心的介绍与简易监控中心的安装 5、持续集成管理平台(SVN、Nexus、Maven、Hudson)的安装: Dubbo视频教程--基础篇--第11节至18节 6、Dubbo视频教程--高级篇--第21节--Acti ... -
分布式系统架构实战--简易版支付系统怎么部署?[2022-10-28]
一、前期准备 1、MySQL数据库的安装:MySQL-5.6.22,自行安装 2、Dubbo视频教程--基础篇--第03节--ZooKeeper注册中心安装 3、Dubbo视频教程--基础篇--第06节--Dubbo管理控制台的安装 4、Dubbo视频教程--基础篇--第10节--Dubbo监控中心的介绍与简易监控中心的安装 5、持续集成管理平台(SVN、Nexus、Maven、Hudson)的安装: Dubbo视频教程--基础篇--第11节至18节 6、Dubbo视频教程--高级篇--第21节--Acti ... -
redis如何分布式部署[2024-03-22]
redis 的持久化: 快照(snapshot):特定时间、特定命令、特定条件来触发,把某一时刻在内存中的数据全部写出到硬盘当中去。 快照的时间不是实时的,可能会有数据的丢失。 在宕机之后,会把全部dump文件中的数据读入到内存中,会I/O密集。 AOF(append only file):每一次更新都会记录日志。日志文件是在快照的基础上来写的。 (在AOF这里的“快照”跟上面的“快照”不是一个东西。) redis的 rdb 和 aof 持久化的区别: 参考:http://ptc.35.com/?p=275 ... -
redis如何分布式部署[2022-03-29]
redis 的持久化: 快照(snapshot):特定时间、特定命令、特定条件来触发,把某一时刻在内存中的数据全部写出到硬盘当中去。 快照的时间不是实时的,可能会有数据的丢失。 在宕机之后,会把全部dump文件中的数据读入到内存中,会I/O密集。 AOF(append only file):每一次更新都会记录日志。日志文件是在快照的基础上来写的。 (在AOF这里的“快照”跟上面的“快照”不是一个东西。) redis的 rdb 和 aof 持久化的区别: 参考:http://ptc.35.com/?p=275 ... -
分布式web应用集群,应用部署是怎么全部部署的[2023-08-17]
1)比方说我先在有5台服务器,想做一个集群,是不是意味着我要把应用程序在5台服务器上分别部署?如果这样的话,session能使先共享吗? 根据中间件不同部署方式也不同。tomcat下面就要分别部署了,weblogic支持分别部署,也支持统一部署(两种方式各有优缺点,推荐分别部署)。 中间件基本上都支持session共享复制,不过实现方式可能有点区别(有的是基于容器,有的是基于memcache等等)。可参考之前的问题(关于jboss的): -
请问谁有VC++开发实战1200例的第二卷PDF版[2022-07-14]
第二版的还没出,详细的可以查看www.,mingribook.com,这是出版社的网址,只能查到第一卷的,我也找呢,等吧,第二卷很强大,第一卷吃的再透些,共勉! -
《Tensorflow 实战Google深度学习框架第二版》电子版[2023-11-10]
那本书没看过,不过听名字是框架类的东西。。。不过这种框架类,如果讲软件架构的话,连大部分软件开发人都看不懂吧。如果是讲算法应用,应该不难啊,照着上面的做就行了。如果是讲算法实现原理,那你就别看了。大部分上过大学的都看不懂。。。数学的东西太多了 -
《Android 开发入门与实战》(第二版)修订版何时发售?[2022-05-21]
接到出版社消息,第二印已经上市开卖啦,现在从网店买的应该就是最新的了~(里面有惊喜) -
什么是服务器分布式部署?[2022-10-12]
1、什么是数据中心分布式部署 数据中心分布式部署,边缘数据中心是基础,是CDN的更下一层,服务对象是IDC及CDN需求的客户。对于流量大的客户,可多点分布,就近部署。 2、分布式部署的好处 A:在全国没有任何一个数据中心可以覆盖全国的每个角落,数据中心集中在一个点不能更好的服务全国各区域。分布式部署相当于在欧洲很多个国家之间的互联网关系。二三线城市就近布点,三级城市网络品质提升。针对网游、网络视频、网络下载等全国分布节点需求较高的客户,选择分布式节点托管在降低成本的同时还更好的保障了二、三级城市业务的网络运 ... -
在Solr 4.7中添加了一个类MiniSolrCloudCluster,它实际上在本地“部署”(如果你只想要ram或在temp目录上)一个完整的solr集群,包括zookeeper,shards和所有东西,供你的测试使用。 你可以在这里找到jira: https : //issues.apache.org/jira/browse/SOLR-5865 我已经成功地使用它来对solr分布式组件进行测试,以Solr测试为例,如下所示: private static MiniSolrCloudCluste ...