zookeeper介绍配置java环境下载zookeeper安装zookeeper
使用命令解压修改配置文件 启动zookeeper配置zk环境变量开机自启
zookeeper介绍ZooKeeper 是一个开源的分布式协调服务。它是一个为分布式应用提供一致性服务的软件,分布式应用程序可以基于 Zookeeper 实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master 选举、分布式锁和分布式队列等功能。
ZooKeeper 的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
Zookeeper 保证了如下分布式一致性特性:
顺序一致性原子性单一视图可靠性实时性(最终一致性)
客户端的读请求可以被集群中的任意一台机器处理,如果读请求在节点上注册了监听器,这个监听器也是由所连接的 zookeeper 机器来处理。对于写请求,这些请求会同时发给其他 zookeeper 机器并且达成一致后,请求才会返回成功。因此,随着 zookeeper 的集群机器增多,读请求的吞吐会提高但是写请求的吞吐会下降。
有序性是 zookeeper 中非常重要的一个特性,所有的更新都是全局有序的,每个更新都有一个唯一的时间戳,这个时间戳称为 zxid(Zookeeper Transaction Id)。而读请求只会相对于更新有序,也就是读请求的返回结果中会带有这个zookeeper 最新的 zxid。
配置java环境详见文章 centos7配置jdk环境
下载zookeeperzookeeper官网
从官网下载然后上传到服务器上
注意不要下错了,文件名带bin的才是二进制包,不然是源码包需要自己编译。
在服务器上使用命令下载
wget https://dlcdn.apache.org/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0-bin.tar.gz安装zookeeper 使用命令解压
tar -zxvf apache-zookeeper-3.7.0-bin.tar.gz修改配置文件
进入解压出来的目录
cd apache-zookeeper-3.7.0-bin/
进入conf文件夹,我们将 zoo_sample.cfg 复制一份并命名为 zoo.cfg
cd conf/ cp zoo_sample.cfg zoo.cfg
修改zoo.cfg配置文件
vi zoo.cfg
配置里的dataDir,你可以替换成自己创建的目录,也可以使用默认的。
clientPort是服务的端口号 默认2181。
进入文件夹的bin目录
# 路径替换成你的 cd bin/
使用命令启动
./zkServer.sh start
启动成功
查看zk状态
./zkServer.sh status
查看进程
ps -ef|grep zookeeper配置zk环境变量
vim /etc/profile
ZOOKEEPER_HOME=/root/apache-zookeeper-3.7.0-bin PATH=$PATH:$ZOOKEEPER_HOME/bin export PATH ZOOKEEPER_HOME PATH
这里箭头标准的替换成自己的目录位置
source /etc/profile开机自启
编写service文件
vi /usr/lib/systemd/system/zookeeper.service
输入以下内容
(里面的文件目录位置替换成自己的!)
[Unit] Description=zookeeper After=network.target remote-fs.target nss-lookup.target [Service] Type=forking ExecStart=/root/apache-zookeeper-3.7.0-bin/bin/zkServer.sh start ExecReload=/root/apache-zookeeper-3.7.0-bin/bin/zkServer.sh restart ExecStop=/root/apache-zookeeper-3.7.0-bin/bin/zkServer.sh stop [Install] WantedBy=multi-user.target
保存,生效
# 增加权限 chmod 777 /usr/lib/systemd/system/zookeeper.service # 设置自启 systemctl enable zookeeper.service systemctl daemon-reload # 查看是否自启 systemctl is-enabled zookeeper.service # 取消自启 systemctl disable zookeeper.service systemctl daemon-reload
使用systemctl命令出现如下错误
解决方案:
编辑bin目录下的zkEnv.sh
vi zkEnv.sh
添加 JAVA_HOME
如下图所示:
启动成功
注意:以上操作均在centos7.6 root账户下操作!



