docker-compose搭建zookeeper集群

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

docker-compose搭建zookeeper集群

官方配置文档

version: '3.1'
services:
  zoo1:
    image: zookeeper:3.6.3
    restart: always
    container_name: zoo1
    ports:
      - "2181:2181"
    environment:
      ZOO_MY_ID: 1
      ZOO_TICK_TIME: 20000
      ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
    volumes:
      - ./zoo1/data:/data
      - ./zoo1/datalog:/datalog
  zoo2:
    image: zookeeper:3.6.3
    restart: always
    container_name: zoo2
    ports:
      - "2182:2181"
    environment:
      ZOO_MY_ID: 2
      ZOO_TICK_TIME: 20000
      ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
    volumes:
      - ./zoo2/data:/data
      - ./zoo2/datalog:/datalog

  zoo3:
    image: zookeeper:3.6.3
    restart: always
    container_name: zoo3
    ports:
      - "2183:2181"
    environment:
      ZOO_MY_ID: 3
      ZOO_TICK_TIME: 20000
      ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
    volumes:
      - ./zoo3/data:/data
      - ./zoo3/datalog:/datalog

注意:如果使用volumes绑定了/conf,则environment里zookeeper的配置会失效

zookeeper配置

如果没有提供zoo.cfg文件,则使用ZooKeeper推荐的默认值。可以使用以下环境变量覆盖它们。

  • ZOO_TICK_TIME
    用于调节心跳和超时,默认为 2 秒
  • ZOO_INIT_LIMIT
    允许 followers 连接和同步到 leader 的时间量,默认为 5
  • ZOO_SYNC_LIMIT
    允许 followers 与 ZooKeeper 同步的时间量,单位为ticks。如果 followers远远落后于 leader ,他们就会被抛弃。默认为 2
  • ZOO_MAX_CLIENT_CNXNS
    限制单个客户端(通过IP地址标识)可以对ZooKeeper集群的单个成员进行的并发连接数(在套接字级别)。默认为 60
  • ZOO_MY_ID
    搭建Zookeeper集群时需要使用。id在集合中必须唯一,并且其值应介于1和255之间。

在云服务器上搭建zookeeper集群,ZOO_TICK_TIME 这个参数可以设高一些,否则可能会出现超时,例如20000ms。

启动集群

docker-compose up -d
docker-compose ps

# 容器状态
NAME                COMMAND                  SERVICE             STATUS              PORTS
zoo1                "/docker-entrypoint.…"   zoo1                running             0.0.0.0:2181->2181/tcp, :::2181->2181/tcp
zoo2                "/docker-entrypoint.…"   zoo2                running             0.0.0.0:2182->2181/tcp, :::2182->2181/tcp
zoo3                "/docker-entrypoint.…"   zoo3                running             0.0.0.0:2183->2181/tcp, :::2183->2181/tcp

# 关闭命令
docker-compose down

# 进入docker容器命令,id从docker ps里查看
docker exec -it 94d8c551c47 /bin/bash

查看docker网络

docker network ls

NETWORK ID     NAME                DRIVER    SCOPE
a94d8c551158   bridge              bridge    local
76bcdaccdcd6   host                host      local
02f6ebe999f9   none                null      local
363589c47b2c   zookeeper_default   bridge    local

使用 Docker 命令行客户端连接 ZK 集群

docker run -it --rm \
        --link zoo1:zk1 \
        --link zoo2:zk2 \
        --link zoo3:zk3 \
        --net zookeeper_default \
        zookeeper:3.6.3 zkCli.sh -server zk1:2181,zk2:2181,zk3:2181
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码上行舟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值