文章目录
Zookeeper-安装及基本使用
1.Zookeeper概述
Zookeeper是一个分布式协调服务,就是为用户的分布式应用程序提供协调服务。
- zookeeper是为别的分布式程序服务的
- zookeeper本身就是一个分布式程序(半数以上节点存在,zk即可正常服务)
- zookeeper锁提供的服务涵盖:主从协调、服务器节点动态上下线、统一配置管理、分布式共享锁、统一名称服务…
- 虽然提供各种服务,但是zookeeper在底层其实只提供两个功能
a. 管理(存储,读取)用户提交的数据
b. 为用户节点提供数据监听服务
2.Zookeeper集群机制
半数机制,集群中半数以上机器存活,集群可用。zookeeper适合装在奇数台机器上。
3.Zookeeper安装
3.1 官网下载zookeeper
3.2 解压
将zookeeper解压到usr/local下
cd /usr/local
tar -zxvf zookeeper-3.3.6.tar.gz
3.3 修改配置文件
cd conf/
cp zoo_sample.cfg zoo.cfg #拷贝一份配置 zoo_sample.cfg本身不生效
vi zoo.cfg
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
dataDir=/root/zkdata #数据目录
# the port at which the clients will connect
clientPort=2181 #客户端端口
# 集群配置 半数以上保持运行状态即可
# 2888主从通信端口 3888投票端口
server.1=10.102.150.65:2888:3888
server.2=10.102.151.43:2888:3888
server.3=10.102.152.51:2888:3888
ps:集群化软件一般内网提供 所以可以关闭防火墙避免每个服务器控制端口需要多次设置造成的麻烦
3.4 新建文件目录以及控制集群id
以第一台为例
mkdir /root/zkdata
cd /root/zkdata/
echo 1 > myid(第二台 echo 2 > myid 以此类推)
3.5 启动zookeeper
cd /usr/local/zookeeper-3.3.6
bin/zkServer.sh start
3.6 查看主从状态
bin/zkServer.sh status
4.Zookeeper结构和命令
4.1 zookeeper数据结构
- 层次化的目录结构,明明符合常规文件系统规范
- 每个节点在zookeeper中叫做znode,并且其有一个唯一的路径标识
- 节点znode可以包含数据和子节点(但EPHEMERAL类型的节点不能再有子节点)
- 客户端应用可以在节点上设置监视器
4.2 数据结构图
4.3 节点类型
4.3.1.Znode有两种类型
短暂(ephemeral)(断开连接自己删除)
持久(persistent)(断开连接不删除)
4.3.2.Znode有四种形式的目录节点(默认persistent)
PERSISTENT
PERSISTENT_SEQUENTIAL(持久序列/test0000000018)
EPHEMERAL
EPHEMERAL_SEQUENTIAL
4.3.3.创建Znode时设置顺序标识,Znode名称后悔附加一个值,顺序号是一个单调递增的计数器,由父节点维护
4.4 zookeeper命令行操作
4.4.1 启动客户端
bin/zkCli.sh
4.4.2 查看使用帮助
help
4.4.3 连接其他机器zk
connection 10.102.150.65
4.4.3 创建节点
create /app1/server1 "10.102.151.43,100"
create -e /app-emphemeral 888888 临时节点
create -s /test/aa 8888 带序号节点
4.4.4 获取节点信息
get /app1/server1
4.4.5 设置节点数据
set /app1/server1 hhh
4.4.6 获取数据并监听节点数据变化
get /app1 watch(该监听只生效一次,且不监听该节点子节点变化),此时改变该节点数据,则可监听到该节点数据变化
4.4.7 监听节点变化(节点改变)
ls /app1 watch
5.Zookeeper集群自动启动脚本
startzk.sh
#! /bin/sh
echo "start zkServer..."
ips="10.102.150.65 10.102.150.66 10.102.150.67"
for i in $ips;
do
ssh $ips "source /etc/profile;/root/apps/zookeeper-3.3.6/bin/zkServer.sh start"
done
主服务器配置免密登录其他服务器
ssh-keygen
ssh-copy-id 10.102.151.43