docker compose部署zookeeper

单机部署

  • 新建docker-compose.yaml
version: '3'
services:
  zookeeper:
    image: zookeeper:3.5.7
    container_name: base-zookeeper
    hostname: zookeeper
    privileged: true
    restart: always
    ports:
      - 2181:2181
    environment:
      TZ: "Asia/Shanghai"
    volumes:
      - ./volumes/zookeeper/datalog:/datalog
      - ./volumes/zookeeper/logs:/logs
      - ./volumes/zookeeper/data:/data
      - ./volumes/zookeeper/conf:/conf
  • 使用docker-compose启动
docker-compose -f docker-compose.yaml up -d
  • 测试连接
docker-compose -f docker-compose.yaml exec -it zookeeper zkCli.sh -serv
er zookeeper

看到下面信息表示客户端连接成功
docker compose部署zookeeper_第1张图片

  • 测试使用
set /name zs
get /name

在这里插入图片描述

集群部署

todo

python访问测试

  • 安装库
pip install kazoo -i https://pypi.douban.com/simple
  • 新建test_zk.py
from kazoo.client import KazooClient


zk = KazooClient(hosts='zookeeper:2181')  # # 创建一个ZooKeeper客户端实例
zk.start()  # 启动ZooKeeper客户端连接

# 检查是否成功连接到ZooKeeper
if zk.connected:
    print("成功连接到ZooKeeper!")

# 进行其他操作,例如创建节点、获取节点数据等
zk.set('/name', b'zs')
value = zk.get('/name')
print(value)

zk.stop()  # 关闭ZooKeeper客户端连接
  • 运行
    docker compose部署zookeeper_第2张图片

python常用操作

from kazoo.client import KazooClient

# 创建一个ZooKeeper客户端实例
zk = KazooClient(hosts='zookeeper:2181')

# 启动ZooKeeper客户端连接
zk.start()

# 检查是否成功连接到ZooKeeper
if zk.connected:
    print("成功连接到ZooKeeper!")

# 进行其他操作,例如创建节点、获取节点数据等
zk.create('/app_01', b'app_01')  # 创建节点
zk.exists('/app_01')  # 检查节点是否存在
zk.get('/app_01')  # 获取节点数据
zk.set('/app_01', b'app_01_back')  # 修改节点数据

zk.create('/app_01/sub_app_01')
zk.create('/app_01/sub_app_02')
zk.get_children('app_01')  # 获取指定节点的所有子节点
zk.delete('app_01/sub_app_01')  # 删除节点


# 监听器监听子节点,当子节点发生变化时触发
@zk.ChildrenWatch('/app_01')
def watch_children(children):
    print("this is watch_children %s" % children)


# 监听器监听数据,当节点数据发生变化时触发
@zk.DataWatch("/app_01")
def watch_data(data, state):
    print("app_01 node is %s" % data)


# 事务,自v3.4以后,zookeeper支持一次发送多个命令,这些命令作为一个原子进行提交,要么全部执行成功,要么全部失败
transaction = zk.transaction()
transaction.check('/china/beijing', version=3)
transaction.create('/china/shanghai', b"shanghai")
results = transaction.commit()

zk.stop()  # 关闭ZooKeeper客户端连接

你可能感兴趣的:(大数据,docker,zookeeper)