zookeeper介绍

ZooKeeper 是一个开源的分布式协调服务。它是一个为分布式应用提供一致性服务的软件,分布式应用程序可以基于 Zookeeper 实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master 选举、分布式锁和分布式队列等功能。

ZooKeeper 的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。

Zookeeper 保证了如下分布式一致性特性:

  • 顺序一致性
  • 原子性
  • 单一视图
  • 可靠性
  • 实时性(最终一致性)

客户端的读请求可以被集群中的任意一台机器处理,如果读请求在节点上注册了监听器,这个监听器也是由所连接的 zookeeper 机器来处理。对于写请求,这些请求会同时发给其他 zookeeper 机器并且达成一致后,请求才会返回成功。因此,随着 zookeeper 的集群机器增多,读请求的吞吐会提高但是写请求的吞吐会下降。

有序性是 zookeeper 中非常重要的一个特性,所有的更新都是全局有序的,每个更新都有一个唯一的时间戳,这个时间戳称为 zxid(Zookeeper Transaction Id)。而读请求只会相对于更新有序,也就是读请求的返回结果中会带有这个zookeeper 最新的 zxid。

配置java环境

详见文章 centos7配置jdk环境

下载zookeeper

zookeeper官网
在这里插入图片描述
从官网下载然后上传到服务器上
注意不要下错了,文件名带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

启动zookeeper

进入文件夹的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账户下操作!

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