首页 公告 项目 RSS

docker搭建zookeeper集群

May 14, 2020 本文有 693 个字 需要花费 2 分钟阅读

简介

之前使用的zookeeper一直都是单节点的,为了防止出现单点故障,所以准备搭建个三节点的集群,以我的个性肯定是使用docker去搭建,其实也是很简单的,就是修改几个参数而已

操作

直接上compose文件应该就很清楚了

version: "3"
services:
  zookeeper:
    image: "zookeeper:3.5.6"
    container_name: "zookeeper"
    restart: "always"
    volumes:
      - "/etc/localtime:/etc/localtime"
      - "./logs:/logs"
    hostname: "192.168.1.103"
    network_mode: "host"
    environment:
      - "ZOO_STANDALONE_ENABLED=false"
      - "ZOO_ADMINSERVER_ENABLED=true"
      - "ZOO_LOG4J_PROP=INFO,ROLLINGFILE"
      - "ZOO_MY_ID=2"
      - "ZOO_SERVERS=server.1=192.168.1.104:2888:3888;2181 server.2=0.0.0.0:2888:3888;2181 server.3=192.168.1.102:2888:3888;2181"

解释下参数volume这里我挂载了日志,方便之后排查问题

为了减少网络相关的问题我直接使用host模式

environment这里

  • ZOO_STANDALONE_ENABLED 表示zookeeper使用STANDALONE模式还是Distributed模式,因为我们是集群,所以关闭,默认这个参数为true
  • ZOO_ADMINSERVER_ENABLED 表示要不要开启AdminServer,默认为true,我这里为了方便查看状态,所以就开启了
  • ZOO_LOG4J_PROP 默认zookeeper会把日志打在标准输出,但是因为是生产,照道理要保存日志,所以要添加这个参数日志会打入/logs
  • ZOO_MY_ID zookeeper 节点id,这里我的是第二个节点的配置文件所以是2
  • ZOO_SERVERS zookeeper 的所有节点的配置,我使用的是3.5.6版本,所以配置和老的不一样,要类似server.id=<address1>:<port1>:<port2>[:role];[<client port address>:]<client port>还有如果你是server2的配置那么ip要写为0.0.0.0

这里我是三个节点的,三个节点的compose文件都是差不多的除了hostname,ZOO_MY_ID,ZOO_SERVERS的值不一样,配置完分发到三个节点直接启动就好了,还有zookeeper的启动顺序也是有要求的,id小的要先启动

欢迎关注我的博客www.bboy.app

Have Fun