ZooKeeper 用于维护分布式系统的协调数据。先用单节点学习创建、读取和删除节点;单节点不能提供集群容错。
创建本地服务
安装并启动 Docker,保存 compose.yaml:
services: zookeeper: image: zookeeper:3.9 ports: - "127.0.0.1:2181:2181" volumes: - zk_data:/data - zk_datalog:/datalog
volumes: zk_data: zk_datalog:官方镜像包含运行环境,宿主机不需要再安装 Java。不要复制别人的容器 ID 或镜像 ID。
docker compose up -ddocker compose psdocker compose logs --tail=100 zookeeperdocker compose exec zookeeper zkCli.sh -server 127.0.0.1:2181操作节点
进入 zkCli.sh 后执行:
ls /create /tutorial helloget /tutorialset /tutorial worldget /tutorialdelete /tutorialquit第一次 get 得到 hello,修改后得到 world。节点名已经存在时 create 会报错,先 get 确认状态。delete 删除示例节点;有子节点的节点不能直接按这条命令删除。
数据与运行方式
命名卷保存快照和事务日志,docker compose down 停止服务但保留卷。多个服务构成集群时,还需要独立服务器标识、成员配置与节点间端口,不能仅复制本地端口映射。
从压缩包安装时应选择 apache-zookeeper-版本-bin.tar.gz 二进制发行包,复制 zoo_sample.cfg 为 zoo.cfg,配置持久化数据目录,再用 zkServer.sh 启动。源码压缩包不能当作二进制发行包直接启动。
评论