solr5.3伪分布式集群的搭建

来源:互联网 发布:中世纪2优化9挪威 编辑:程序博客网 时间:2024/06/11 18:46

solr5.3伪分布式集群的搭建


solr4.x的版本网上已经有很多例子,不过5.3伪分布式集群的搭建还是略有不同,这里主要记录一下5.3版本伪分布式的搭建
solr的配置文件的管理是通过zookeeper集群进行管理的,而且solr也对zk进行了api的封装,主要是org.apache.solr.cloud.ZkCLI类提供了配置文件的上传,闲话少说,先进行zk伪分布式集群的搭建

zk伪分布式搭建

  • 创建data目录用于存放zk集群的数据
  • 创建伪分布式集群的配置文件
  • 分别启动各个节点
  • 查看集群的状态

为了充分体现zk的选举机制,我们选择使用奇数个节点进行,在此处选择三个节点,端口选择为
server.1=localhost:2888:3888 对外提供服务的端口为2181
server.2=localhost:2889:3889 对外提供服务的端口为2182
server.3=localhost:2890:3890 对外提供服务的端口为2183
整个配置文件类似
zk1.cfg
tickTime指的是心跳包的发送时间,每隔tickTime就会发送一次心跳包检测集群的状态
initLimit指的是集群中leader和follower在初始化的时候所能承受的最大心跳数
sysncLimit指的是集群中leader和follower之间请求和应答之间能承受的最大心跳数
这里最大心跳数就是tickTime的数量
dataDir指定为创建的数据文件夹
zk2.cfg和zk3.cfg与zk1.cfg类似,唯一不同就是指定clientPort和dataDir即可
在zk1的dataDir中需要放置一个myid的文件,文件内容为1
echo 1 > myid
myid相当于一个身份认证的内容,需要用来表示出集群中的本节点的身份,如果缺失会导致服务无法正常运行的问题,同理zk2和zk3的myid依次为2和3
然后依次启动三个节点
/opt/zookeeper/bin/zkServer.sh start /opt/zookeeper/conf/zk1.cfg
这里两个参数,第一个为功能性参数,start stop status
第二个参数指定配置文件所在路径
我们可以通过status查看启动状态
zk状态
到这里zk伪分布式就已经配置完成

solr配置

  • solrhome配置
  • webapp配置
  • jar包拷贝
  • 关联solr_home和tomcat
  • 关联tomcat和zookeeper

solrhome配置

由于选择solr集群是选择三个节点,所以需要创建三个solr_home用于存放data,solr默认使用的servlet引擎是jetty,由于我对jetty没有对tomcat那么熟,所以这里使用的是tomcat作为默认的运行容器
需要从tomcat的官网下载tar.gz版,解压,并复制两份以便提供三个节点
,目录结构如图所示
solr目录
其中solr_home内容为solr-5.3.1/server/solr中的内容
server/solr
solr_home_1
solr_home
这里面有些是我已经创建的节点内容

下面是tomcat的配置
我们需要从solr的解压文件中拷贝一个solr-webapp的站点,放置到tomcat的webapps下
具体路径在我这里为:/opt/solr-5.3.1/server/solr-webapp/webapp,名字改成solr,由于后面有些设置依赖于此处应用的名字,虽然改成其他的也能运行,但后面有些点击会出现异常,需要通过绝对路径访问,不易操作,所以在这建议使用solr作为应用的名字

jar包配置

拷贝/solr-5.3.1/server/lib/ext中的全部jar包到tomcat的webapps下solr应用的WEB-INF中的lib中
在我的机子上的路径为:
/opt/solrCloud/tomcat_server_1/webapps/solr/WEB-INF/lib
同时依赖于log4j的配置,同样拷贝server下的resources下的log4j.properties到WEB-INF下
在我的机子上的路径为:
/opt/solr-5.3.1/server/resources/log4j.properties

关联tomcat和solr_home

这里关联solr_home主要是在tomcat中指定solr_home,具体为修改tomcat_server_1/webapps/solr/WEB-INF/web.xml文件
web.xml
由于在一台机子上启动三个tomcat,所以需要进行端口绑定的修改,具体为修改tomcat下的conf目录下的server.xml文件Tomcat Admin Port、Http/1.1Port、AJP/1.3Port
端口为:

tomcat_name admin port http/1.1 port AJP/1.3 port tomcat_server_1 8005 8080 8009 tomcat_server_2 8015 8090 8019 tomcat_server_3 8025 8100 8029

此处给出tomcat_server_2的配置截图
admin
http/1.1
AJP/1.3

关联tomcat和zookeeper

我们需要用zk管理solr的配置文件,所以需要将tomcat的启动参数中指定zk的host,具体为修改tomcat/bin下的catalina.sh:
加入 JAVA_OPTS=”-DzkHost=127.0.0.1:2181”
zk配置
到了这里我们配置的就差不多了,下面启动3个tomcat

上传solr配置文件到zookeeper

solr对于collection的配置中最重要的就是schema.xml文件用于定义存储的数据结构,类似于sql中的字段定义,配置模版在/server/solr/configsets/basic_configs/conf
在我的机器上的路径为:
/opt/solr-5.3.1/server/solr/configsets/basic_configs/conf
我们需要将该配置文件根据自己的需求定制成自己的数据结构,在此处为了演示我就直接上传到zk上了,关于上传zk ,solr有做api的封装,具体为org.apache.solr.cloud.ZkCLI 类,所以执行以下命令:
java -classpath .:/opt/solrCloud/tomcat_server_1/webapps/solr/WEB-INF/lib/* org.apache.solr.cloud.ZkCLI -cmd upconfig -zkhost 192.168.203.183:2181 -confdir /opt/solr-5.3.1/server/solr/configsets/basic_configs/conf -confname task
其中-classpath用于指定编译的jar包,-cmd用于指定命令类型为上传,下载则是downconfig,-zkhost则指定zk服务器的host,-confdir则指定上传的是文件夹,并且写入在操作系统中的路径,-confname则指定上传到zk的名字,上传的配置文件会存放到zk的/configs/下
zk
然后我们通过url创建节点
命令为:
http://ucap:8080/solr/admin/collections?action=CREATE&name=task&numShards=3&collection.configName=task
其中ucap:8080则是tomcat的地址
其中我们指定应用为solr,具体action为CREATE,numShards则指定节点数,configName则指定在zookeeper中配置文件的名字
大功告成
我们可以查看一下集群的信息集群信息

其中在编写的过程中有参考百度经验
http://jingyan.baidu.com/article/d8072ac4625b07ec95cefdbe.html和
http://blog.csdn.net/wanghui2008123/article/details/37813525这两篇文章

0 0