zookeeper docker 集群 踩坑 日志打印 端口占用

docker的zookeeper官网地址:https://hub.docker.com/_/zookeeper

安装步骤

拉去image:

docker pull zookeeper

启动3台容器,该方法可用于一台服务器伪集群也可用于多台服务器真集群

docker run -d -p 2111:2181 -p 2881:2888 -p 3881:3888 \
-v /home/zookeeper/zookeeper1/data:/data/ \
-v /home/zookeeper/zookeeper1/datalog:/datalog/ \
-v /home/zookeeper/zookeeper1/logs:/logs/ \
-v /home/zookeeper/zookeeper1/conf:/conf/ \
-e ZOO_LOG4J_PROP="INFO,ROLLINGFILE" \
-e ZOO_SERVERS="server.1=0.0.0.0:2888:3888;2181 server.2=106.152.239.39:2882:3882;2121 server.3=106.152.239.39:2883:3883;2131" \
-e ZOO_MY_ID=1 \
--name=myzookeeper1 \
--privileged zookeeper  \

docker run -d -p 2121:2181 -p 2882:2888 -p 3882:3888 \
-v /home/zookeeper/zookeeper2/data:/data/ \
-v /home/zookeeper/zookeeper2/datalog:/datalog/ \
-v /home/zookeeper/zookeeper2/logs:/logs/ \
-v /home/zookeeper/zookeeper2/conf:/conf/ \
-e ZOO_LOG4J_PROP="INFO,ROLLINGFILE" \
-e ZOO_SERVERS="server.1=106.152.239.39:2881:3881;2111 server.2=0.0.0.0:2888:3888;2181 server.3=106.152.239.39:2883:3883;2131" \
-e ZOO_MY_ID=2 \
--name=myzookeeper2 \
--privileged zookeeper  \

docker run -d -p 2131:2181 -p 2883:2888 -p 3883:3888 \
-v /home/zookeeper/zookeeper3/data:/data/ \
-v /home/zookeeper/zookeeper3/datalog:/datalog/ \
-v /home/zookeeper/zookeeper3/logs:/logs/ \
-v /home/zookeeper/zookeeper3/conf:/conf/ \
-e ZOO_LOG4J_PROP="INFO,ROLLINGFILE" \
-e ZOO_SERVERS="server.1=106.152.239.39:2881:3881;2111 server.2=106.152.239.39:2882:3882;2121 server.3=0.0.0.0:2888:3888;2181" \
-e ZOO_MY_ID=3 \
--name=myzookeeper3 \
--privileged zookeeper  \

这里一定注意官网的说明

3.5之后的版本已经开始不再使用clientPortAddress

故此ZOO_SERVERS里的本机信息是用于端口配置的并非用于集群通信,所以千万不要写映射端口,这里千万要注意

 

例如容器3的配置文件中

-e ZOO_SERVERS="server.1=106.152.239.39:2881:3881;2111 server.2=106.152.239.39:2882:3882;2121 server.3=0.0.0.0:2888:3888;2181" \
-e ZOO_MY_ID=3 \



正确

 

-e ZOO_SERVERS="server.1=106.152.239.39:2881:3881;2111 server.2=106.152.239.39:2882:3882;2121 server.3=106.152.239.39:2883:3883;2131" \
-e ZOO_MY_ID=3 \


错误

至少3.5之后这种配置是走不通的

注意

-e ZOO_LOG4J_PROP="INFO,ROLLINGFILE" 

该配置是开启日志,若不需要日志可以去掉该配置

请在conf文件夹中放入 log4j.properties

#

# ZooKeeper Logging Configuration

#

log4j.rootLogger=INFO, DEBUG, ERROR

# DEBUG

log4j.appender.DEBUG=org.apache.log4j.DailyRollingFileAppender

log4j.appender.DEBUG.Threshold=DEBUG

log4j.appender.DEBUG.layout=org.apache.log4j.PatternLayout

log4j.appender.DEBUG.layout.ConversionPattern=%d{ISO8601} - %-5p [%t:%C{1}@%L] - %m%n

log4j.appender.DEBUG.datePattern='.'yyyy-MM-dd'.log'

log4j.appender.DEBUG.append=true

log4j.appender.DEBUG.File=/logs/zk_debug.log

# INFO

log4j.appender.INFO=org.apache.log4j.DailyRollingFileAppender

log4j.appender.INFO.Threshold=INFO

log4j.appender.INFO.layout=org.apache.log4j.PatternLayout

log4j.appender.INFO.layout.ConversionPattern=%d{ISO8601} - %-5p [%t:%C{1}@%L] - %m%n

log4j.appender.INFO.datePattern='.'yyyy-MM-dd'.log'

log4j.appender.INFO.append=true

log4j.appender.INFO.File=/logs/zk_error.log

 

# ERROR

log4j.appender.ERROR=org.apache.log4j.DailyRollingFileAppender

log4j.appender.ERROR.Threshold=ERROR

log4j.appender.ERROR.layout=org.apache.log4j.PatternLayout

log4j.appender.ERROR.layout.ConversionPattern=%d{ISO8601} - %-5p [%t:%C{1}@%L] - %m%n

log4j.appender.ERROR.datePattern='.'yyyy-MM-dd'.log'

log4j.appender.ERROR.append=true

log4j.appender.ERROR.File=/logs/zk_error.log

运行就会打印日志在logs文件夹,具体日志需求可配置相应级别减少日志输出

 

记得云服务器(阿里云、腾讯云)安全组的端口设置问题

 

具体其他配置和机关还是建议查看开头提供的官网

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是在Docker Swarm集群中部署Zookeeper集群的详细步骤: 1. 准备Docker环境:需要在每个节点上安装Docker,并且启动Docker服务。 2. 初始化Swarm:选择一个节点作为管理节点,并在该节点上执行`docker swarm init`命令来初始化Swarm集群。 3. 加入节点:在其他节点上执行`docker swarm join`命令,将其加入Swarm集群。 4. 创建Zookeeper镜像:可以使用官方提供的Zookeeper镜像,使用Dockerfile自己构建也可以。 5. 创建Zookeeper配置文件:在Swarm集群管理节点上创建一个zookeeper配置文件,例如`zoo.cfg`,并设置Zookeeper集群的相关配置。 6. 创建Zookeeper服务:使用`docker service create`命令创建Zookeeper服务,并指定需要运行的镜像、端口等参数,同时将上一步创建的配置文件挂载到容器中。 ``` docker service create \ --name zookeeper \ --replicas 3 \ --mount type=bind,source=/path/to/zoo.cfg,target=/conf/zoo.cfg \ --publish 2181:2181 \ --network my-network \ zookeeper:latest ``` 其中,`--replicas`参数指定了需要运行的Zookeeper实例数,`--mount`参数指定了将配置文件挂载到容器中,`--publish`参数指定了需要暴露的端口,`--network`参数指定了使用的网络。 7. 验证Zookeeper集群:使用Zookeeper客户端工具连接到Zookeeper服务,验证集群是否正常工作。 ``` docker run --rm -it --network my-network zookeeper:latest zkCli.sh -server zookeeper:2181 ``` 以上就是在Docker Swarm集群中部署Zookeeper集群的详细步骤。通过Docker Swarm进行集群化部署,可以方便地扩展和管理Zookeeper服务,以及提高服务的可靠性和稳定性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值