centos solr 集群搭建
一、什么是 SolrCloud
SolrCloud(solr 云)是 Solr 提供的分布式搜索方案,当你需要大规模,容错,分布式索引和检索能力时使用 SolrCloud。当一个系统的索引数据量少的时候是不需要使用 SolrCloud 的,当索引量很大,搜索请求并发很高,这时需要使用 SolrCloud 来满足这些需求。
SolrCloud 是基于 Solr 和 Zookeeper 的分布式搜索方案,它的主要思想是使用 Zookeeper 作为集群的配置信息中心。
二、环境准备
1、java 1.7
链接:https://pan.baidu.com/s/1ti6j9jD-RwUN5xl3bc3ZDw 密码:oc9a
2、tomcat 7
链接:https://pan.baidu.com/s/1-TK3AAVtJCRWyhb86i7cRw 密码:zro9
3、zookeeper 3
链接:https://pan.baidu.com/s/1BHV6vHcHIuj7lalvvR7w_g 密码:csvk
4、solr 4
链接:https://pan.baidu.com/s/1-fBmxm64y19WUtPSc1Lxdw 密码:wddz
三、搭建 Zookeeper 集群( 在一台机器上模拟搭建 3 台 Zookeeper 的集群 )
1、解压 zookeeper
[root@localhost 桌面]# tar -zxvf zookeeper-3.4.6.tar.gz
2、在 /usr/local 下创建一个 solr-cloud 目录
[root@localhost 桌面]# mkdir /usr/local/solr-cloud
3、复制 3 份 zookeeper 到该目录下
[root@localhost 桌面]# cp -r zookeeper-3.4.6 /usr/local/solr-cloud/zookeeper01 [root@localhost 桌面]# cp -r zookeeper-3.4.6 /usr/local/solr-cloud/zookeeper02 [root@localhost 桌面]# cp -r zookeeper-3.4.6 /usr/local/solr-cloud/zookeeper03
4、在 3 份 zookeeper 中分别创建 data 目录
[root@localhost 桌面]# mkdir /usr/local/solr-cloud/zookeeper01/data [root@localhost 桌面]# mkdir /usr/local/solr-cloud/zookeeper02/data [root@localhost 桌面]# mkdir /usr/local/solr-cloud/zookeeper03/data
5、在每个 data 目录下创建一个 myid 文件,文件名就叫做 myid。
[root@localhost 桌面]# touch /usr/local/solr-cloud/zookeeper01/data/myid [root@localhost 桌面]# touch /usr/local/solr-cloud/zookeeper02/data/myid [root@localhost 桌面]# touch /usr/local/solr-cloud/zookeeper03/data/myid
6、在 3 个 myid 文件中分别写入1、2、3。( 内容就是每个实例的id )
7、修改配置文件
(1)复制 zoo_sample.cfg 文件并且重命名为 zoo.cfg
[root@localhost 桌面]# cp /usr/local/solr-cloud/zookeeper01/conf/zoo_sample.cfg /usr/local/solr-cloud/zookeeper01/conf/zoo.cfg [root@localhost 桌面]# cp /usr/local/solr-cloud/zookeeper01/conf/zoo_sample.cfg /usr/local/solr-cloud/zookeeper02/conf/zoo.cfg [root@localhost 桌面]# cp /usr/local/solr-cloud/zookeeper01/conf/zoo_sample.cfg /usr/local/solr-cloud/zookeeper03/conf/zoo.cfg
(2)分别修改 3 份 zookeeper 的 zoo.cfg 中的 dataDir
dataDir = /usr/local/solr-cloud/zookeeper01/data dataDir = /usr/local/solr-cloud/zookeeper02/data dataDir = /usr/local/solr-cloud/zookeeper03/data
(3)分别修改 3 份 zookeeper 的 zoo.cfg 中的 clientPort。( 因为是在一台服务器上模拟的,所以需要改端口。如果是在多台服务器做集群,就不需要改这个属性了 )
clientPort=2181 clientPort=2182 clientPort=2183
(4)配置节点。在每个 zoo.cfg 文件末尾加上下面内容
server.1=192.168.25.129:2881:3881 server.2=192.168.25.129:2882:3882 server.3=192.168.25.129:2883:3883
解析:
server.1:就是在 myid 里面写的 id
192.168.25.129:节点所在的 ip 地址
2881:节点之间进行通行的端口号
3881:节点之间进行投票的端口号
8、启动 3 个 节点
(1)写一个批处理 start-all.sh ,批处理内容如下
cd zookeeper01/bin ./zkServer.sh start cd ../../ cd zookeeper02/bin ./zkServer.sh start cd ../../ cd zookeeper03/bin ./zkServer.sh start cd ../../
(2)修改批处理文件权限,让文件变为可执行的状态
[root@localhost solr-cloud]# chmod 744 start-all.sh
(3)执行批处理,启动 3 个节点
[root@localhost solr-cloud]# ./start-all.sh
(4)查看每个节点的状态( 其中有两个 follower 一个 leader )
[root@localhost solr-cloud]# zookeeper01/bin/zkServer.sh status [root@localhost solr-cloud]# zookeeper02/bin/zkServer.sh status [root@localhost solr-cloud]# zookeeper03/bin/zkServer.sh status
9、zookeeper 集群搭建完毕
四、搭建 solr 集群( 在一台机器上模拟搭建 4 台 solr 集群 )
1、解压 tomcat
[root@localhost 桌面]# tar -zxvf apache-tomcat-7.0.47.tar.gz
2、复制 4 份 tomcat 到 solr-cloud 目录下
[root@localhost 桌面]# cp -r apache-tomcat-7.0.47 /usr/local/solr-cloud/tomcat01 [root@localhost 桌面]# cp -r apache-tomcat-7.0.47 /usr/local/solr-cloud/tomcat02 [root@localhost 桌面]# cp -r apache-tomcat-7.0.47 /usr/local/solr-cloud/tomcat03 [root@localhost 桌面]# cp -r apache-tomcat-7.0.47 /usr/local/solr-cloud/tomcat04
3、复制 solr 工程到 4 份 tomcat 中
(1)solr 工程下载
链接:https://pan.baidu.com/s/10FBdkO-2uSniqlPlIquGxQ 密码:264n
(2)复制 solr 工程到 tomcat
[root@localhost 桌面]# cp -r solr /usr/local/solr-cloud/tomcat01/webapps/ [root@localhost 桌面]# cp -r solr /usr/local/solr-cloud/tomcat02/webapps/ [root@localhost 桌面]# cp -r solr /usr/local/solr-cloud/tomcat03/webapps/ [root@localhost 桌面]# cp -r solr /usr/local/solr-cloud/tomcat04/webapps/
4、修改 4 个 tomcat 的端口号
vim tomcat01/conf/server.xml vim tomcat02/conf/server.xml vim tomcat03/conf/server.xml vim tomcat04/conf/server.xml
(1)tomcat1( 修改 3 个地方 )
<Server port="8105" shutdown="SHUTDOWN"> <Connector port="8180" protocol="HTTP/1.1" <Connector port="8109" protocol="AJP/1.3"
(2)tomcat2 ( 修改 3 个地方 )
<Server port="8205" shutdown="SHUTDOWN"> <Connector port="8280" protocol="HTTP/1.1" <Connector port="8209" protocol="AJP/1.3"
(3)tomcat3 ( 修改 3 个地方 )
<Server port="8305" shutdown="SHUTDOWN"> <Connector port="8380" protocol="HTTP/1.1" <Connector port="8309" protocol="AJP/1.3"
(4)tomcat4 ( 修改 3 个地方 )
<Server port="8405" shutdown="SHUTDOWN"> <Connector port="8480" protocol="HTTP/1.1" <Connector port="8409" protocol="AJP/1.3"
4、复制 4 份 solrhome
(1)solrhome 下载
链接:https://pan.baidu.com/s/1MDd5QIgFCm7WsS3BMmJkZQ 密码:w6em
(2)复制 4 份 solrhome 到 solr-cloud
[root@localhost 桌面]# cp -r solrhome /usr/local/solr-cloud/solrhome01 [root@localhost 桌面]# cp -r solrhome /usr/local/solr-cloud/solrhome02 [root@localhost 桌面]# cp -r solrhome /usr/local/solr-cloud/solrhome03 [root@localhost 桌面]# cp -r solrhome /usr/local/solr-cloud/solrhome04
5、将 solr 工程的 web.xml 文件指向 solrhome
(1)tomcat1 web.xml
<env-entry> <env-entry-name>solr/home</env-entry-name> <env-entry-value>/usr/local/solr-cloud/solrhome01/</env-entry-value> <env-entry-type>java.lang.String</env-entry-type> </env-entry>
(2)tomcat2 web.xml
<env-entry> <env-entry-name>solr/home</env-entry-name> <env-entry-value>/usr/local/solr-cloud/solrhome02/</env-entry-value> <env-entry-type>java.lang.String</env-entry-type> </env-entry>
(3)tomcat3 web.xml
<env-entry> <env-entry-name>solr/home</env-entry-name> <env-entry-value>/usr/local/solr-cloud/solrhome03/</env-entry-value> <env-entry-type>java.lang.String</env-entry-type> </env-entry>
(4)tomcat4 web.xml
<env-entry> <env-entry-name>solr/home</env-entry-name> <env-entry-value>/usr/local/solr-cloud/solrhome04/</env-entry-value> <env-entry-type>java.lang.String</env-entry-type> </env-entry>
6、修改 solrhome 中 solr.xml
(1)solrhome01
<solrcloud> <str name="host">192.168.25.129</str> <int name="hostPort">8180</int> <str name="hostContext">${hostContext:solr}</str> <int name="zkClientTimeout">${zkClientTimeout:30000}</int> <bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool> </solrcloud>
(2)solrhome02
<solrcloud> <str name="host">192.168.25.129</str> <int name="hostPort">8280</int> <str name="hostContext">${hostContext:solr}</str> <int name="zkClientTimeout">${zkClientTimeout:30000}</int> <bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool> </solrcloud>
(3)solrhome03
<solrcloud> <str name="host">192.168.25.129</str> <int name="hostPort">8380</int> <str name="hostContext">${hostContext:solr}</str> <int name="zkClientTimeout">${zkClientTimeout:30000}</int> <bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool> </solrcloud>
(4)solrhome04
<solrcloud> <str name="host">192.168.25.129</str> <int name="hostPort">8480</int> <str name="hostContext">${hostContext:solr}</str> <int name="zkClientTimeout">${zkClientTimeout:30000}</int> <bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool> </solrcloud>
五、建立 zookeeper 和 solr 的关联关系
1、修改每个 tomcat/bin/catalina.sh 。( 在对应的地方加上以下内容,zookeeper 的 ip 地址和端口号 )
JAVA_OPTS="-DzkHost=192.168.25.129:2181,192.168.25.129:2182,192.168.25.129:2183"
六、让 zookeeper 管理 solrhome
将任意一个 solrhome/collection1/conf 文件夹上传到 zookeeper 即可
(1)进入 solr-4.10.3 目录( 就是你下载 solr 4,解压后的那个目录 )
(2)进入下面目录,该目录下有一个 zkcli.sh
[root@localhost solr-4.10.3]# cd example/scripts/cloud-scripts/
(3)执行 zkcli.sh ( 注意修改 zookeeper 集群节点 所在的 ip 地址 和端口号 )
[root@localhost cloud-scripts]# ./zkcli.sh -zkhost 192.168.25.129:2181,192.168.25.129:2182,192.168.25.129:2183 -cmd upconfig -confdir /usr/local/solr-cloud/solrhome01/collection1/conf -confname myconf
(4)查看是否上传成功
使用 zookeeper 的客户端连接 zookeeper
[root@localhost solr-cloud]# zookeeper01/bin/zkCli.sh -server 192.168.25.129:2182
连接成功后
[zk: 192.168.25.129:2182(CONNECTED) 2] ls /configs
返回 myconf ,说明上传成功了
[myconf]
退出 zookeeper 客户端的连接
[zk: 192.168.25.129:2182(CONNECTED) 4] quit
七、关闭防火墙
service iptablesstop //暂时关闭防火墙 chkconfig iptables off //永久关闭防火墙
八、启动 4 个tomcat
[root@localhost 桌面]# /usr/local/solr-cloud/tomcat01/bin/startup.sh
[root@localhost 桌面]# /usr/local/solr-cloud/tomcat02/bin/startup.sh
[root@localhost 桌面]# /usr/local/solr-cloud/tomcat03/bin/startup.sh
[root@localhost 桌面]# /usr/local/solr-cloud/tomcat04/bin/startup.sh
九、创建新的 Collection 进行分片处理
开一个新的浏览器窗口,在地址栏输入以下内容
http://192.168.25.129:8180/solr/admin/collections?action=CREATE&name=collection2&numShards=2&replicationFactor=2
十、刷新浏览器
十一、删除不需要的 Collection
开一个新的浏览器窗口,在地址栏输入以下内容
http://192.168.25.129:8180/solr/admin/collections?action=DELETE&name=collection1
十二、刷新浏览器
十三、solr 集群搭建完毕