Solr 6.5.1 SolrCloud windows使用zk安装集群
来源:互联网 发布:python 自动发送邮件 编辑:程序博客网 时间:2024/06/06 02:25
SolrCloud是基于Solr和Zookeeper的分布式搜索方案,也是Solr5 的核心组件之一,它的主要思想是使用Zookeeper作为集群的配置信息中心。它有几个特色功能:
1)集中式的配置信息
2)自动容错
3)近实时搜索
4)查询时自动负载均衡 。
基本可以用下面这幅图来概述,这是一个拥有4个Solr节点的集群,索引分布在三个Shard里面,每个Shard包含三个Solr节点,一个是Leader节点,另外两个是Replica节点,此外集群中有一个负责维护集群状态信息的Overseer节点,它是一个总控制器。集群的所有状态信息都放在Zookeeper集群中统一维护。从图中还可以看到,任何一个节点都可以接收索引更新的请求,然后再将这个请求转发到文档所应该属于的那个Shard的Leader节点,Leader节点更新结束完成,最后将版本号和文档转发给同属于一个Shard的replicas节点。 具体节点信息我们在后续进入Zookeeper管理节点查看。
黑色是主节点
使用工具 zookeeper-3.5.1-alpha.tar.gz
一、创建目录结构如下
二、修改 zookeeper
1、复制 solrCloud\service1\zookeeper-3.5.1-alpha\conf 下的zoo_sample.cfg 重命名为:zoo.cfg 编辑内容如下
initLimit=5syncLimit=2clientPort=2181tickTime=2000dataDir= D:\\MayBe\\solrCloud\\service1\\datadataLogDir= D:\\MayBe\\solrCloud\\service1\\datalogserver.1=localhost:2888:3888server.2=localhost:2889:3889server.3=localhost:2890:3890
配置里不要有空格
initLimit=集群中的follower服务器(F)与leader服务器(L)之间初始连接时能容忍的最多心跳数(tickTime的数量)。
syncLimit= 集群中的follower服务器与leader服务器之间请求和应答之间能容忍的最多心跳数。
clientPort= 端口
tickTime= Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔。
dataDir= 数据目录地址
dataLogDir= 数据日志地址
server.1=集群信息(服务器编号,服务器地址,LF通信端口,选举端口)
每个service都重复此操作,不同的service设置不同的clientPort和对应的dataDir,dataLogDir
2、 在data目录新建myid文件(该文件没有后缀文件类型),并写入值(文件中写入一个数字,每台zk不能重复,代表zk的唯一性,在zoo.cfg 中需要配置到)
3、 启动zk分别进入 D:\MayBe\solrcloud\service1\zookeeper-3.5.1-alpha\bin,D:\MayBe\solrcloud\service2\zookeeper-3.5.1-alpha\bin,D:\MayBe\solrcloud\service3\zookeeper-3.5.1-alpha\bin 双击 zkServer.cmd启动,启动过程中由于集群未完全正常启动,会报连接错误,可以暂时不管。 zkServer.sh status(查看状态)
4、安装tomcat:从之前的复制过来,tomcat1-4都要复制
5、编辑每个tomcat中solr项目的web.xml文件, 找到env-entry节点,编辑为以下内容
<env-entry> <env-entry-name>solr/home</env-entry-name> <env-entry-value>D:\MayBe\solrCloud\solr_home1</env-entry-value> <env-entry-type>java.lang.String</env-entry-type></env-entry>
(solr的用户目录,用于存储索引等,每个tomcat需要不一样的路径:home1-4)
6、添加solr_home 内容
7、修改tomcat的\conf下的server.xml
tomcat1
<Server port="8005" shutdown="SHUTDOWN"><Connector port="8081" protocol="HTTP/1.1"<Connector port="8009" protocol="AJP/1.3"
tomcat2
<Server port="8006" shutdown="SHUTDOWN"><Connector port="8082" protocol="HTTP/1.1"<Connector port="8010" protocol="AJP/1.3"
tomcat3
<Server port="8007" shutdown="SHUTDOWN"><Connector port="8083" protocol="HTTP/1.1"<Connector port="8011" protocol="AJP/1.3"
tomcat4
<Server port="8008" shutdown="SHUTDOWN"><Connector port="8084" protocol="HTTP/1.1"<Connector port="8012" protocol="AJP/1.3"
8、修改solr.xml
修改成你当前的tomcat的运行端口,每个solr_home对应的tomcat端口不一样,当然是在伪集群的情况下,如果你是多台机器的话请忽略
修改solr_home1 下的solr.xml
solr_home1
<int name="hostPort">${jetty.port:8081}</int>
solr_home2
<int name="hostPort">${jetty.port:8082}</int>
solr_home3
<int name="hostPort">${jetty.port:8083}</int>
solr_home4
<int name="hostPort">${jetty.port:8084}</int>
9、新建配置文件目录(用于zk的集群配置管理)
我是直接在solr_home1中新建一个collection1文件夹,如下:
..\solr_home1\collection1(此文件夹只需要建一个,不需要在每个机器上建,他会通过zk分发到各个机器)
将solr原包中../solr/server/solr/configsets/basic_configs/* 拷贝到 ../solr_home1/collection1/ 下。
10、修改tomcat的文件catalina.bat文件
一台添加:
set JAVA_OPTS=-Dsolr.solr.home=D:/MayBe/solrcloud/solr_home1 -Dbootstrap_confdir=D:/MayBe/solrcloud/solr_home1/collection1/conf -
Dcollection.configName=myconf -DnumShards=3 -DzkHost=localhost:2181,localhost:2182,localhost:2183
DnumShards=3 分片
其它添加: set JAVA_OPTS=-Dsolr.solr.home=D:/MayBe/solrcloud/solr_home2 -DzkHost=localhost:2181,localhost:2182,localhost:2183
solr_home位置修改成对应的
11、 依次启动tomcat
12、测试访问集群
http://localhost:8081/solr/index.html
13、创建一个solr的collection
http://localhost:8081/solr/admin/collections?action=CREATE&name=core1&numShards=3&replicationFactor=3&maxShardsPerNode=3&collection.configName=myconf
numShards=分片数
replicationFactor=复制分片个数
maxShardsPerNode= 最大分片数
14、查看solrCloud
15、solrj 进行solrCloud 添加索引
package com.solr.solrCloud;import org.apache.solr.client.solrj.impl.CloudSolrClient;public class CloudSolrServer { public static CloudSolrClient server = null; public static CloudSolrClient getServer() { final String zkHost = "localhost:2181,localhost:2182,localhost:2183"; final String defaultCollection = "core1"; final int zkClientTimeout = 20000;//zk客户端超时时间 final int zkConnectTimeout = 1000;//zk连接超时时间 server = new CloudSolrClient(zkHost); System.out.println("The Cloud SolrServer Instance has benn created!"); server.setDefaultCollection(defaultCollection); server.setZkClientTimeout(zkClientTimeout); server.setZkConnectTimeout(zkConnectTimeout); server.connect(); return server; } public static void main(String[] args) { }}
package com.solr.solrCloud;import java.util.ArrayList;import java.util.Collection;import org.apache.solr.client.solrj.impl.CloudSolrClient;import org.apache.solr.common.SolrInputDocument;public class CloudSolrTest { public static void addIndex() throws Exception { CloudSolrClient server = CloudSolrServer.getServer(); SolrInputDocument doc1 = new SolrInputDocument(); doc1.addField("id", 1); doc1.addField("name_s", "中国人"); SolrInputDocument doc2 = new SolrInputDocument(); doc2.addField("id", 2); doc2.addField("name_s", "美国人"); SolrInputDocument doc3 = new SolrInputDocument(); doc3.addField("id", 3); doc3.addField("name_s", "中大国人"); Collection<SolrInputDocument> coll = new ArrayList<SolrInputDocument>(); coll.add(doc1); coll.add(doc2); coll.add(doc3); server.add(coll); server.commit(); } public static void main(String[] args) throws Exception { addIndex(); }}
其他删改查都一样,就server连接方式不同,这里就不一一列举了
15、删除core
http://localhost:8081/solr/admin/collections?action=DELETE&name=core1
- Solr 6.5.1 SolrCloud windows使用zk安装集群
- solr安装,zookeeper安装,solrCloud和zookeeper实现solr集群
- solr安装-tomcat+solrCloud构建稳健solr集群
- solr安装-tomcat+solrCloud构建稳健solr集群
- solr安装-tomcat+solrCloud构建稳健solr集群
- Solr的安装与配置--集群版SolrCloud
- SolrCloud 分布式集群安装部署(solr+ zookeeper +tomcat)
- Solr之SolrCloud集群搭建
- Solr之SolrCloud集群测试
- Solr(三)——solr集群SolrCloud
- solrcloud集群安装
- 分布式搜索之搭建Solrcloud(Solr集群)
- 分布式搜索之搭建Solrcloud(Solr集群)
- 分布式搜索之搭建Solrcloud(Solr集群)
- solr学习(6.1)solrcloud集群的搭建
- 分布式搜索之搭建Solrcloud(Solr集群)
- 初识Solr(二):Solr集群(SolrCloud)搭建
- solrCloud分布式集群安装配置
- 正则表达式里的参数 g、m、i 的一些作用
- 微信小程序26
- LR连续特征离散化
- mac安装scrapy并创建项目
- 微信小程序27
- Solr 6.5.1 SolrCloud windows使用zk安装集群
- Python自然语言分析(第四期):第1课书面作业
- 微信小程序28
- python 多进程并发与多线程并发总结
- wdcp如何修改phpmyadmin导入 最大限制2048 KB
- 嵌入式linux 字节对齐 导致输出Alignment trap
- LeetCode Binary Tree Level Order Traversal
- 微信小程序30
- Liferay主题之获取用户角色