editplus64+SSH远程工具 |
zookeeper-3.4.12 |
solr-4.10.3 |
jdk版本1.7 |
Tomcat7 |
首先,云服务器上防火墙是默认关闭状态,所以出现链接拒绝问题请尝试设置安全组。(那么那些要求你将防火墙关闭的博客可以尝试将端口放在安全组中。)如下,这个是我购买腾讯云服务器设置的部分安全组。
上面的图无关紧要哈,就是我的服务器的自定义开放端口。如果你想用这个端口一定要先netstat一下下。废话不多少了,开始干活。
一、zookeeper伪集群搭建
第一步:需要安装jdk环境。(tomcat也用,这个简单不说了,不会自行度娘。)
第二步:把zookeeper的压缩包上传到服务器。
第三步:解压缩,tar -zxvf zookeeper-版本号。
第四步:把zookeeper复制三份。
[root@localhost ~]# mkdir /usr/local/solr-cloud
[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
第五步:在每个zookeeper目录下创建一个data目录。
第六步:在data目录下创建一个myid文件,文件名就叫做“myid”。内容就是每个实例的id。例如1、2、3。
挺费劲的,别弄差了。一定要提醒自己细心细心再细心。
第七步:修改配置文件。把conf目录下的zoo_sample.cfg文件改名为zoo.cfg。此外zoo.cfg有几个配置要修改。
1.dataDir=/usr/local/solr-cloud/zookeeper01/data/ (data文件夹位置)
2.clientPort=2191(端口号)
3. server.1=(ip地址):2881:3881
server.2=(ip地址):2882:3882
server.3=(ip地址):2883:3883
(末尾添加上)
第八步:启动每个zookeeper实例。
启动zookeeper:bin/zkServer.sh start(最好自己写个批处理,一次全启动。一次全关闭。下面的tomcat也是)。
查看zookeeper的状态:bin/zkServer.sh status
还有一点就是,我在完成了所有步骤之后,发现启动zookeeper伪集群失败,使用工具查看一下zookeeper文件夹下的bin目录的zookeeper.out文件,发现如下错误。
2018-10-07 17:08:11,834 [myid:1] - WARN [QuorumPeer[myid=1]/0.0.0.0:2191:QuorumCnxManager@584] - Cannot open channel to 2 at election address /139.199.201.162:3192
java.net.ConnectException: Connection refused
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:579)
at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:558)
at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectAll(QuorumCnxManager.java:610)
at org.apache.zookeeper.server.quorum.FastLeaderElection.lookForLeader(FastLeaderElection.java:838)
at org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:957)
2018-10-07 17:08:11,835 [myid:1] - INFO [QuorumPeer[myid=1]/0.0.0.0:2191:QuorumPeer$QuorumServer@184] - Resolved hostname: 139.199.201.162 to address: /139.199.201.162
2018-10-07 17:08:11,835 [myid:1] - WARN [QuorumPeer[myid=1]/0.0.0.0:2191:QuorumCnxManager@584] - Cannot open channel to 3 at election address /139.199.201.162:3193
java.net.ConnectException: Connection refused
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:579)
at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:558)
at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectAll(QuorumCnxManager.java:610)
at org.apache.zookeeper.server.quorum.FastLeaderElection.lookForLeader(FastLeaderElection.java:838)
at org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:957)
2018-10-07 17:08:11,836 [myid:1] - INFO [QuorumPeer[myid=1]/0.0.0.0:2191:QuorumPeer$QuorumServer@184] - Resolved hostname: 139.199.201.162 to address: /139.199.201.162
2018-10-07 17:08:11,836 [myid:1] - INFO [QuorumPeer[myid=1]/0.0.0.0:2191:FastLeaderElection@847] - Notification time out: 60000
查看安全组设置没问题,然后就尴尬了,度娘出来了一个大哥,zookeeper集群无法正确启动。大哥看源码解决了,那我先拿来试试吧。其他的感觉都是瞎糊弄的,也有可能是版本问题。
第七步加上一条.quorumListenOnAllIPs=true这个属性加上后再启动,成功。
ZooKeeper JMX enabled by default
Using config: /usr/local/solr-cloud/zookeeper01/bin/../conf/zoo.cfg
Mode: follower
二、Solr集群搭建
第一步:创建四个tomcat实例。每个tomcat运行在不同的端口。
第二步:部署solr的war包。把单机版的solr工程复制到集群中的tomcat中。
第三步:为每个solr实例创建一个对应的solrhome。使用单机版的solrhome复制四份。
第四步:需要修改solr的web.xml文件。把solrhome关联起来。
solr/home
/usr/local/solr-cloud/solrhome01/
java.lang.String
第五步:配置solrCloud相关的配置。每个solrhome下都有一个solr.xml,把其中的ip及端口号配置好。
ip地址
tomcat开放端口号
${hostContext:solr}
${zkClientTimeout:30000}
${genericCoreNodeNames:true}
第六步:让zookeeper统一管理配置文件。需要把solrhome/collection1/conf目录上传到zookeeper。
上传任意solrhome中的配置文件即可。
使用工具上传配置文件:/root/solr-4.10.3/example/scripts/cloud-scripts/zkcli.sh
./zkcli.sh -zkhost ip地址:zookeeper开放端口1,ip地址:zookeeper开放端口2,ip地址:zookeeper开放端口3 -cmd upconfig -confdir /usr/local/solr-cloud/solrhome01/collection1/conf -confname myconf
使用zookeeper目录下的bin/zkCli.sh命令查看zookeeper上的配置文件:查看zookeeper上的配置文件:
./zkCli.sh -server zookeeper:开放端口1
[admin-extra.menu-top.html, currency.xml, protwords.txt, mapping-FoldToASCII.txt, _schema_analysis_synonyms_english.json, _rest_managed.json, solrconfig.xml, _schema_analysis_stopwords_english.json, lang, stopwords.txt, spellings.txt, mapping-ISOLatin1Accent.txt, admin-extra.html, xslt, scripts.conf, synonyms.txt, update-script.js, velocity, elevate.xml, admin-extra.menu-bottom.html, schema.xml, clustering][zk: 139.199.201.162:2191(CONNECTED) 2] ls /configs/myconf
[zk: 139.199.201.162:2191(CONNECTED) 4] quit
Quitting...
2018-10-08 13:39:42,611 [myid:] - INFO [main:ZooKeeper@687] - Session: 0x10019ea05c50002 closed
2018-10-08 13:39:42,612 [myid:] - INFO [main-EventThread:ClientCnxn$EventThread@521] - EventThread shut down for session: 0x10019ea05c50002
第七步:修改tomcat/bin目录下的catalina.sh 文件,关联solr和zookeeper。
把此配置添加到配置文件中:(位置随意)
JAVA_OPTS="-DzkHost=zookeeper开放端口1,ip地址:zookeeper开放端口2,ip地址:zookeeper开放端口3
第八步:启动每个tomcat实例。要包装zookeeper集群是启动状态。
第九步:访问集群。
文件结构如下图:
接着访问各tomcat(自己写批处理)
出现云标
第十步:创建新的Collection进行分片处理。
http://IP地址:端口号/solr/admin/collections?action=CREATE&name=collection2&numShards=2&replicationFactor=2
重新进入页面
至此,solr集群搭建完毕。