docker compose zookeeper 集群
时间: 2023-06-02 18:01:31 浏览: 172
Docker Compose 是 Docker 官方提供的一种快速部署容器化应用的工具,可以通过一个 YAML 文件来定义一组相关的容器应用,并一键启动、停止、重启和删除这些应用。
Zookeeper 是一个分布式协调服务,常用于解决分布式应用中的一致性问题。在 Docker 环境下,可以使用 Docker Compose 来快速部署 Zookeeper 集群。
下面是一个简单的 Docker Compose 配置文件示例,可以用于快速部署一个三节点的 Zookeeper 集群:
```yaml
version: '3'
services:
zoo1:
image: zookeeper
restart: always
hostname: zoo1
ports:
- "2181:2181"
- "2888:2888"
- "3888:3888"
environment:
ZOO_MY_ID: 1
ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888
zoo2:
image: zookeeper
restart: always
hostname: zoo2
ports:
- "2182:2181"
- "2888:2888"
- "3888:3888"
environment:
ZOO_MY_ID: 2
ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888
zoo3:
image: zookeeper
restart: always
hostname: zoo3
ports:
- "2183:2181"
- "2888:2888"
- "3888:3888"
environment:
ZOO_MY_ID: 3
ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888
```
该配置文件定义了三个 Zookeeper 节点,分别命名为 `zoo1`、`zoo2` 和 `zoo3`,并分别映射了它们的 Zookeeper 端口(2181)、Leader 选举端口(2888)和数据同步端口(3888)到宿主机上。
每个节点都配置了一个 `ZOO_MY_ID` 环境变量,用于指定它们的 ID,以及一个 `ZOO_SERVERS` 环境变量,用于指定集群中的所有节点信息。
通过执行以下命令,可以启动这个三节点的 Zookeeper 集群:
```bash
docker-compose up -d
```
执行该命令后,Docker Compose 将会自动下载所需的镜像,并在后台启动三个 Zookeeper 节点容器。可以使用以下命令查看容器启动状态:
```bash
docker-compose ps
```
输出结果应该类似于下面的内容:
```
Name Command State Ports
------------------------------------------------------------------
docker_zoo1_1 /docker-entrypoint.sh zkSe ... Up 0.0.0.0:2181->2181/tcp, 0.0.0.0:2888->2888/tcp, 0.0.0.0:3888->3888/tcp
docker_zoo2_1 /docker-entrypoint.sh zkSe ... Up 0.0.0.0:2182->2181/tcp, 0.0.0.0:2888->2888/tcp, 0.0.0.0:3888->3888/tcp
docker_zoo3_1 /docker-entrypoint.sh zkSe ... Up 0.0.0.0:2183->2181/tcp, 0.0.0.0:2888->2888/tcp, 0.0.0.0:3888->3888/tcp
```
可以看到,三个节点都已经启动,并且它们的端口映射也已经生效。
可以通过以下命令进入任意一个节点容器进行操作:
```bash
docker-compose exec zoo1 bash
```
通过执行 `zkCli.sh` 命令可以进入 Zookeeper 的命令行客户端:
```bash
bin/zkCli.sh
```
在命令行客户端中,可以使用 `help` 命令查看所有可用命令。
例如,可以使用 `create` 命令创建一个测试节点:
```bash
create /test hello
```
然后使用 `get` 命令查看该节点的数据:
```bash
get /test
```
输出结果应该为:
```
hello
```
这表明 Zookeeper 集群已经成功启动,并且可以正常工作了。
阅读全文