zookeeper简介

安装Zookeeper

简介

Zookeeper 是一个非常流行的分布式系统协调服务,目前的应用非常的广泛,其主要特点:

  1. 分布式集群
  2. 高可用性
  3. 奇数个节点

其应用场景有如下:

  1. 服务器主从选举。假设我们有多个服务器需要提供服务,但是为了数据的一致性,我们需要每一个时刻只能有一个服务器来提供服务,其他服务器做为主服务器的备份,如果主服务器挂了,立马备份服务器就成了主服务器进行工作。这种场景常见于数据库服务器
  2. 批量更新配置,如果我们有多个服务器节点需要更新配置文件的内容,这个时候如果挨个去改,很容易出错,尤其是服务器很多的情况下,统一推送配置文件,就显得很重要。因此我们可以将配置文件存放在第三方,修改后,通知zookeeper通知其他节点,各个节点自己读取配置文件。

安装

安装Jdk
1
yum install jdk -y
下载zookeeper
1
2
3
1. 下载
2. 解压
tar -zxvf zookeeper.tar.gz
zookeeper的配置文件
1
2
3
4
5
6
7
8
9
10
# 文件位于 zookeeper/conf/zoo.cfg

tickTime=2000
dataDir=/data/zookeeper
clientPort=2181
initLimit=5
syncLimit=2
server.1=192.168.31.144:2888:3888
server.2=192.168.31.20:2888:3888
server.3=192.168.31.223:2888:3888
将zookeeper复制到多个服务器上面
1
2
scp -r zookeeper root@192.168.31.20:.
scp -r zookeeper root@192.168.31.44:.
启动
1
./zookeeper/bin/zkServer.sh start
查看状态
1
./zookeeper/bin/zkServer.sh status
完成后

image
image
image

python+zookeeper
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
from kazoo.client import KazooClient

zk = KazooClient(hosts="192.168.31.144:2181,192.168.31.20:2181,192.168.31.223:2181")
zk.start()

# 删除节点
zk.delete("/bb/aa/validator",recursive=True)

# 创建节点
result = zk.create('/bb/aa/validator',b'validator_huabei_1')
print(result)

# 更新节点
zk.set("/bb/aa/validator",b"updated new message")

# 获取节点
data,stat = zk.get("/bb/aa/validator")
print(data.decode('utf-8'))
print(stat)
#zk.delete("/bb/aa/validator",recursive=True)

# 监听节点
@zk.DataWatch("/bb/aa/validator")
def watch_node(data, stat):
print("Version: %s, data: %s" % (stat, data.decode("utf-8")))

参考

ZooKeeper简介与安装
zookeeper伪集群启动失败失败:Invalid config, exiting abnormally
Python与ZooKeeper集群连接