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 <

 

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 <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
zk01 192.168.0.230 2181 6001 6101 1
zk01 192.168.0.230 2182 6002 6102 2
zk01 192.168.0.230 2183 6003 6103 3

文件目录和配置

主机名 配置目录 数据目录 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
zk01 192.168.0.230 1
zk02 192.168.0.231 2
zk03 192.168.0.232 3

端口配置

Port 作用
2181 服务监听
2888 zk与Leader通讯,Master监听该端口
3888 zk选举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切换情况

 

你可能感兴趣的:(运维)