目录
2.3.4 修改配置文件 zoo.cfg - 设置数据缓存路径
2.3.6 修改配置文件 zoo.cfg - 设置服务、投票、选举端口
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
-
退出控制台