1.解压安装zookeeper
下载地址:
http://mirror.bit.edu.cn/apache/zookeeper/
1)本人下载zookeeper-3.4.14.tar.gz
2)解压
tar -zxvf zookeeper-3.4.12.tar.gz
3)把zookeeper复制一份
mkdir /usr/local/solrCloud
cp -r zookeeper-3.4.14 /usr/local/solrCloud/zookeeper01
4)在zookeeper目录下创建一个data目录
mkdir /usr/local/solrCloud/zookeeper01/data
5)在data目录下创建一个myid文件,文件名就叫做“myid”。内容就是每个实例的id,该数值可以任意。(该id为server.x中对应的数值)
#位置:/usr/local/solrCloud/zookeeper01/data
#该数值对应server.11=私网IP:2981:3981
echo 11 >> myid
6)修改配置文件。把conf目录下的zoo_sample.cfg文件改名为zoo.cfg(位置:/usr/local/solrCloud/zookeeper01/conf)
7)编辑zoo.cfg文件
如果是虚拟机:就是下图,IP就是虚拟机的IP
原先我阿里云的/etc/hosts内的数据如下:
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
私网IP iasdtewz8mZ iasdtewz8mZ
server.11=私网IP:2981:3981
server.12=私网IP:2982:3982
server.13=私网IP:2983:3983
修改:
私网IP->0.0.0.0(最后测试结果:成功)
私网IP->公网IP(最后测试结果:失败)
修改后阿里云为如下(原因:发布dubbo到zookeeper( Mode: standalone)需要修改该IP为公网)
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
` 公网IP iasdtewz8mZ iasdtewz8mZ `
server.11=127.0.0.1:2981:3981
server.12=127.0.0.1:2982:3982
server.13=127.0.0.1:2983:3983
修改:
127.0.0.1->0.0.0.0(最后测试结果:失败)
127.0.0.1->公网IP(最后测试结果:失败)
修改dataDir:为以下内容
8)复制相同的两份(位置:/usr/local/solrCloud/)
cp zookeeper01 zookeeper02
cp zookeeper01 zookeeper03
9)修改data文件夹下的myid和zoo.cfg
分类为zookeeper02 :
- myid :12
- clientPort:2182
- dataDir=/usr/local/solrCloud/zookeeper02/data/
分类为zookeeper03 :
- myid :13
- clientPort:2183
- -dataDir=/usr/local/solrCloud/zookeeper03/data/
2.防火墙
1)添加端口:
firewall-cmd --zone=public --add-port=2181/tcp --permanent(2181、2182、2183开启三个,对应zoo.cfg中的clientPort)
2)重启防火墙
systemctl reload firewalld.service
3)查看防火墙
firewall-cmd --zone=public --list-ports
出现:2181/tcp 2182/tcp 2183/tcp
3.编辑脚本
1)启动脚本
vim 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)停止脚本
vim stop-all.sh
./zookeeper01/bin/zkServer.sh stop
./zookeeper02/bin/zkServer.sh stop
./zookeeper03/bin/zkServer.sh stop
赋予用户执行权限
chmod u+x start-all.sh
chmod u+x stop-all.sh
执行脚本:start-all.sh
3)查看启动状态
分别使用:
bin/zkServer.sh status
成功
4.测试
语句:
#位置:/usr/local/solrCloud
./zookeeper01/bin/zkCli.sh(本人虚拟机上使用这个)
#或者
./zookeeper01/bin/zkCli.sh -server 私网IP:zookeeper端口号(服务器上使用这个)
成功
出错小知识
1.zookeeper集群启动报错[main-SendThread(localhost:2181):ClientCnxn$SendThread@1162] - Socket error occurred: localhost/127.0.0.1:2181: Connection refused
起因:
本人服务器中含有一个zookeeper,我配置了server1=公网IP:2888:3888,启动方式为Mode: standalone,但是我没有启动.
过程
本人去除了以上的zookeeper中zoo.cfg的server1=公网IP:2888:3888和data文件夹下的myid,启动zookeeper集群中的zkCli.sh还是报以上的错误,所以根据自身需求,可以选择以下之一的方案。
解决:
方案一:启动该zookeeper(本人使用)
方案二:彻底删除该zookeeper