ZooKeeper从单机到集群

目录

1 安装单机版

1.1安装 Linux

1.2安装 JDK

1.3上传 Zookeeper

1.4解压 Zookeeper 压缩包

1.5 Zookeeper 目录结构

1.6 配置 Zookeeper

1.7 启动 Zookeeper

2 安装集群版

2.1 Zookeeper 集群中的角色

2.2 设计目的

2.3 集群安装

2.3.1 提供数据缓存目录

2.3.2 复制应用

2.3.3 提供配置文件

2.3.4 修改配置文件 zoo.cfg - 设置数据缓存路径

2.3.5 提供应用唯一标识

2.3.6 修改配置文件 zoo.cfg - 设置服务、投票、选举端口

2.3.7 启动 ZooKeeper 应用

2.3.8 关闭 ZooKeeper 应用

2.3.9 控制台访问 ZooKeeper 应用


1 安装单机版

1.1安装 Linux

1.2安装 JDK

配置环境变量
 

修改系统级环境变量配置文件. 文件是 : /etc/profile

1.3上传 Zookeeper

官方资源包可在 zookeeper.apache.com 站点中下载

1.4解压 Zookeeper 压缩包

[root@localhost temp]# tar -zxf zookeeper-3.4.6.tar.gz
[root@localhost temp]# cp zookeeper-3.4.6 /usr/local/zookeeper -r

1.5 Zookeeper 目录结构

1. bin :放置运行脚本和工具脚本,如果是 Linux 环境还会有有 zookeeper 的运
行日志 zookeeper.out
2. conf zookeeper 默认读取配置的目录,里面会有默认的配置文件
3. contrib zookeeper 的拓展功能
4. dist-maven zookeeper maven 打包目录
5. docs zookeeper 相关的文档
6. lib zookeeper 核心的 jar
7. recipes zookeeper 分布式相关的 jar
8. src zookeeper 源码

1.6 配置 Zookeeper

Zookeeper 在启动时默认的去 conf 目录下查找一个名称为 zoo.cfg 的配置文件。
zookeeper 应用目录中有子目录 conf
其中有配置文件模板: zoo_sample.cfg
# cp zoo_sample.cfg zoo.cfg
zookeeper 应用中的配置文件为 conf/zoo.cfg
修改配置文件 zoo.cfg - 设置数据缓存路径

1.7 启动 Zookeeper

默认加载配置文件: ./zkServer.sh start :默认的会去 conf 目录下加载 zoo.cfg 配置文件。
指定加载配置文件: ./zkServer.sh start 配置文件的路径。

2 安装集群版

2.1 Zookeeper 集群中的角色

Zookeeper 集群中的角色主要有以下三类

2.2 设计目的

1. 最终一致性: client 不论连接到哪个 Server ,展示给它都是同一个视图,这是 zookeeper最重要的性能。
2 . 可靠性:具有简单、健壮、良好的性能,如果消息 m 被到一台服务器接受,那么它将被所有的服务器接受。
3 . 实时性: Zookeeper 保证客户端将在一个时间间隔范围内获得服务器的更新信息,或者服务器失效的信息。但由于网络延时等原因, Zookeeper 不能保证两个客户端能同时得到 刚更新的数据,如果需要最新数据,应该在读数据之前调用 sync() 接口。
4 . 等待无关( wait-free ):慢的或者失效的 client 不得干预快速的 client 的请求,使得每个 client 都能有效的等待。
5. 原子性:更新只能成功或者失败,没有中间状态。
6 . 顺序性:包括全局有序和偏序两种:全局有序是指如果在一台服务器上消息 a 在消息b 前发布,则在所有 Server 上消息 a 都将在消息 b 前被发布;偏序是指如果一个消息 b 在消 a 后被同一个发送者发布, a 必将排在 b 前面。

2.3 集群安装

使用 3 Zookeeper 应用搭建一个伪集群。应用部署位置是: 192.168.70.143 。服务监听
端口分别为: 2181 2182 2183 。投票选举端口分别为 2881/3881 2882/3882 2883/3883
tar -zxf zookeeper-3.4.6.tar.gz
将解压后的 Zookeeper 应用目录重命名,便于管理
mv zookeeper-3.4.12 zookeeper01

2.3.1 提供数据缓存目录

zookeeper01 应用目录中,创建 data 目录,用于缓存应用运行数据 cd zookeeper01
mkdir data

2.3.2 复制应用

复制两份 Zookeeper 应用。用于模拟集群中的 3 个节点。
cp -r zookeeper01 zookeeper02
cp -r zookeeper01 zookeeper03

2.3.3 提供配置文件

