把搭建solrCloud的笔记写在这,方便我,也能方便你。
我是在windows上搭建的,但是zk是linux上。我一共使用了三个solrCloud的server,共两个shard,每个server都部署在一个单独的tomcat上。我本地的host是:172.16.140.55,我的linux的host是172.16.9.2。我的假设是已经会搭建单机的solr,所以关于搭建单机的solr的步骤我也不会重复。我使用的solr的版本是4.9.0,zk的版本是3.4.6.
1、先搭建zk,这里不再重复记录,不会的看看别人的博客,或者是官方文档。我搭建后的zk的集群只有一个节点,是个单机模式的,他的端口是52181,所以访问zk是 172.16.9.2:52181
2、配置windows的classpath,这个地方是供以后的使用zk客户端上传配置文件用的,在windows上如果不配置的话会报一个找不到ZkClient类的异常,找到之前在创建单机的solr的Tomcat/webapps/solr/WEB-INF/lib的目录,我这里是E:\tomcat7\webapps\solr4\WEB-INF\lib\,在这后面添加\*,也就是E:\tomcat7\webapps\solr4\WEB-INF\lib\*,然后将这个字符串放在CLASSPATH后面。
3、上传配置文件到zk 执行命令为: java org.apache.solr.cloud.ZkCLI -cmd upconfig -zkhost 172.16.9.2:52181 -confdir E:/solrCloud/solrHome-2/collection1/conf -confname conf_prod 解释一下他的意思:java java org.apache.solr.cloud.ZkCLI表示执行一个main方法,这个main方法在.ZkCLI类中(所以在第2步中配置classpath),-cmd upconfig表示要执行的操作是配置文件上传;-confdir E:/solrCloud/solrHome-2/collection1/conf 表示要上传的配置文件的目录,他会将这个目录下面的所有的文件都上传到zk上,具体要看你的配置文件的位置,我这里只是一个距离(看完步骤三后再上传);-confname conf_prod 表示上传到zk之后所在的zk的节点的名字,可以随便起名。
这里需要注意的是并不是所有的配置文件都要上传的,即E:/solrCloud/solrHome-2/collection1/conf 的配置文件并不是全都需要被solrCloud使用的,我只保留了下面的文件(这个是我一个一个实验的,期初我只保留了solrconfig.xml和schema.xml但是在启动的时候不停地报错,直到我最终保留如下的文件才没有报错)
1、lang文件夹下面的所有的配置
2、currency.xml
3、elevate.xml
4、mapping-FoldToASCII.txt
5、mapping-ISOLatin1Accent.txt
6、protwords.txt
7、schema.xml
8、scripts.conf
9、solrconfig.xml
10、spelling.txt
11、stopwords.txt
12、synonyms.txt
这里的collection1是solr自带的,我还没有改动(后面我会改变collection的名字为prod),上传配置文件后,可以在zk客户端执行ls /configs,可以发现多了个node叫做conf_prod,它里面包含所有的配置文件。
4、关联要创建的集合和配置文件。这里假设我们要建立的索引是商品,用prod表示,那么我们创建的集合(collection)就是prod,(所以上面我才给配置文件起名字叫做conf_prod)。执行的命令是: java org.apache.solr.cloud.ZkCLI -cmd linkconfig -collection prod -confname conf_prod -zkhost 172.16.9.2:52181。解释一下:java org.apache.solr.cloud.ZkCLI还是执行一个main方法,-cmd linkconf表示执行的命令是关联配置文件,-collection prod表示要关联的集合是prod这个集合;-confname conf_prod表示要关联的配置文件是conf_prod -zkhost 172.16.9.2:52181表示zk的位置。这样这个命令执行之后就把prod这个集合和他的配置文件都关联了。当然我们现在还没有创建prod这个集合(collection)。
在执行完这个命令之后,可以到zk上发现又多了一个节点,叫做collections,它里面就有一个prod的节点,调用get /collections/prod后展示为:
get /collections/prod {"configName":"conf_prod"} cZxid = 0x5b9 ctime = Sun Dec 04 13:37:45 CST 2016 mZxid = 0x5b9 mtime = Sun Dec 04 13:37:45 CST 2016(后面还有,我们有全部复制)
可以发现配置文件为 “conf_prod”
5、修改solr.xml,这里有一个很重要的属性要修改,<int name="hostPort">${jetty.port:8081}</int>,将jetty.port后面的8983改为你实际的tomcat的端口号,如果不改不会报错,但是整个集群无法使用,除非你的tomcat就是运行在
8983端口上,也可以直接将${jetty.port:8983}替换为8081。
执行完这些最好启动单机版的solr试试,也就是启动tomcat,这样可以检查有没有其他的配置错误。如果没有报错,继续。
还要添加一个zk的配置<str name="zkHost">172.16.9.2:52181</str>,这样就不用在启动参数中添加了。最终我的solr.xml的配置为:
<solr> <solrcloud> <str name="host">${host:}</str> <int name="hostPort">8081</int> <str name="hostContext">${hostContext:solr}</str> <int name="zkClientTimeout">${zkClientTimeout:30000}</int> <bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool> <str name="zkHost">172.16.9.2:52181</str> </solrcloud> <shardHandlerFactory name="shardHandlerFactory" class="HttpShardHandlerFactory"> <int name="socketTimeout">${socketTimeout:0}</int> <int name="connTimeout">${connTimeout:0}</int> </shardHandlerFactory> </solr>
6、将solr自带的集合collection1改名为prod,将其配置文件conf下的所有东西都删了(戴着也可以,反正用的配置文件是zk上的)。修改tomcat的catalina.bat,在setlocal的下一行添加 set JAVA_OPTS=-server -Xmx256m -Xms256m -DnumShards=2 (记住等号后面没有双引号,我开始不停的失败,后来把双引号去了就好了,使用的堆的大小随便你定,最后的参数表示分片的个数,随便定) 他表示我要创建的collection的分片有2个,然后启动startup.bat,在启动后的日志里就会有当前的节点的状态,最重要的有:
1、base_url,即当前节点的访问url路径
2、collection 及当前的节点所属的collection
3、shard:当前节点所属于的分片。
4、numShard:分片的个数
在启动第一个tomcat之后,可以到zk中查看多了一个节点,叫做clusterstate.json,表示集群的状态,在配置两个分片的情况下,调用 get /clusterstate.json 他是这样显示的:
{"prod":{ "shards":{ "shard1":{ "range":"80000000-ffffffff", "state":"active", "replicas":{"core_node1":{ "state":"active", "base_url":"http://172.16.140.55:8081/solr", "core":"prod", "node_name":"172.16.140.55:8081_solr", "leader":"true"}}}, "shard2":{ "range":"0-7fffffff", "state":"active", "replicas":{}} }, "maxShardsPerNode":"1", "router":{"name":"compositeId"}, "replicationFactor":"1", "autoCreated":"true"} }
可以发现如果指定了分区的个数,就会生成指定个数的shard,因为已经启动了一个tomcat,所以第一个shard是有值的,而第二个shard是没有值的。
7、启动第二个tomcat,(在启动之前先修改端口,将shutdown的端口、http、ajp的的端口都改了,不然启动报错,还有别忘了改你的solr的web.xml中的solrHome,还有别忘了改你的collection1的名字,改为prod,再就是catalina.xml中的-DnumShard要删了,因为在zk中已经有这个分片的值了,还有比忘了修改solr.xml中的host和zk的配置,上面已经说了),然后启动第二个tomcat。启动之后的clusterstate.json为:
{"prod": {"shards": {"shard1":{ "range":"80000000-ffffffff", "state":"active", "replicas":{"core_node1":{ "state":"active", "base_url":"http://172.16.140.55:8081/solr", "core":"prod", "node_name":"172.16.140.55:8081_solr", "leader":"true"}}}, "shard2":{ "range":"0-7fffffff", "state":"active", "replicas":{"core_node2":{ "state":"active", "base_url":"http://172.16.140.55:8082/solr", "core":"prod", "node_name":"172.16.140.55:8082_solr", "leader":"true"}}} }, "maxShardsPerNode":"1", "router":{"name":"compositeId"}, "replicationFactor":"1", "autoCreated":"true" } }
可以发现shard2已经有值了,因为我们启动了第二个server。这个时候可以去solr的管理页面的cloud去看看,已经有两个shard两个server,并且都是leader。
7、启动第三个tomcat,需要注意的问题和6中的一致。启动之后查看zk中的clusterstate.json的显示为
{"prod":{ "shards":{ "shard1":{ "range":"80000000-ffffffff", "state":"active", "replicas":{ "core_node1":{ "state":"active", "base_url":"http://172.16.140.55:8081/solr", "core":"prod", "node_name":"172.16.140.55:8081_solr", "leader":"true"}, "core_node3":{ "state":"active", "base_url":"http://172.16.140.55:8083/solr", "core":"prod", "node_name":"172.16.140.55:8083_solr"}}}, "shard2":{ "range":"0-7fffffff", "state":"active", "replicas":{"core_node2":{ "state":"active", "base_url":"http://172.16.140.55:8082/solr", "core":"prod", "node_name":"172.16.140.55:8082_solr", "leader":"true"}}}}, "maxShardsPerNode":"1", "router":{"name":"compositeId"}, "replicationFactor":"1", "autoCreated":"true"}}
在shard1的replicas中多了一个node,也就是刚才启动的server3.这个时候再次看一下solr的cloud的界面,就会有三个server,其中两主一从,他的从的排序也是按照先给第一个shard,然后再给第二个shard,也就是按照轮训的原则来的。solrCloud这样就算搭建完了,我们搭建了一个名字叫做prod的集群,有两个分区。
相关推荐
基于SSM框架+mysql搭建的云笔记系统(仿有道云笔记)源码.zip基于SSM框架+mysql搭建的云笔记系统(仿有道云笔记)源码.zip基于SSM框架+mysql搭建的云笔记系统(仿有道云笔记)源码.zip基于SSM框架+mysql搭建的云笔记...
非常详细的linux上的hadoop集群搭建文档,可供参考,希望大家能够从中获益
基于SSM框架+mysql搭建的云笔记系统(仿有道云笔记)源码+项目说明.zip 基于SSM框架+mysql搭建的云笔记系统(仿有道云笔记)源码+项目说明.zip 基于SSM框架+mysql搭建的云笔记系统(仿有道云笔记)源码+项目说明.zip...
#ssm 搭建笔记.md
Haproxy高可用环境搭建笔记. x
为知笔记开源项目程序源码,实现云笔记功能需要自己搭建服务器 为知笔记开源项目程序源码,实现云笔记功能需要自己搭建服务器 为知笔记开源项目程序源码,实现云笔记功能需要自己搭建服务器 为知笔记开源项目程序...
### MyEclipse 搭建SSH框架笔记 #### 一、前言 SSH框架是指Struts、Spring和Hibernate这三个开源框架的集成应用。利用MyEclipse自带工具搭建SSH框架能够大大提高开发效率,使开发者能够专注于业务逻辑的实现,而...
Apache Kylin 环境搭建笔记 Apache Kylin 是一个基于分布式架构的企业级数据分析平台,由 Apache 软件基金会开发和维护。Kylin 环境搭建是一个复杂的过程,需要逐步配置和测试。本文将指导读者从头开始搭建 Apache ...
"Obsidian+picGo+Lsky Pro搭建自己的私人笔记图床" Obsidian+picGo+Lsky Pro搭建自己的私人笔记图床是通过使用Lsky Pro容器化部署PicGo图床,Obsidian作为笔记客户端,实现私人笔记图床的解决方案。 知识点1:NAS...
Intel Media SDK 环境搭建笔记 Intel Media SDK 环境搭建笔记为客户端搭建 Intel Media SDK 环境在 VS2015 中的详细步骤,包括环境配置、软件下载、源码解压缩、库文件编译和错误解决等。 环境配置 本机环境为 ...
本文将详细讲解如何搭建SVN服务器,并基于提供的"svn搭建笔记.zip"资源进行步骤指导。 首先,我们需要了解SVN的基本概念。SVN仓库是存储项目文件和版本历史的地方,客户端则用来与仓库交互,查看、更新、提交代码。...
【Windows Server 2008 R2服务器搭建】 在搭建Windows Server 2008 R2服务器的过程中,有几个关键步骤是必须遵循的。首先,物理准备包括摆放主机,确保其稳定,连接必要的外设如键盘、鼠标和电源,并且合理整理电源...
hadoop搭建集群笔记.虚拟机搭建hadoop集群
包含详细的hadoop搭建和环境笔记 有linux 有hdfs yarn service
SVN自动同步备份环境搭建笔记.pdf
【大数据相关搭建笔记.zip】这个压缩包集合了多个关于大数据平台搭建的重要文档,涉及的关键技术包括Hadoop(含Hive、HBase以及HA)、Spark、Sqoop、Flume以及Ambari。这些组件是大数据处理生态系统中的核心部分,...
SSM搭建笔记,新手需要的,无封页
云笔记小程序是一种基于微信小程序平台的应用,它提供了新建、查询和统计笔记的功能,旨在帮助开发者,特别是初学者,快速搭建自己的简易笔记应用。通过掌握这款源码,你可以深入了解小程序的开发流程,学习如何实现...
maven项目搭建 依赖、继承、聚合关系