1、安装jdk(因为zookeeper的运行需要jdk的支持 jdk-8u221-linux-x64.tar.gz版本)
2、zookeeper版本:apache-zookeeper-linux-3.5.5-bin.tar.gz
3、centOs7操作系统
4、目录结构 /usr/local/zk
一、解压
将apache-zookeeper-linux-3.5.5-bin.tar.gz解压并复制到zk文件夹下
解压apache-zookeeper-linux-3.5.5-bin.tar.gz命令:tar -zxvf apache-zookeeper-linux-3.5.5-bin.tar.gz
复制命令:cp -r apache-zookeeper-linux-3.5.5-bin /usr/local/zk/zk1/
此时在 /usr/local/zk目录下会多多出一个zk1文件夹:
二、配置zoo.cfg
切换到/usr/local/zk下
执行:cd zk1/conf 切换到zk1的conf下:执行命令:cp -r zoo_simple.cfg zoo.cfg
此时在此目录下多出一个zoo.cfg配置文件(也有人说要删除zoo_simple.cfg,不过我在操作是不需要)
修改zoo.cfg文件的:
dataDir=/usr/local/zk/zk1/data
clientPort=2181
server.1=192.168.1.82:2688:3888
server.2=192.168.1.82:2689:3889
server.3=192.168.1.82:2690:3890
当然也可以添加dataDirLog=/usr/local/zk/zk1/logs(zookeeper默认保存日志的目录,所以此处我没有配置)
在配置:
server.1=192.168.1.82:2688:3888
server.2=192.168.1.82:2689:3889
server.3=192.168.1.82:2690:3890
时,千万注意3888、3889、3890后千万不能带空格,否则你会被坑到抓狂,查看日志,
会给你报Address unresolved: Address unresolved: 192.168.1.82:3888解析不了地址,
你也配置了对了,其他都对,但是一直报这个异常,后来一检查,
发现是zoo.cfg中的server.2后面带了空格郁闷
再在zk1下新建一个data文件夹,并在data下新建一个文件myid
在myid只要添加一个1:
命令分别是:
mkdir data
cd data
vim myid
如下:
此时我们的zk1就配置好了!!
将配置好的zk1复制两份,分别为zk2和zk3
在zk2和zk3中我们只需要修改两处:zoo.cfg和myid
zk2 :
zoo.cfg clientPort=2182 (zk2/conf/下的zoo.cfg)
data/myid (zk2/data/下的myid)
又1改为2
zk3:
zoo.cfg clientPort=2183 (zk3/conf/下的zoo.cfg)
data/myid (zk3/data/下的myid)
又1改为3
三、配置指令集
切换到 /usr/local/zk目录下:
执行:vim startup.sh (便是新建一个startup.sh 文件)
添加可执行命令:
cd zk1/bin
./zkServer.sh start
cd ../..
cd zk2/bin
./zkServer.sh start
cd ../..
cd zk3/bin
./zkServer.sh start
cd ../..
为startup.sh授权:chmod a+x startup.sh
编写查看zookeeper查看状态指令集:vim status.sh
cd zk1/bin
./zkServer.sh status
cd ../..
cd zk2/bin
./zkServer.sh status
cd ../..
cd zk3/bin
./zkServer.sh status
cd ../..
为status.sh授权:chmod a+x status.sh
四、修改hosts文件:
打开hosts文件:vim /etc/hosts,
添加:
server.1=192.168.1.82:2688:3888
server.2=192.168.1.82:2689:3889
server.3=192.168.1.82:2690:3890
注意我们在zoo.cfg文件配置的时候是:server.1但是在hosts中配置是要写成:
server01,如下图所示,配置是千万注意空格,否则会郁闷死你!!!
五、防火墙
关闭防火墙:systemctl stop firewalld.service
查看防火墙的状态:firewall-cmd –state (not running表示关闭了防火墙)
此时zookeeper就配置成功啦
备注*.其他防火墙命令:
firewall-cmd --zone=public --add-port=2181/tcp --permanent # 开放2181端口 注意是tcp,不要输入了udp
firewall-cmd --zone=public --remove-port=2181/tcp --permanent #关闭2181端口
firewall-cmd --reload #重启防火墙
firewall-cmd --zone=public --list-ports #查看防火墙开放的端口
systemctl status firewalld.service #查看防火墙状态
设置防火墙开机自启:systemctl enable firewalld.service
设置防火墙开机不自启:systemctl disable firewalld.service
六、启动
切换到/usr/local/zk目录下:
执行:./startup.sh
查看zookeeper的状态:./status.sh
七、异常
日志目录 /usr/local/zk/zk1/logs 启动zookeeper都会产出日志,异常信息如下
ERROR [main:QuorumPeerMain@89] - Invalid config, exiting abnormally
org.apache.zookeeper.server.quorum.QuorumPeerConfig$ConfigException: Address unresolved: 192.168.1.82:3888
at org.apache.zookeeper.server.quorum.QuorumPeer$QuorumServer.<init>(QuorumPeer.java:279)
at org.apache.zookeeper.server.quorum.flexible.QuorumMaj.<init>(QuorumMaj.java:89)
at org.apache.zookeeper.server.quorum.QuorumPeerConfig.createQuorumVerifier(QuorumPeerConfig.java:595)
at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parseDynamicConfig(QuorumPeerConfig.java:628)
at org.apache.zookeeper.server.quorum.QuorumPeerConfig.setupQuorumPeerConfig(QuorumPeerConfig.java:601)
at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parseProperties(QuorumPeerConfig.java:420)
at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parse(QuorumPeerConfig.java:150)
at org.apache.zookeeper.server.quorum.QuorumPeerMain.initializeAndRun(QuorumPeerMain.java:113)
at org.apache.zookeeper.server.quorum.QuorumPeerMain.main(QuorumPeerMain.java:82)
Invalid config, exiting abnormally
解决办法:要么配置zoo.cfg的sever.1是后面添加空格,后者其他地方加了空格,后者没有配置hosts、或者没有开发防火墙,都会产生这些异常。痛快!!!
一般按这五不走基本都没问题啦,以上是本人记录学习用的,若对你有参考价值,将十分荣幸!如有错误之处欢迎之处!