部署Zookeeper集群
1.解压文件
[admin@admin01 modules]$ tar -zxvf zookeeper-3.4.5.tar.gz
2.修改文件配置信息
[admin@admin01 conf]$ pwd
/home/admin/opt/softwares/zookeeper-3.4.5/conf
[admin@admin01 conf]$
在路径/home/admin/opt/softwares/zookeeper-3.4.5/conf
下,首先将zoo_sample.cfg重命名为zoo.cfg然后修改里面的配置信息。具体的修改的信息如下图所示:
配置参数解读:
1)tickTime=2000:通信心跳数,Zookeeper服务器心跳时间,单位毫秒
2)initLimit=10:Leader和Follower初始通信时限
3)syncLimit=5:Leader 和 Follower 同步通信时限
4)dataDir:数据文件目录+数据持久化路径
5)clientPort=2181:客户端连接端口
Server.A=B:C:D。
A 是一个数字,表示这个是第几号服务器;
B 是这个服务器的 ip 地址;
C 是这个服务器与集群中的 Leader 服务器交换信息的端口;
D 是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的Leader,而这个端口就是用来执行选举时服务器相互通信的端口。
[admin@admin01 zookeeper-3.4.5]$ mkdir zkData
[admin@admin01 zookeeper-3.4.5]$ touch zkData/myid
[admin@admin01 zookeeper-3.4.5]$ echo 1 >> zkData/myid
3.分发文件
[admin@admin01 softwares]$ scp -r zookeeper-3.4.5/ admin02:/home/admin/opt/softwares/
[admin@admin01 softwares]$ scp -r zookeeper-3.4.5/ admin03:/home/admin/opt/softwares/
注意:分发之前要保证各个虚拟机之间能够进行无密钥访问(即ssh需要配置)。
4.启动集群
在每个节点路径下/home/admin/opt/softwares/zookeeper-3.4.5
分别启动Zookeeper:
[admin@admin02 zookeeper-3.4.5]$ bin/zkServer.sh start
5.操作Zookeeper
a.启动zookeeper
[admin@admin01 zookeeper-3.4.5]$ bin/zkServer.sh start
b.查看进程是否启动
[admin@admin01 zookeeper-3.4.5]$ jps
2726 Jps
2683 QuorumPeerMain
c.查看状态:
[admin@admin01 zookeeper-3.4.5]$ bin/zkServer.sh status
d.启动客户端:
[admin@admin01 zookeeper-3.4.5]$ bin/zkCli.sh
e.退出客户端:
[zk: localhost:2181(CONNECTED) 0] quit
f.停止 zookeeper
[admin@admin01 zookeeper-3.4.5]$ bin/zkServer.sh stop
今天在部署完成Zookeeper集群之后,尝试初次启动集群,每个Zookeeper节点都报出同样的错误信息,如下错误:
[admin@admin01 zookeeper-3.4.5]$ bin/zkServer.sh status
JMX enabled by default
Using config: /home/admin/opt/softwares/zookeeper-3.4.5/bin/../conf/zoo.cfg
Error contacting service. It is probably not running.
通过查看配置文件发现几个端口未打开,无法进行集群,具体如下:
- 2888端口号是zookeeper服务之间通信的端口。
- 3888端口是zookeeper与其他应用程序通信的端口。
- 2181端口是zookeeper客户端请求接口。
可能是因为防火墙关闭的原因,未能给予端口权限,因此无法正常启动Zookeeper集群。故此需要在此解决端口权限问题:
解决方法:
以打开3306端口为例:
问题排查
1.Java环境
java -version
2.排查端口占用情况
netstat -apn | grep 2181 #默认2181端口为服务端提供端口
备注:若集群未启动 则不应该有端口占用
kill -9 pid #pid为占用端口的进程id号
3.排除网卡问题
[root@admin01 zookeeper-3.4.5]# ifconfig
或者是
[root@admin01 zookeeper-3.4.5]# ip addr
备注:如果为物理地址则需要重新启动网卡:
[root@admin01 zookeeper-3.4.5]# service network restart # CentOS-6.x 的命令
[root@admin01 zookeeper-3.4.5]# systemctl restart network # CentOS-7.x 的命令
4.排除网络问题
ping ip #ping其他节点主机 若zoo.cfg 使用域名则用域名
或者是:
[root@admin01 ~]# ping www.baidu.com
PING www.a.shifen.com (61.135.169.121) 56(84) bytes of data.
64 bytes from 61.135.169.121: icmp_seq=1 ttl=128 time=15.6 ms
64 bytes from 61.135.169.121: icmp_seq=2 ttl=128 time=61.6 ms
备注:无ping命令则安装 yum install iputils-ping 若有问题则 host映射问题
5.排查节点配置信息
dataDir 是否存在 myid文件内容与 service.x 中x对应
例如:zookeeper 其对应service.x 则该目录下myid内容为1
6.删除节点残留信息
rm -rf version-2/ zookeeper_server.pid
7.防火墙拦截端口
方法一:
直接修改/etc/sysconfig/iptables
文件
[root@admin01 ~]# vi /etc/sysconfig/iptables
增加如下一行:-A INPUT -p tcp -m tcp --dport 2888 -j ACCEPT
service iptables restart #重新启动防火墙
注意:
在[root@admin01 ~]# vi /etc/sysconfig/iptables
路径下添加的时候,需要在 COMMIT之前加入命令,否则在重新启动防火墙的时候会报出如下的错误信息;
[root@admin03 ~]# service iptables restart
iptables: Setting chains to policy ACCEPT: filter [ OK ]
iptables: Flushing firewall rules: [ OK ]
iptables: Unloading modules: [ OK ]
iptables: Applying firewall rules: iptables-restore: line 14 failed
[FAILED]
方法二:
[root@admin01 ~]# /sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT # 开启3306权限
[root@admin01 ~]# /etc/rc.d/init.d/iptables save # 保存设置
[root@admin01 ~]# /etc/init.d/iptables status #查看防火墙状态
[root@admin01 ~]# service iptables restart #重新启动防火墙
按照上面操作的方法,即可成功启动zookeeper节点,方法二就不再详细概述:
[admin@admin03 zookeeper-3.4.5]$ bin/zkServer.sh start
JMX enabled by default
Using config: /home/admin/opt/softwares/zookeeper-3.4.5/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
来源:CSDN
作者:Rocky_Victory
链接:https://blog.csdn.net/Victory_Lei/article/details/100579190