常用命令
启动ZK服务:bin/zkServer.sh start
查看ZK服务状态:bin/zkServer.sh status
停止ZK服务: bin/zkServer.sh stop
重启ZK服务:bin/zkServer.sh restart
连接服务器:zkCli.sh –timeout 0 –r –server ip:port
环境搭建
单机版
1.解压zookeeper tar -zxvf zookeeper-3.4.6.tar.gz
2.进入到zookeeper文件夹中
3.创建data和logs文件夹
4.进入配置文件,复制zoo_samplecfg重命名为zoo.cfg
5.进入zoo.cfg配置文件,配置 dataDir和dataLogDir
6.启动zookeeper ./zkServer.sh start
注意:单机版要关闭防火墙
从版本3.5.5开始,带有bin名称的包才是我们想要的下载可以直接使用的里面有编译后的二进制的包,而之前的普通的tar.gz的包里面是只是源码的包无法直接使用
集群搭建
在zookeeper集群中,各个节点总共用三种角色,分别是:leader、follower、observer。
采用3台机器搭建zookeeper集群,分别复制安装包到三台机器上并解压,同时copy一份zoo.cfg文件。
修改配置文件
1. 修改端口
server.1=ip1:2888:3888(2888:访问zookeeper的端口;3888:重新选举leader端口)
server.2=ip2:2888:3888
server.3=ip3:2888:3888
server.A=B:C:D:其 中
A 是一个数字,表示这个是第几号服务器;
B 是这个服务器的 ip 地址;
C 表示的是这个服务器与集群中的 Leader服务器交换信息的端口;
D表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行
选举时服务器相互通信的端口。如果是伪集群的配置方式,由于 B 都是一样,所以不同的 Zookeeper 实例通信端口号不能一样,
所以要给它们分配不同的端口号。
在集群模式下,集群中每台机器都需要感知到整个集群是由哪几台机器组成的, 在配置文件中, 按照格式
server.id=host:port:port,每一行代表一个机器配置
id: 指的是server ID,用来标识该机器在集群中的机器序号
2. 新建datadir 目录,设置myid
在每台zookeeper 机器上,我们都需要在数据目录(dataDir)下创建一个myid 文件,该文件只有一行内容,对应每台机器的Server
ID 数字;比如server.1 的myid 文件内容就是1。【必须确保每个服务器的myid 文件中的数字不同,并且和自己所在机器的
zoo.cfg 中server.id 的id 值一致,id 的范围是1~255】
3. 启动zookeeper
带Observer 角色的集群
Observer:在不影响写性能的情况下扩展zookeeper本身zookeeper 的集群性能已经很好了,但是如果超大量的客户端访问,就
势必需要增加zookeeper 集群的服务器数量,而随着服务器的增加,zookeeper 集群的写性能就会下降;zookeeper 中znode 的
变更需要半数及以上服务器投票通过,而随着机器的增加,由于网络消耗等原因必定会导致投票成本增加。也就导致性能下降的
结果。