ZK的介绍和安装
ZK的安装
1、zk的介绍
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
1.1 文件系统
Zookeeper维护一个类似文件系统的数据结构 , znode是一个跟Unix文件系统路径相似的节点,可以往这个节点存储或获取数据
1.2 节点分类
有四种类型的znode:
-
PERSISTENT-持久化目录节点
客户端与zookeeper断开连接后,该节点依旧存在
-
PERSISTENT_SEQUENTIAL-持久化顺序编号目录节点
客户端与zookeeper断开连接后,该节点依旧存在,只是Zookeeper给该节点名称进行顺序编号
-
EPHEMERAL-临时目录节点
客户端与zookeeper断开连接后,该节点被删除
-
EPHEMERAL_SEQUENTIAL-临时顺序编号目录节点
客户端与zookeeper断开连接后,该节点被删除,只是Zookeeper给该节点名称进行顺序编号
1.3 监听通知机制
2、zk的下载
下载地址: https://www.apache.org/dyn/closer.lua/zookeeper/zookeeper-3.4.14/
3、zk的安装(windows)
3.1 下载后的zookeeper-3.4.14.tar.gz解压
3.2 修改配置文件
1.进入到解压后的文件
zookeeper-3.4.14\conf中
2.拷贝zoo_sample.cfg,并重命名为zoo.cfg
3.创建存储数据和日志的文件,在zookeeper-3.4.14中床架2个文件夹,分别为zkdata,zklogs。具体的路径可以根据自己情况决定
4.修改zoo.cfg文件为,下载为最简单配置
tickTime=2000
dataDir=C:/zkdata/zkdata
dataLogDir=c:/zkdata/zklogs
clientPort=2181
5.启动,注意windows下不要在启动命令后面添加start
zkServer.cmd
3.3 参数介绍
-
tickTime Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔 ,即每个tickTime发送一次心跳
-
initLimit 配置 Zookeeper 接受客户端 初始化连接时最长能忍受多少个心跳时间间隔数 , initLimit为10,总的时长就是 10*2000=20 秒
-
syncLimit 此配置项标识 Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是 5*2000=10秒
-
dataDir ookeeper 保存数据的目录 ,默认情况下日志也保存在这个文件夹下
-
dataLogDir 日志文件存放目录
-
clientPort 客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求
-
service.A=B:C:D A:表示第几号服务器,值为1,2,
B:表示服务器IP
C:Leader和Follwer通讯的端口
D:备用选Leader端口
4、zk的安装linux
将下载后的zookeeper-3.4.14.tar.gz上传 到linxu服务器,此处放在/home/zk文件夹下
准备
提前创建好存储数据和日志的2个路径,示例:
cd /home/zk
mkdir zkdata
mkdir zklogs
安装zk
cd /home/zk
tar -zxvf zookeeper-3.4.14.tar.gz
cd zookeeper-3.4.14/conf
cp zoo_sample.cfg zoo.cif
vim zoo.cfg
修改内容如下
tickTime=2000
dataDir=/home/zk/zkdata
dataLogDir=/home/zk/zklogs
clientPort=2181
启动
cd /home/zk/zookeeper-3.4.14/bin
./zkServer.sh start
客户端连接
cd /home/zk/zookeeper-3.4.14/bin
./skCli.sh
注意防火墙
5.集群(Linux下)
准备
此处以一台机器,伪集群伪例,真实生产环境为多台机器
准备1台linux虚拟机,将下载后的zookeeper-3.4.14.tar.gz上传 到linxu服务器,此处放在/home/zk文件夹下
cd /home/zk
mkdir zkdata-1 zkdata-2 zkdata-3
mkdir zklogs-1 zklogs-2 zklogs-3
安装zk
cd /home/zk
tar -zxvf zookeeper-3.4.14.tar.gz
cd zookeeper-3.4.14/conf
cp zoo_sample.cfg zoo-1.cif
vim zoo-1.cfg
修改内容如下
zoo-1.cfg
tickTime=2000
dataDir=/home/zk/zkdata-1
dataLogDir=/home/zk/zklogs-1
clientPort=2181
server.1=127.0.0.1:2888:3888
server.2=127.0.0.1:2889:3889
server.3=127.0.0.1:2890:3890
zoo-2.cfg
tickTime=2000
dataDir=/home/zk/zkdata-2
dataLogDir=/home/zk/zklogs-2
clientPort=2182
server.1=127.0.0.1:2888:3888
server.2=127.0.0.1:2889:3889
server.3=127.0.0.1:2890:3890
zoo-3.cfg
tickTime=2000
dataDir=/home/zk/zkdata-3
dataLogDir=/home/zk/zklogs-3
clientPort=2183
server.1=127.0.0.1:2888:3888
server.2=127.0.0.1:2889:3889
server.3=127.0.0.1:2890:3890
创建myid文件
cd /home/zk/zkdata-1
touch myid
vim myid 添加数字1
cp /home/zk/zkdata-1/myid /home/zk/zkdata-2/
cp /home/zk/zkdata-1/myid /home/zk/zkdata-3/
vim /home/zk/zkdata-2/myid 修改文件内容为2
vim /home/zk/zkdata-3/myid 修改文件内容为3
启动
cd /home/zk/zookeeper-3.4.14/bin
./zkServer.sh start ../conf/zoo-1.cfg
./zkServer.sh start ../conf/zoo-2.cfg
./zkServer.sh start ../conf/zoo-3.cfg
检查启动后个节点在集群中的状态
6.常用命令
./zkServer.sh start ../conf/zoo-1.cfg 启动
./zkServer.sh stop ../conf/zoo-1.cfg 停止
./zkServer.sh status ../conf/zoo-1.cfg 检查状态
./zkCli.sh -server 127.0.0.1:2181 客户端连接服务器