`
suichangkele
  • 浏览: 200422 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

solrCloud搭建笔记

    博客分类:
  • solr
阅读更多

把搭建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搭建的云笔记系统(仿有道云笔记)源码.zip基于SSM框架+mysql搭建的云笔记...

    Hadoop集群搭建笔记

    非常详细的linux上的hadoop集群搭建文档,可供参考,希望大家能够从中获益

    基于SSM框架+mysql搭建的云笔记系统(仿有道云笔记)源码+项目说明.zip

    基于SSM框架+mysql搭建的云笔记系统(仿有道云笔记)源码+项目说明.zip 基于SSM框架+mysql搭建的云笔记系统(仿有道云笔记)源码+项目说明.zip 基于SSM框架+mysql搭建的云笔记系统(仿有道云笔记)源码+项目说明.zip...

    #ssm 搭建笔记.md

    #ssm 搭建笔记.md

    Haproxy高可用环境搭建笔记

    Haproxy高可用环境搭建笔记. x

    为知笔记开源项目程序源码,实现云笔记功能需要自己搭建服务器

    为知笔记开源项目程序源码,实现云笔记功能需要自己搭建服务器 为知笔记开源项目程序源码,实现云笔记功能需要自己搭建服务器 为知笔记开源项目程序源码,实现云笔记功能需要自己搭建服务器 为知笔记开源项目程序...

    MyEclipse 搭建SSH框架 笔记

    ### MyEclipse 搭建SSH框架笔记 #### 一、前言 SSH框架是指Struts、Spring和Hibernate这三个开源框架的集成应用。利用MyEclipse自带工具搭建SSH框架能够大大提高开发效率,使开发者能够专注于业务逻辑的实现,而...

    apache kylin 搭建笔记

    Apache Kylin 环境搭建笔记 Apache Kylin 是一个基于分布式架构的企业级数据分析平台,由 Apache 软件基金会开发和维护。Kylin 环境搭建是一个复杂的过程,需要逐步配置和测试。本文将指导读者从头开始搭建 Apache ...

    Obsidian+picGo+Lsky Pro搭建自己的私人笔记图床

    "Obsidian+picGo+Lsky Pro搭建自己的私人笔记图床" Obsidian+picGo+Lsky Pro搭建自己的私人笔记图床是通过使用Lsky Pro容器化部署PicGo图床,Obsidian作为笔记客户端,实现私人笔记图床的解决方案。 知识点1:NAS...

    Intel Media SDK 环境搭建笔记

    Intel Media SDK 环境搭建笔记 Intel Media SDK 环境搭建笔记为客户端搭建 Intel Media SDK 环境在 VS2015 中的详细步骤,包括环境配置、软件下载、源码解压缩、库文件编译和错误解决等。 环境配置 本机环境为 ...

    svn搭建笔记.zip

    本文将详细讲解如何搭建SVN服务器,并基于提供的"svn搭建笔记.zip"资源进行步骤指导。 首先,我们需要了解SVN的基本概念。SVN仓库是存储项目文件和版本历史的地方,客户端则用来与仓库交互,查看、更新、提交代码。...

    Windows-Server 2008 R2服务器搭建笔记1

    【Windows Server 2008 R2服务器搭建】 在搭建Windows Server 2008 R2服务器的过程中,有几个关键步骤是必须遵循的。首先,物理准备包括摆放主机,确保其稳定,连接必要的外设如键盘、鼠标和电源,并且合理整理电源...

    hadoop搭建集群笔记

    hadoop搭建集群笔记.虚拟机搭建hadoop集群

    大数据hadoop环境搭建学习笔记01

    包含详细的hadoop搭建和环境笔记 有linux 有hdfs yarn service

    SVN自动同步备份环境搭建笔记.pdf

    SVN自动同步备份环境搭建笔记.pdf

    大数据相关搭建笔记.zip

    【大数据相关搭建笔记.zip】这个压缩包集合了多个关于大数据平台搭建的重要文档,涉及的关键技术包括Hadoop(含Hive、HBase以及HA)、Spark、Sqoop、Flume以及Ambari。这些组件是大数据处理生态系统中的核心部分,...

    SSM搭建笔记,新手需要的,无封页

    SSM搭建笔记,新手需要的,无封页

    云笔记小程序源码(全套).zip

    云笔记小程序是一种基于微信小程序平台的应用,它提供了新建、查询和统计笔记的功能,旨在帮助开发者,特别是初学者,快速搭建自己的简易笔记应用。通过掌握这款源码,你可以深入了解小程序的开发流程,学习如何实现...

    maven项目搭建笔记

    maven项目搭建 依赖、继承、聚合关系

Global site tag (gtag.js) - Google Analytics