前言:solr本质上就是一个web工程,所以集群就是多跑几个web容器。由于做了集群,需要一个统一管理的工具,这里选择zookeeper。
1,新建solr-cloud集群文件夹。
mkdir /usr/local/solr-cloud
2,将tomcat复制四份到solr-cloud里
cd ~
cp -r apache-tomcat-7.0.85 /usr/local/solr-cloud/tomcat1
cp -r apache-tomcat-7.0.85 /usr/local/solr-cloud/tomcat2
cp -r apache-tomcat-7.0.85 /usr/local/solr-cloud/tomcat3
cp -r apache-tomcat-7.0.85 /usr/local/solr-cloud/tomcat4
3,将单机版的solr复制到这四个tomcat下。
cp -r /usr/local/solr/apache-tomcat-7.0.85/webapps/solr /usr/local/solr-cloud/tomcat1/webapps/
cp -r /usr/local/solr/apache-tomcat-7.0.85/webapps/solr /usr/local/solr-cloud/tomcat2/webapps/
cp -r /usr/local/solr/apache-tomcat-7.0.85/webapps/solr /usr/local/solr-cloud/tomcat3/webapps/
cp -r /usr/local/solr/apache-tomcat-7.0.85/webapps/solr /usr/local/solr-cloud/tomcat4/webapps/
4,copy四个solrhome到solr-cloud。
cp -r /root/solr-4.10.3/example/solr /usr/local/solr-cloud/solrhome1
cp -r /root/solr-4.10.3/example/solr /usr/local/solr-cloud/solrhome2
cp -r /root/solr-4.10.3/example/solr /usr/local/solr-cloud/solrhome3
cp -r /root/solr-4.10.3/example/solr /usr/local/solr-cloud/solrhome4
5,将solr和solrhome分别做绑定,并设置solrhome的solr.xml文件。
修改tomcat下的solr工程的web.xml
将下面这句话注释打开,并设置 <env-entry-value>为自己的solrhome路径。
四个solr工程对应四个不同的solrhome
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>/usr/local/solr-cloud/solrhome1/</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
修改solr.xml
<solrcloud>
<str name="host">localhost</str>
<int name="hostPort">8180</int>
四个solr.xm端口号要和tomcat保持一致
6,修改tomcat的端口号,不要冲突,并修改catalina.sh。
四个tomcat都要修改
tomcat1 改成
Server port="8105"
Connector port="8180" protocol="HTTP/1.1"
Connector port="8109" protocol="AJP/1.3"
tomcat2 改成
Server port="8205"
Connector port="8280" protocol="HTTP/1.1"
Connector port="8209" protocol="AJP/1.3"
tomcat3 改成
Server port="8305"
Connector port="8380" protocol="HTTP/1.1"
Connector port="8309" protocol="AJP/1.3"
tomcat4 改成
Server port="8405"
Connector port="8480" protocol="HTTP/1.1"
Connector port="8409" protocol="AJP/1.3"
catalina.sh在
/usr/local/solr-cloud/tomcat1/bin 目录下
找到
# Uncomment the following line to make the umask available when using the
# org.apache.catalina.security.SecurityListener
#JAVA_OPTS="$JAVA_OPTS -Dorg.apache.catalina.security.SecurityListener.UMASK=`umask`"
在下面加上
JAVA_OPTS="-DzkHost=localhost:2181,localhost:2182,localhost:2183"
四个tomcat都要加,这里就不重复了
7,将zookeeper复制到当前目录下
cp zookeeper-3.4.6 /usr/local/solr-cloud/zookeeper1
cp zookeeper-3.4.6 /usr/local/solr-cloud/zookeeper2
cp zookeeper-3.4.6 /usr/local/solr-cloud/zookeeper3
8,在每个zookeeper下新建data文件夹并新建myid文件
cd /usr/local/solr-cloud/zookeeper1
mkdir data
echo 1 > myid
cd /usr/local/solr-cloud/zookeeper2
mkdir data
echo 2 > myid
cd /usr/local/solr-cloud/zookeeper3
mkdir data
echo 3 > myid
8,将zookeeper的配置文件改名为zoo.cfg,并修改
mv zoo_example.cfg zoo.cfg
修改内容为
dataDir=/usr/local/solr-cloud/zookeeper01/data/
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
server.1=localhost:2881:3881
server.2=localhost:2882:3882
server.3=localhost:2883:3883
这里需要指定一下端口号和自己新建的data目录,不能冲突,下面的server是zookeeper的集群配置
9,新建脚本文件,启动zookeeper
cd zookeeper01/bin
./zkServer.sh start
cd ../../
cd zookeeper02/bin
./zkServer.sh start
cd ../../
cd zookeeper03/bin
./zkServer.sh start
cd ../../
10,上传solr的配置文件交给 zookeeper来统一管理
进入solr的压缩包
cd /root/solr-4.10.3/example/scripts/cloud-scripts
执行命令
./zkcli.sh -zkhost localhost:2181,localhost:2182,localhost:2183 -cmd upconfig -confdir /usr/local/solr-cloud/solrhome1/collection1/conf/ -confname myconf
11,启动每个tomcat
12,集群完成