分布式搜索之搭建Solrcloud(Solr集群)
Solrcloud介绍:
SolrCloud(solr集群)是Solr提供的分布式搜索方案。
当你需要大规模,容错,分布式索引和检索能力时使用SolrCloud。
当索引量很大,搜索请求并发很高时,同样需要使用SolrCloud来满足这些需求。
不过当一个系统的索引数据量少的时候是没有必要使用SolrCloud的。
SolrCloud是基于Solr和Zookeeper的分布式搜索方案。它的主要思想是使用Zookeeper作为SolrCloud集群的配置信息中心,统一管理solrcloud的配置,比如solrconfig.xml和schema.xml。
Solrcloud特点功能:
1)集中式的配置信息
2)自动容错
3)近实时搜索
4)查询时自动负载均衡
Solrcloud的结构:
solrcloud为了降低单机的处理压力,需要由多台服务器共同来完成索引和搜索任务。实现的思路是将索引数据进行Shard分片,每个分片由多台服务器共同完成,当一个索引或搜索请求过来时会分别从不同的Shard的服务器中操作索引。solrcloud是基于solr和zookeeper部署,zookeeper是一个集群管理软件,solrcloud需要由多台solr服务器组成,然后由zookeeper来进行协调管理。
由于solrcloud一般都是解决大数据量、大并发的搜索服务,所以搭建solrcloud之前,首先需要搭建zookeeper注册中心集群。
1)、搭建zookeeper集群步骤:需要三台zookeeper、分别是zk1、zk2、zk3,对应的端口分别为2281、2282、2283。
第一步:安装jdk环境,因为zookeeper是使用Java语言编写的;
第二步:准备zookeeper-3.4.6.tar.gz压缩包,解压并修改目录名称为zk1
第三步:进入zk1/conf目录,将zoo_sample.cfg文件名称改为zoo.cfg
第四步:修改zoo.cfg文件,配置集群信息(俩个截图信息都是配置在zoo.cfg文件中)
第五步:在dataDir(对应zoo.cfg配置文件中的目录结构)目录下创建myid文件,文件内容为1,对应server.1中的1。
第六步:拷贝zk1,复制两个目录zk2、zk3。并修改zoo.cfg和myid两个文件。
第七步:编写俩个脚本文件,分别启动zookeeper集群和查看集群中各个服务的状态。
2)、搭建solrcloud集群步骤:
第一步:复制4个单机版solr服务对应的tomcat,并分别修改端口为:8280、8380、8480、8580。
第二步:复制4个solrhome,分别为solrhome8280、solrhome8380、solrhome8480、solrhome8580。一个solr实例对应一个solrhome。
第三步:修改每个solr服务对应的Tomcat容器中solr项目的web.xml文件中的内容(目录结构为/usr/local/solrcloud/tomcat8280/webapps/solr/WEB-INF)
第四步:修改每个solrhome下的solr.xml,指定对应solr服务的tomcat的ip和端口。
第五步:设置tomcat的启动参数,在每个tomcat目录下的bin/catalina.sh,添加以下内容:
第六步:将solr配置文件上传到zookeeper中,进行统一管理,进入到/root/soft/solr-4.10.3/example/scripts/cloud-scripts目录中执行zkcli.sh命令:
./zkcli.sh -zkhost 192.168.136.135:2281,192.168.136.135:2282,192.168.136.135:2283 -cmd upconfig -confdir /usr/local/solrcloud/solrhome8280/collection1/conf -confname myconf(每个ip地址之间用逗号分隔)
第七步:编写脚本文件启动所有的solr服务
第八步:访问部署的solr集群中任意的端口服务
第九步:solrcloud搭建完毕。
- Mac上提升python运算速度-PyPy初体验
- python处理json数据(复杂的json转化成嵌套字典并处理)
- Pointer-network理论及tensorflow实战
- python3 log文件处理获取某天需要的数据
- 实战深度强化学习DQN-理论和实践
- Python 工匠:编写条件分支代码的技巧
- python3 下 Zabbix监控调用graph.get并且下载监控图
- 用R语言复盘美国总统大选结果~
- 最新Apache Spark平台的NLP库,助你轻松搞定自然语言处理任务
- 使用Seq2Seq+attention实现简单的Chatbot
- R语言可视化——用ggplot构造期待已久的雷达图
- 【实战】最新Deep Learning with Keras图书加代码,教你从零开发一个复杂深度学习模型(附下载)
- 基于zabbix 自动抓取每天监控数据!/usr/local/python/bin/python3.5
- 大过年的,一起来用Seq2Seq来作对联吧!
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- linux进程监控与自动重启的简单实现方法
- Linux 解决Deepin无法在root用户启动Google Chrome浏览器的问题
- 在Linux上安装和使用Docker的方法
- centOS7 NET模式设置静态Ip的方法步骤
- CentOS搭建PHP服务器环境简明教程
- CentOS7.2安装MySql5.7并开启远程连接授权的教程
- linux查看防火墙状态与开启关闭命令详解
- linux防火墙iptables规则的查看、添加、删除和修改方法总结
- Linux expect实现自动登录脚本实例代码
- scRNA-seq marker identification(一)
- 关于linux权限s权限和t权限详解
- centOS7 桥接模式设置静态Ip的方法步骤
- linux环境下卸载oracle 11g的过程
- Seurat包基本分析实战—文献图表复现
- ubuntu配置tftp服务的步骤小结