zookeeper安装
大约 4 分钟
ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,ZooKeeper 是以 Fast Paxos 算法为基础,实现同步服务,配置维护和命名服务等分布式应用。
Zookeeper 分布式服务框架是 Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。核心词就是一个,协调。
官网地址:http://www.apache.org/dyn/closer.cgi/zookeeper/
zookeeper 下载
# 下载源码文件
wget -c https://mirrors.bfsu.edu.cn/apache/zookeeper/zookeeper-3.6.2/apache-zookeeper-3.6.2-bin.tar.gz
#wget -c https://www.apache.org/dyn/closer.lua/zookeeper/zookeeper-3.6.2/apache-zookeeper-3.6.2-bin.tar.gz
#wget -c http://archive.apache.org/dist/zookeeper/zookeeper-3.6.2/apache-zookeeper-3.6.2-bin.tar.gz
#wget -c https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.6.2/apache-zookeeper-3.6.2-bin.tar.gz
# 解压
tar -zxvf apache-zookeeper-3.6.2-bin.tar.gz -C /usr/src/
# 配置文件,可修改端口号
cp /usr/src/apache-zookeeper-3.6.2-bin/conf/zoo_sample.cfg /usr/src/apache-zookeeper-3.6.2-bin/conf/zoo.cfg
# 配置文件的字段说明
cat >> /usr/src/apache-zookeeper-3.6.2-bin/conf/zoo.cfg << EOF
# tickTime:CS通信心跳数
# Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。tickTime以毫秒为单位。
tickTime=2000
# initLimit:LF初始通信时限
# 集群中的follower服务器(F)与leader服务器(L)之间初始连接时能容忍的最多心跳数(tickTime的数量)。
initLimit=5
# syncLimit:LF同步通信时限
# 集群中的follower服务器与leader服务器之间请求和应答之间能容忍的最多心跳数(tickTime的数量)。
syncLimit=2
# dataDir:数据文件目录 Zookeeper保存数据的目录,默认情况下,Zookeeper将写数据的日志文件也保存在这个目录里。
dataDir=/usr/src/apache-zookeeper-3.6.2-bin/data
# dataLogDir:日志文件目录 Zookeeper保存日志文件的目录。
dataLogDir=/usr/src/apache-zookeeper-3.6.2-bin/logs
# clientPort:客户端连接端口
clientPort=2181
EOF
ZooKeeper 单机模式
# 后台启动zk|前台启动zk(以便查看服务器进程的输出日志)|停止|重启|状态
cd /usr/src/apache-zookeeper-3.6.2-bin/bin && ./zkServer.sh start|start-foreground|stop|restart|status
# 客户端连接
cd /usr/src/apache-zookeeper-3.6.2-bin/bin && ./zkCli.sh -server 127.0.0.1:2181
# 帮助文档
help
# 查看指定路径下包含的节点
ls /
# 创建节点数据
create /zk myData
# 查看节点zk的数据内容
get /zk
# 设置节点zk的内容
set /zk "anotherData"
# 删除节点zk
delete /zk
# 推出客户端
quit
使用 nc 来向 zk 发送 4 字母命令
yum install -y nc
# 使用nc来向zk发送4字母命令
echo conf | nc 127.0.0.1 2181
命令 | 描述 |
---|---|
conf | zk 服务配置的详细信息 |
stat | 客户端与 zk 连接的简要信息 |
srvr | zk 服务的详细信息 |
cons | 客户端与 zk 连接的详细信息 |
mntr | zk 服务目前的性能状况 |
wchs | watch 的简要信息 |
wchc | watch 的详细信息,客户端 -> watch 的映射,线上环境要小心使用 |
wchp | watch 的详细信息, znode -> 客户端的映射,线上环境要小心使用 |
zookeeper 集群模式
单机模式的 zk 进程虽然便于开发与测试,但并不适合在生产环境使用。在生产环境下,我们需要使用集群模式来对 zk 进行部署。
在集群模式下,建议至少部署 3 个 zk 进程,或者部署奇数个 zk 进程。
# 预先准备三个zookeeper
#/usr/src/zookeeper-3.6.2-2181/
#/usr/src/zookeeper-3.6.2-2182/
#/usr/src/zookeeper-3.6.2-2183/
cat >> /usr/src/zookeeper-3.6.2-2181/conf/zoo.cfg << EOF
tickTime=2000
initLimit=5
syncLimit=2
dataDir=/usr/src/zookeeper-3.6.2-2181/data
clientPort=2181
server.1=localhost:2887:3887
server.2=localhost:2888:3888
server.3=localhost:2889:3889
EOF
cat >> /usr/src/zookeeper-3.6.2-2182/conf/zoo.cfg << EOF
tickTime=2000
initLimit=5
syncLimit=2
dataDir=/usr/src/zookeeper-3.6.2-2181/data
clientPort=2182
server.1=localhost:2887:3887
server.2=localhost:2888:3888
server.3=localhost:2889:3889
EOF
cat >> /usr/src/zookeeper-3.6.2-2183/conf/zoo.cfg << EOF
tickTime=2000
initLimit=5
syncLimit=2
dataDir=/usr/src/zookeeper-3.6.2-2181/data
clientPort=2183
server.1=localhost:2887:3887
server.2=localhost:2888:3888
server.3=localhost:2889:3889
EOF
# 这个文件在dataDir 目录下,对应的配置文件的server
rm -rf /usr/src/zookeeper-3.6.2-2181/data/myid && echo "1" >> /usr/src/zookeeper-3.6.2-2181/data/myid
rm -rf /usr/src/zookeeper-3.6.2-2182/data/myid && echo "2" >> /usr/src/zookeeper-3.6.2-2182/data/myid
rm -rf /usr/src/zookeeper-3.6.2-2183/data/myid && echo "3" >> /usr/src/zookeeper-3.6.2-2183/data/myid
cd /usr/src/zookeeper-3.6.2-2181/bin && ./zkServer.sh start
cd /usr/src/zookeeper-3.6.2-2182/bin && ./zkServer.sh start
cd /usr/src/zookeeper-3.6.2-2183/bin && ./zkServer.sh start
# 客户端连接zk集群
cd /usr/src/zookeeper-3.6.2-2181/bin && ./zkCli.sh -server 192.16.18.101:2181,192.16.18.101:2182,192.16.18.101:2183
zookeeper 可视化工具(服务器推荐)
# 下载源码
git clone https://github.com/DeemOpen/zkui.git
cd zkui
# 打包
mvn clean package -DskipTests=true
# 配置文件config.cfg需要和jar放到同一目录
cp ./target/*.jar .
# java运行
nohup java -jar zkui-2.0-SNAPSHOT-jar-with-dependencies.jar &
# 访问http://localhost:9090
# Please login using admin/manager or appconfig/appconfig.
windows 客户端(推荐)
下载地址:https://github.com/HelloKittyNII/ZooViewer
将下载的 zooview.zip 解压。
鼠标双击 startup.bat 进行启动
输入 zookeeper 连接:192.16.18.101:2181
windows 客户端
下载地址:https://issues.apache.org/jira/secure/attachment/12436620/ZooInspector.zip
java -jar ZooInspector\build\zookeeper-dev-ZooInspector.jar