ZooKeeper多实例实现Solr(tomcat)高可用集群部署


前面有一篇文章(http://www.wangjingfeng.com/post-29.html)写了简单的单zookeeper集群部署,由于业务的需求单zookeeper是满足不了的,下面我来介绍一下多zookeeper+solr集群部署实现solr高可用。

一.最终要实现的效果如下图:

1.png

二.集群结构

主服务

172.18.85.155(centos 6.4 X64)

tomcat1(solr1) 8080

tomcat2(solr2) 8081

zookeeper           9080

从服务

172.18.85.134(centos 6.4 X64)

tomcat1(solr1) 8080

tomcat2(solr2) 8081

zookeeper           9080

三.solr的安装部署在这里就不多说了前面的文章(http://www.wangjingfeng.com/post-29.html)已经说的很清楚了,由于之前我们都是单zookeeper加单solr实现的伪集群,现在我们要在这2台机器上分别安装部署2个solr和1个zookeeper

1.首先在主服务上复制之前配置好的solr

[root@sky solr4.3]# cp -rf tomcat-7.0.42 tomcat-7.0.42-8081

[root@sky solr4.3]# ls
apache-tomcat-6.0.37-solr4.3_20130906.zip  apache-tomcat-7.0.42.tar.gz  mmseg4j-1.9.1  solr-4.3.0  tomcat-7.0.42  tomcat-7.0.42-8081  tomcat-solr

2.我们实现2个tomcat同时在一台机器上启动需要做以下配置:

在/etc/profile最下面添加以下内容

[root@sky solr4.3]# vim /etc/profile

CATALINA_BASE=/usr/local/solr4.3/tomcat-7.0.42
CATALINA_HOME=/usr/local/solr4.3/tomcat-7.0.42
export CATALINA_BASE CATALINA_HOME

CATALINA_2_BASE=/usr/local/solr4.3/tomcat-7.0.42-8081
CATALINA_2_HOME=/usr/local/solr4.3/tomcat-7.0.42-8081
export CATALINA_2_BASE CATALINA_2_HOME

TOMCAT_HOME=/usr/local/solr4.3/tomcat-7.0.42
export TOMCAT_HOME
TOMCAT_2_HOME=/usr/local/solr4.3/tomcat-7.0.42-8081
export TOMCAT_2_HOME

2.png

在tomcat启动文件和关闭文件中添加以下内容:

[root@sky bin]# pwd
/usr/local/solr4.3/tomcat-7.0.42/bin
[root@sky bin]# vim startup.sh
export CATALINA_HOME=$CATALINA_HOME

export CATALINA_BASE=$CATALINA_BASE

[root@sky bin]# vim shutdown.sh 

export CATALINA_HOME=$CATALINA_HOME
export CATALINA_BASE=$CATALINA_BASE

3.png

在刚才复制的一份solr中添加

export CATALINA_HOME=$CATALINA_2_HOME
export CATALINA_BASE=$CATALINA_2_BASE

修改刚才复制的一份solr启动端口:

[root@sky conf]# pwd
/usr/local/solr4.3/tomcat-7.0.42-8081/conf
[root@sky conf]# vim server.xml 
<Server port="8006" shutdown="SHUTDOWN">

默认是8005我们这里改成8006避免和另外一个tomcat冲突

    <Connector port="8081" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

另外一个tomcat是8080我们这里改成8081
    <Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />

另外一个tomcat是8009我们这里改成80810

3.修改刚才复制的solr2服务参数:

[root@sky solr]# pwd
/usr/local/solr4.3/tomcat-7.0.42-8081/solrhome/solr
[root@sky solr]# vim solr.xml

  <cores adminPath="/admin/cores" defaultCoreName="collection1" host="${host:172.18.85.155}" hostPort="${jetty.port:8081}" hostContext="${hostContext:solr}" zkClientTimeout="${zkClientTimeout:15000}">
    <core name="collection1" instanceDir="collection1" />
  </cores>

[root@sky WEB-INF]# pwd
/usr/local/solr4.3/tomcat-7.0.42-8081/webapps/solr/WEB-INF
[root@sky WEB-INF]# vim web.xml 

    <env-entry>
       <env-entry-name>solr/home</env-entry-name>
       <env-entry-value>/usr/local/solr4.3/tomcat-7.0.42-8081/solrhome/solr</env-entry-value>
       <env-entry-type>java.lang.String</env-entry-type>
    </env-entry>

修改完以上配置后同台机器就可以正常启动2个tomcat(solr)了。

当然在从服务器(172.18.85.134)上也要做同样的复制和修改,具体步骤这里就不做过多说明了。

四.下面我们开始配置zookeeper集群。

1.主服务(172.18.85.155)上面我们已经安装过zookeeper服务了,所以只需要在从服务上面安装zookeeper就可以了,安装步骤完全按照上文中写的步骤就可以。

2.在solr配置文件里添加zookeeper集群参数:

172.18.85.155 8080 solr1 

[root@sky bin]# pwd
/usr/local/solr4.3/tomcat-7.0.42/bin
[root@sky bin]# vim catalina.sh

JAVA_OPTS="-Dbootstrap_confdir=/usr/local/solr4.3/tomcat-7.0.42/solrhome/solr/collection1/conf -Dcollection.configName=myconf -Djetty.port=8080 -DzkRun=172.18.85.155:9080 -DzkHost=172.18.85.155:9080,172.18.85.134:9080 -DnumShards=2"

5.png

172.18.85.155 8081 solr2

[root@sky bin]# pwd
/usr/local/solr4.3/tomcat-7.0.42-8081/bin
[root@sky bin]# vim catalina.sh

JAVA_OPTS="-Djetty.port=8081 -DzkRun=172.18.85.155:9080 -DzkHost=172.18.85.155:9080,172.18.85.134:9080"


172.18.85.134 8080 solr1

[root@localhost bin]# pwd
/usr/local/solr4.3/tomcat-7.0.42/bin
[root@localhost bin]# vim catalina.sh

JAVA_OPTS="-Djetty.port=8080 -DzkRun=172.18.85.134:9080 -DzkHost=172.18.85.155:9080,172.18.85.134:9080"


172.18.85.134 8081 solr2

[root@localhost bin]# pwd
/usr/local/solr4.3/tomcat-7.0.42-8081/bin
[root@localhost bin]# vim catalina.sh

JAVA_OPTS="-Djetty.port=8081 -DzkRun=172.18.85.134:9080 -DzkHost=172.18.85.155:9080,172.18.85.134:9080"

参数配置完毕,依次启动2台机器的zookeeper和tomcat就可以了。

然后打开浏览器输入:http://172.18.85.155:8080/solr/#/~cloud 

查看集群效果:

4.png


Whatever is worth doing is worth doing well.