在生产环境中,ZooKeeper应该在多台服务器上运行集群模式,建议服务器最低的数量是3个,在集群模式中,ZooKeeper实例以leader/follower角色运行
主机 | 版本 |
192.168.48.128 | apache-zookeeper-3.5.5-bin.tar.gz |
192.168.48.129 | |
192.148.48.130 |
运行zookeeper需要实现部署jdk, 点我查看部署jdk
安装zookeeper
mkdir /opt/service tar xf apache-zookeeper-3.5.5-bin.tar.gz -C /opt/service/ ln -s apache-zookeeper-3.5.5-bin zookeeper #zoo,cfg是配置文件 cd /opt/service/zookeeper/conf/ cp zoo_sample.cfg zoo.cfg
创建数据日志目录
mkdir -p /data/zk/{data,datalog} mkdir -p /log/zk
编辑配置文件/opt/service/zookeeper/conf/zoo.cfg
tickTime=2000 #单位是毫秒,默认是2000毫秒。Tick是zookeeper用于确定心跳和会话的超时基本时间单位,降低tickTime可以更快的超时,但会增加网络开销 initLimit=10 # follower连接leader超时配置 syncLimit=5 # follower与leader同步超时配置,单位是 tick的数量 dataDir=/data/zk/data #这个是存储zookeeper内存目录的快照,如果dataLogDir没有配置,数据库更新的事物日志也将存储在此目录中,myid文件也是存储在此目录中,如果事物日志存储在其他位置,那么这个目录的性能不敏感 dataLogDir=/data/zk/datalog #存储事务日志目录 clientPort=2181 server.1=192.168.48.128:2888:3888 server.2=192.168.48.129:2888:3888 server.3=192.168.48.130:2888:3888 #2888端口, 这个端口只有leader会开启,主要用于follower打开一个TCP去连接leader的2888端口,确定法定人数 #3888端口, 这个端口所有角色都会开启,用于leader选举,
数据目录写入id
#192.168.48.128 echo "1" >/data/zk/data/myid #192.168.48.129 echo "2" >/data/zk/data/myid #192.168.48.130 echo "3" >/data/zk/data/myid
修改Zookeeper日志输出路径 /opt/service/zookeeper/bin/zkEnv.sh
if [ "x${ZOO_LOG_DIR}" = "x" ] then ZOO_LOG_DIR="/log/zk" fi
JVM配置/opt/service/zookeeper/conf/java.env
#!/bin/sh export JAVA_HOME=/usr/local/jdk # heap size MUST be modified according to cluster environment export JVMFLAGS="-Xms2048m -Xmx2048m $JVMFLAGS"
配置环境变量
# cat /etc/profile.d/zk.sh export ZK_HOME=/opt/service/zookeeper export PATH=$PATH:$ZK_HOME/bin # source /etc/profile.d/zk.sh
启动
zkServer.sh start
查看状态
# zkServer.sh status
$ echo ruok|nc localhost 2181 #他检查服务器是否正在运行而没有任何错误。该如果它正在运行,服务器将响应imok。 如果服务器出现了一些错误状态,它不会响应此命令 $ echo conf|nc localhost 2181 #输出server的详细配置信息 $ echo cons|nc localhost 2181 #输出指定server上所有的客户端连接的详细信息,包括客户IP,回话ID等 $ echo crst|nc localhost 2181 #重置所有的连接信息统计 $ echo mntr|nc localhost 2181 #输出zk的一些运行时信息 $ echo stat|nc localhost 2181 #输出server简要状态和连接的客户端信息 $ echo dump|nc localhost 2181 #输出所有等待队列中的回话和临时节点的信息,针对leader $ echo envi|nc localhost 2181 #输出环境参数
Zookeeper核心特性