- 集群角色
zookeeper集群中的节点分为三种角色:leader、follower、observer
(1)leader:为客户端提供读写操作(事务操作),并维护集群状态,由选举产生
(2)follower:为客户端提供读操作(非事务操作),转发给leader写操作(事务操作),参与选举操作
(3)observer:角色与Follower类似,但是无投票权 - zookeeper默认端口
(1)2181端口:对client提供服务
(2)2888端口:集群内节点之间通信端口(leader监听2888端口)
(3)3888端口:选举leader使用
(4)8080端口:内置的Jetty服务器监听的端口 - 集群搭建
编写docker-compse.yml文件
version: '3.8'
services:
zookeeper1:
image: docker.io/zookeeper
restart: always
container_name: zoo1
hostname: zoo1
privileged: true
ports:
- 2181:2181
environment:
ZOO_MY_ID: 1
#zoo1是容器名,以此来代替ip,因为容器每次启动分配的ip可能不同但容器名相同
ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
zookeeper2:
image: docker.io/zookeeper
restart: always
container_name: zoo2
hostname: zoo2
privileged: true
ports:
- 2182:2181
environment:
ZOO_MY_ID: 2
ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
zookeeper3:
image: docker.io/zookeeper
restart: always
container_name: zoo3
hostname: zoo3
privileged: true
ports:
- 2183:2181
environment:
ZOO_MY_ID: 3
ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
- 启动docker容器
docker-compose up -d
- 查看启动的容器
docker-compose ps
查看结果:
- 查看zookeeper节点状态(角色)
docker exec -it zoo1 bash ./bin/zkServer.sh status
docker exec -it zoo2 bash ./bin/zkServer.sh status
docker exec -it zoo3 bash ./bin/zkServer.sh status
查看结果:
- 进入某个zookeeper节点
docker exec -it zoo1 bash
./bin/zkCli.sh -server 127.0.0.1:2181