zookeeper集群部署
虚拟机部署zookeeper集群步骤
最近自己开发springcloud项目,需要部署zookeeper集群,这里顺便记录一下部署过程。
准备环境:
- 多台服务器环境,需要提前安装jdk。(我这是使用的是VM虚拟机服务器,只需要在一台服务器上安装好jdk环境,然后克隆虚拟机即可。)
- 提前下载zookeeper压缩包。
接下来进行部署吧!
1.上传zk压缩包并解压
使用scp命令将本地的zk包上传到虚拟机指定路径下:
scp apache-zookeeper-3.5.7-bin.tar.gz root@192.168.59.xxx:/home/yq/myzookeeper
解压:
tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz
将文件夹apache-zookeeper-3.5.7-bin修改为zookeeper-3.5.7(只是为了简洁,非必须)
mv apache-zookeeper-3.5.7-bin zookeeper-3.5.7
2.配置服务器编号
zk集群通过服务器编号建立联系,相互通信。
(1)在zookeeper-3.5.7目录下创建zkData目录
mkdir zkData
(2)在zkData目录下创建myid文件,并写入一个数字,(任何数字都行,是zk服务器编号,唯一标识)这里我写的是1.
vi myid
1
esc退出编辑,:wq保存退出。
(3)将zookeeper-3.5.7目录同步到其他服务器
xsync zookeeper-3.5.7
修改其他服务器的myid文件内容,我这里部署了3台服务器,另外2台的myid内容分别改为2、3
3.修改zoo.cfg配置文件
(1)将zoo_sample.cfg的名称修改为zoo.cfg
mv zoo_sample.cfg zoo.cfg
(2)打开zoo.cfg并修改
vim zoo.cfg
将dataDir修改如下:
dataDir=/home/yq/myzookeeper/zookeeper-3.5.7/zkData
(3)在zoo.cfg增加集群配置
###################cluster################
server.1=192.168.59.128:2888:3888
server.2=192.168.59.129:2888:3888
server.3=192.168.59.130:2888:3888
配置参数解析:
server.A=B:C:D
A 是一个数字,表示这个是第几号服务器;
集群模式下配置一个文件 myid, 这个文件在 dataDir 目录下,这个文件里面有一个数据
就是 A 的值, Zookeeper 启动时读取此文件,拿到里面的数据与 zoo.cfg 里面的配置信息比
较从而判断到底是哪个 server。
B 是这个服务器ip;
C 是这个服务器 Follower 与集群中的 Leader 服务器交换信息的端口;
D 是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的
Leader,而这个端口就是用来执行选举时服务器相互通信的端口。
(4)同步zoo.cfg文件到其他服务器
xsync zoo.cfg
4.启动zk集群
分别启动zk服务器
bin/zkServer.sh start
查看启动状态
成功状态:
leader状态:
[root@virtual01 zookeeper-3.5.7]# bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /home/yq/myzookeeper/zookeeper-3.5.7/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: leader
follower状态:
[root@virtual01 zookeeper-3.5.7]# bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /home/yq/myzookeeper/zookeeper-3.5.7/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: follower
失败状态:
[root@virtual01 zookeeper-3.5.7]# bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /home/yq/myzookeeper/zookeeper-3.5.7/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Error contacting service. It is probably not running.
出现上面显示的错误,有3个可能:
(1)只启动一台zk服务器,会出现上述失败状态,这是正常的。因为其他zk服务器没启动,无法建立通信。请启动其他zk服务器。
(2)服务器防火墙没有关闭,请关闭所有服务器的防火墙。
(3)请检查dataDir路径是否正确,能确保找到myid文件。zk启动会读取zkData下的myid文件的内容,如果dataDir路径找不着,zk集群服务器都会变成单机,所有zk服务器启动后并没有leader和follower,查看zk状态都会有如上失败提示。
如有不同见解,请指正!!!
更多推荐


所有评论(0)