Zookeeper部署与运行
1. 准备条件:
#. 三台虚拟机:192.168.199.5/6/7
#. jdk8
#. zookeeper-3.4.10.tar.gz
2. 创建uzookeeper用户:
useradd –d /home/uzookeeper –p abcd1234 –c “zookeeper user” uzookeeper
3. 解压zookeeper-3.4.10.tar.gz及创建相应文件夹
mkdir /home/uzookeeper/ap
cp zookeeper-3.4.10.tar.gz /home/uzookeeper/ap
cd /home/uzookeeper/ap
tar –zxvf /home/uzookeeper/ap/zookeeper-3.4.10.tar.gz
4. 配置文件zoo.cfg
设置ZK_HOME=/home/uzookeeper/ap/zookeeper-3.4.10
将$ZK_HOME/conf/zoo_sample.cfg文件复制到zoo.cfg,并如下配置zoo.cfg
tickTime=2000 //这个时间是作为Zookeeper服务器之间或客户端与服务器之间维持心跳的时间间隔,每隔tickTime时间就会发送一个心跳;最小 的session过期时间为2倍tickTime
dataDir= /home/uzookeeper/ap/zookeeper-3.4.10/data //运行数据的存放路径
# dataLogdDir=/home/uzookeeper/ap/zookeeper-3.4.10/dataLog //指定事务日志的存储路径,可以和dataDir在不同设备,这意味着可以使用一个日志的专用磁盘,避免日志IO和快照竞争。
# maxClientCnxns=0 //最大的并发连接数限制,设置为0或者不设置该参数,表示不进行连接数的限制。
# minSessionTimeout //最小的会话超时时间,默认值 minSession=2*tickTime
# maxSessionTimeout //最大的会话超时时间,默认值 maxSession=20*tickTime
clientPort=2181
initLimit=10 //此配置表示,允许follower(相对于Leaderer言的“客户端”)连接并同步到Leader的初始化连接时间,以tickTime为单位。当初始化连接时间超过该值,则表示连接失败。
syncLimit=5 //此配置项表示Leader与Follower之间发送消息时,请求和应答时间长度。如果follower在设置时间内不能与leader通信,那么此follower将会被丢弃。
server.1=192.168.199.5:2888:3888
server.2=192.168.199.6:2888:3888
server.3=192.168.199.7:2888:3888
# server.myid=ip:inner_port:leader_port
# myid 为服务器编号,用于标识服务器,这个值必须和dataDir目录下myid文件中的值保证一致
# ip 为当前服务器IP,
# leader_port Leader的端口
# inner_port zk服务器之间内部通信端口
# 同一个集群内的服务器,需要把该集群内的服务器列表信息都写在配置文件中。
注:带#号的为非必配
(还需创建文件夹:mkdir /home/uzookeeper/ap/zookeeper-3.4.10/data)
创建myid文件:
创建文件 /home/uzookeeper/ap/zookeeper-3.4.10/data/myid , 文件内容为 server.ID:host:port1:port2 对应的ID
(5/6/7三台机器都如上配置)
5. 启动zookeeper
启动zookeeper:sh $ZK_HOME/bin/zkServer.sh start
三台都启动成功。
注:查看状态:sh $ZK_HOME/bin/zkServer.sh status ,可能会提示zookeeper并没有运行,这是因为三台机器防火墙没有开放相应端口
用root用户执行:iptables –F(-F有点暴力,直接删除防火墙的所有过滤规则,如需合理配置请研究Netfilter/iptables的使用方法)
6. 检验启动成功与否
telnet 192.168.199.5 2181
stat
集群和单机模式的的Mode输出稍有区别,单机的为Mode: standalone
7. 停止zookeeper
停止zookeeper:sh $ZK_HOME/bin/zkServer.sh stop