Zookeeper(分布式协调系统)

ZooKeeper基础

简介

Apache ZooKeeper目标是高度可靠的分布式协调系统,解决了分布式环境下的协同配置(统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。)

特性

  • 集中式服务
  • 提供配置信息、命名服务、分布式同步及分组
  • 轻量级,架构简单,API简单
  • /x/x/x/x目录树方式
  • 节点可以关联数据 <1M

安装

1.jdk1.8部署(略)
2.zookeeper.apache.og下载最新稳定版
3.解压到/usr/local,并软连接到zk

tar xzf zookeeper-3.4.10.tar.gz
mv zookeeper-3.4.10 /usr/local/
ln -s zookeeper-3.4.10 zk
cd /usr/local/zk/conf/ && rm -f zkCli.cmd zkEnv.cmd  zkServer.cmd

3.创建配置文件

cat >/usr/local/zk/conf/zoo.cfg <<EOF
itickTime=2000
dataDir=/data/zk2181/
clientPort=2181
initLimit=5
syncLimit=2
EOF

 

1 initLimit: zookeeper集群中的包含多台server, 其中一台为leader, 集群中其余的server为follower. initLimit参数配置初始化连接时, follower和leader之间的最长心跳时间. 此时该参数设置为5, 说明时间限制为5倍tickTime, 即5*2000=10000ms=10s.
2 syncLimit: 该参数配置leader和follower之间发送消息, 请求和应答的最大时间长度. 此时该参数设置为2, 说明时间限制为2倍tickTime, 即4000ms

4.增加环境变量,启动服务

cat >>/etc/profile <<EOF
export  ZOOKEEPER_HOME=/usr/local/zk/
export PATH=$PATH:$ZOOKEEPER_HOME/bin
EOF

$>zkServer.sh  start

5.使用zkCli.sh连接zk

基本操作

$>help
$>ls /
$>get /zookeeper
$>create /name dinghe
$>set /name abc
$>delete /name
$>rmr /a 

备注:目录下有数据,delete目录删除会失败,rmr成功

 

ZooKeeper集群搭建

单机伪集群搭建(测试环境用)

基本环境

主机名IP地址监听端口leader交互端口选举端口myid
zk01192.168.0.2302181600161011
zk01192.168.0.2302182600261022
zk01192.168.0.2302183600361033

文件目录和配置

主机名配置目录数据目录myid目录
zk01/usr/local/zk/conf/zk01.cfg/data/zk01//data/zk01/myid
zk01/usr/local/zk/conf/zk02.cfg/data/zk02//data/zk02/myid
zk01/usr/local/zk/conf/zk03.cfg/data/zk03//data/zk03/myid

服务安装

jdk1.8安装(略)

cd /opt
http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz
tar xzf zookeeper-3.4.10.tar.gz
mv zookeeper-3.4.10 /usr/local/ && cd /usr/local/ 
ln -s zookeeper-3.4.10 zk

初始化配置

useradd zookeeper
mkdir /data/zk0{1..3}/logs -p
chown -R zookeeper.zookeeper /data/zk0{1..3}
chown -R zookeeper.zookeeper /usr/local/zookeeper-*
cd /usr/local/zk/bin/ && rm -f  zkCli.cmd zkEnv.cmd zkServer.cmd

增加环境变量

echo ' '  >> /etc/profile
echo '#Add zookeeper env. 20170822 '  >> /etc/profile
echo 'export ZOOKEEPER_HOME=/usr/local/zk'  >> /etc/profile
echo 'export PATH=$PATH:$ZOOKEEPER_HOME/bin'  >> /etc/profile

. /etc/profile
su - zookeeper

初始化myid

echo 1 >> /data/zk01/myid
echo 2 >> /data/zk02/myid
echo 3 >> /data/zk03/myid

编辑配置文件

#zk01.cfg
itickTime=2000
dataDir=/data/zk01/
clientPort=2181
initLimit=5
syncLimit=2
server.1=192.168.0.112:6001:6101
server.2=192.168.0.112:6002:6102
server.3=192.168.0.112:6003:6103
#zk02.cfg
itickTime=2000
dataDir=/data/zk02/
dataLogDir=/data/zk02/logs
clientPort=2182
initLimit=5
syncLimit=2
server.1=192.168.0.112:6001:6101
server.2=192.168.0.112:6002:6102
server.3=192.168.0.112:6003:6103
#zk03.cfg
itickTime=2000
dataDir=/data/zk03/
clientPort=2183
initLimit=5
syncLimit=2
server.1=192.168.0.112:6001:6101
server.2=192.168.0.112:6002:6102
server.3=192.168.0.112:6003:6103

连接集群并测试

zkCli.sh -server 192.168.0.112:2181,192.168.0.112:2182,192.168.0.112:2183

分布式集群搭建(生产环境用)

基本环境

主机名IP地址myid
zk01192.168.0.2301
zk02192.168.0.2312
zk03192.168.0.2323

端口配置

Port作用
2181服务监听
2888zk与Leader通讯,Master监听该端口
3888zk选举Leader用

角色关系

client
client是集群中的一个节点,以固定间隔时间向server发消息,表示自己存活,Server向client回传ack确认消息
如果client没有收到ack消息,自动冲顶效到另外一台server
server zk集群中一个节点,想client提供所有服务
想client发送ack消息,表明server还健在

Ensemble
zk集群,成员最小数是3

Follower
服务器节点,执行leader的指令

服务安装

cd /opt
http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz
tar xzf zookeeper-3.4.10.tar.gz
mv zookeeper-3.4.10 /usr/local/ && cd /usr/local/ 
ln -s zookeeper-3.4.10 zk

初始化配置

所有zk服务器创建数据目录和用户

useradd zookeeper
mkdir /data/zk/logs -p
chown -R zookeeper.zookeeper /data/zk
chown -R zookeeper.zookeeper /usr/local/zookeeper-*
cd /usr/local/zk/bin/ && rm -f  zkCli.cmd zkEnv.cmd zkServer.cmd

增加环境变量

echo ' '  >> /etc/profile
echo '#Add zookeeper env. 20170821 '  >> /etc/profile
echo 'export ZOOKEEPER_HOME=/usr/local/zk'  >> /etc/profile
echo 'export PATH=$PATH:$ZOOKEEPER_HOME/bin'  >> /etc/profile

. /etc/profile

su - zookeeper

配置文件

zk01/zk02/zk03

itickTime=2000
dataDir=/data/zk/
clientPort=2181
initLimit=5
syncLimit=2
server.1=192.168.0.230:2888:3888
server.2=192.168.0.231:2888:3888
server.3=192.168.0.232:2888:3888

初始化myid

#192.168.0.230
echo 1 >> /data/zk/myid

#192.168.0.231
echo 2 >> /data/zk/myid

#192.168.0.232
echo 3 >> /data/zk/myid

启动集群,查看角色状态

zkServer.sh start
zkServer.sh stop
zkServer.sh status

执行 zkServer.sh status

ZooKeeper JMX enabled by default
Using config: /usr/local/zk/bin/../conf/zoo.cfg
Mode: leader

连接集群并测试

zkCli.sh -server 192.168.0.112:2181,192.168.0.112:2182,192.168.0.112:2183

停止leader,查看其他zk节点,观察leader切换情况

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值