zookeeper 应用目录中有子目录 conf 。其中有配置文件模板: zoo_sample.cfg
cp zoo_sample.cfg zoo.cfg
zookeeper 应用中的配置文件为 conf/zoo.cfg

2.3.4 修改配置文件 zoo.cfg - 设置数据缓存路径

dataDir 参数值为应用运行缓存数据保存目录。是 3.2.3 步骤中创建的目录。使用绝对路 径赋值。不同的应用路径不同。

2.3.5 提供应用唯一标识

Zookeeper 集群中,每个节点需要一个唯一标识。这个唯一标识要求是自然数。且唯
一标识保存位置是: $dataDir/myid 。其中 dataDir 为配置文件 zoo.cfg 中的配置参数
data 目录中创建文件 myid touch myid
为应用提供唯一标识。本环境中使用 1 2 3 作为每个节点的唯一标识。
vi myid
简化方式为: echo [ 唯一标识 ] >> myid echo 命令为回声命令,系统会将命令发送的
数据返回。 '>>' 为定位,代表系统回声数据指定发送到什么位置。 此命令代表系统回声数
据发送到 myid 文件中。 如果没有文件则创建文件。

2.3.6 修改配置文件 zoo.cfg - 设置服务、投票、选举端口

vi zoo.cfg
clientPort= 2181 # 服务端口根据应用做对应修改 ,zk01-2181,zk02-2182,zk03-2183
server.1=192.168.70.143:2881:3881
server.2=192.168.70.143:2882:3882
server.3=192.168.70.143:2883:3883
由于是伪集群所以要考虑端口号。不能抢占冲突!

2.3.7 启动 ZooKeeper 应用

bin/zkServer.sh start
ZooKeeper 集群搭建后,至少需要启动两个应用才能提供服务。因需要选举出主服务节
点。启动所有 ZooKeeper 节点后,可使用命令 bin/zkServer.sh status 来查看节点状态。如下:
Mode: leader - 主机
Mode: follower - 备份机

2.3.8 关闭 ZooKeeper 应用

bin/zkServer.sh stop 命令为关闭 ZooKeeper 应用的命令。

2.3.9 控制台访问 ZooKeeper 应用

bin/zkCli.sh -server 192.168.199.175:2181
命令格式为: zkCli.sh -server host:port 。默认连接 localhost:2181 2.3.10 控制台客户端常用命令
本课程只介绍 常用命令
connect host:port - 连接其他的 ZooKeeper 应用。
ls path - 列表路径下的资源。在 ZooKeeper 控制台客户端中,没有默认列表功能,必须
指定要列表资源的位置。 如: ls / ls /path 等。
create [-e] [-s] path data - 创建节点,如: create /test 123 创建一个 /test 节点,节点携
带数据信息 123 create -e /test 123 创建一个临时节点 /test ,携带数据为 123 ,临时节点只
在当前会话生命周期中有效,会话结束节点自动删除。
create -s /test 123 创建一个顺序节点
/test ,携带数据 123 ,创建的顺序节点由 ZooKeeper 自动为节点增加后缀信息,如 -/test00000001
等。 -e -s 参数可以联合使用。
get path - 查看指定节点的数据。 如: get /test 。结果如下:
[zk: 192.168.199.175:2181(CONNECTED) 22] get /test
123
cZxid = 0xd # 创建节点时的事务 ID ,由 ZooKeeper 维护。
ctime = Tue Jun 12 07:45:53 PDT 2018
mZxid = 0x1f # 当前节点携带数据最后一次修改的事务 ID
mtime = Tue Jun 12 07:52:53 PDT 2018
pZxid = 0x21 # 子节点列表最后一次修改的事务 ID
cversion = 1 # 节点版本号,当节点的子节点列表发生变化时,版本变更。
dataVersion = 2 # 数据版本号,当节点携带数据发生变化时,版本变更。
aclVersion = 0
ephemeralOwner = 0x0 # 此数据值不是 0x0 时,代表是临时节点
dataLength = 3 # 节点携带数据长度
numChildren = 1 # 子节点数量
set path data [version] - 设置对应位置节点的数据。如: set /test 'test data' 。 如果要设
置的数据中有空格,则使用单引号界定数据的范围。每次修改数据后, dataVersion 属性自增。
那么在 set 命令中可以指定 version version 数据必须与上次查询的值一致,用于保证本次修
改命令执行时,没有其他会话修改此数据。
delete path [version] - 删除指定节点,此命令不能删除有子节点的节点。如: delete /test
其中 version 参数和 set 命令的 version 含义一致
rmr path - 删除指定结点,包括子节点。
quit - 退出控制台
发布了221 篇原创文章 · 获赞 19 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/ZGL_cyy/article/details/105007210