docker-compose部署zk集群、kafka集群以及kafka-manager,及其遇到的问题和解决
zk集群docker-compose.yml
1、新建网络
- docker network create --driver bridge --subnet 172.23.0.0/ --gateway 172.23.0.1 zookeeper_network
2、zk集群
- version: '3.4'
- services:
- zoo1:
- image: zookeeper
- restart: always
- hostname: zoo1
- container_name: zoo1
- ports:
- - :
- volumes:
- - "./zoo1/data:/data"
- - "./zoo1/datalog:/datalog"
- environment:
- ZOO_MY_ID:
- ZOO_SERVERS: server.=0.0.0.0:: server.=zoo2:: server.=zoo3::
- networks:
- default:
- ipv4_address: 172.23.0.11
- zoo2:
- image: zookeeper
- restart: always
- hostname: zoo2
- container_name: zoo2
- ports:
- - :
- volumes:
- - "./zoo2/data:/data"
- - "./zoo2/datalog:/datalog"
- environment:
- ZOO_MY_ID:
- ZOO_SERVERS: server.=zoo1:: server.=0.0.0.0:: server.=zoo3::
- networks:
- default:
- ipv4_address: 172.23.0.12
- zoo3:
- image: zookeeper
- restart: always
- hostname: zoo3
- container_name: zoo3
- ports:
- - :
- volumes:
- - "./zoo3/data:/data"
- - "./zoo3/datalog:/datalog"
- environment:
- ZOO_MY_ID:
- ZOO_SERVERS: server.=zoo1:: server.=zoo2:: server.=0.0.0.0::
- networks:
- default:
- ipv4_address: 172.23.0.13
- networks:
- default:
- external:
- name: zookeeper_network
3、kafka集群以及kafka-manager
- version: ''
- services:
- kafka1:
- image: wurstmeister/kafka
- restart: always
- hostname: kafka1
- container_name: kafka1
- ports:
- - "9092:9092"
- environment:
- KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://192.168.0.6:9092
- KAFKA_ADVERTISED_HOST_NAME: 192.168.0.6
- KAFKA_ADVERTISED_PORT:
- KAFKA_ZOOKEEPER_CONNECT: zoo1:,zoo2:,zoo3:
- JMX_PORT:
- volumes:
- - ./kafka1/logs:/kafka
- external_links:
- - zoo1
- - zoo2
- - zoo3
- networks:
- default:
- ipv4_address: 172.23.0.14
- kafka2:
- image: wurstmeister/kafka
- restart: always
- hostname: kafka2
- container_name: kafka2
- ports:
- - "9093:9092"
- environment:
- KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://192.168.0.6:9093
- KAFKA_ADVERTISED_HOST_NAME: 192.168.0.6
- KAFKA_ADVERTISED_PORT:
- KAFKA_ZOOKEEPER_CONNECT: zoo1:,zoo2:,zoo3:
- JMX_PORT:
- volumes:
- - ./kafka2/logs:/kafka
- external_links: # 连接本compose文件以外的container
- - zoo1
- - zoo2
- - zoo3
- networks:
- default:
- ipv4_address: 172.23.0.15
- kafka3:
- image: wurstmeister/kafka
- restart: always
- hostname: kafka3
- container_name: kafka3
- ports:
- - "9094:9092"
- environment:
- KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://192.168.0.6:9094
- KAFKA_ADVERTISED_HOST_NAME: 192.168.0.6
- KAFKA_ADVERTISED_PORT:
- KAFKA_ZOOKEEPER_CONNECT: zoo1:,zoo2:,zoo3:
- JMX_PORT:
- volumes:
- - ./kafka3/logs:/kafka
- external_links: # 连接本compose文件以外的container
- - zoo1
- - zoo2
- - zoo3
- networks:
- default:
- ipv4_address: 172.23.0.16
- kafka-manager:
- image: sheepkiller/kafka-manager:latest
- restart: always
- container_name: kafa-manager
- hostname: kafka-manager
- ports:
- - "9002:9000"
- links: # 连接本compose文件创建的container
- - kafka1
- - kafka2
- - kafka3
- external_links: # 连接本compose文件以外的container
- - zoo1
- - zoo2
- - zoo3
- environment:
- ZK_HOSTS: zoo1:,zoo2:,zoo3:
- KAFKA_BROKERS: kafka1:,kafka2:,kafka3:
- APPLICATION_SECRET: letmein
- KM_ARGS: -Djava.net.preferIPv4Stack=true
- networks:
- default:
- ipv4_address: 172.23.0.10
- networks:
- default:
- external: # 使用已创建的网络
- name: zookeeper_network
错误:
1、kafka使用external_links仍连不上zookeeper
- INFO Opening socket connection to server zk2.zookeeper_default/172.22.0.3:. Will not attempt to authenticate using SASL (unknown error) (org.apache.zookeeper.ClientCnxn)
- docker-kafka | [-- ::,] WARN Session 0x0 for server null, unexpected error, closing socket connection and attempting reconnect (org.apache.zookeeper.ClientCnxn)
- docker-kafka | java.net.ConnectException: Connection refused
- docker-kafka | at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
- docker-kafka | at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:)
- docker-kafka | at org.apache.zookeeper.ClientCnxnSocketNIO.doTransport(ClientCnxnSocketNIO.java:)
- docker-kafka | at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:)
- docker-kafka | [-- ::,] INFO Opening socket connection to server zk3.zookeeper_default/172.22.0.2:. Will not attempt to authenticate using SASL (unknown error) (org.apache.zookeeper.ClientCnxn)
解决办法:
两个docker-compose使用相同的网络
2、kafka节点相互连不上
- kafka3 | [-- ::,] WARN [Controller id=, targetBrokerId=] Connection to node could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)
- kafka3 | [-- ::,] WARN [Controller id=, targetBrokerId=] Connection to node could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)
- kafka3 | [-- ::,] WARN [Controller id=, targetBrokerId=] Connection to node could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)
找了挺多靠谱和不靠谱的解决方案,都没能解决问题,但也给我提示。
这个问题无非就是kafka集群,这里是通过宿主机连接节点的,
- KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka3:9094
- KAFKA_ADVERTISED_HOST_NAME: kafka3
- 这两个配置可以配置宿主机的IP或者容器的hostname都可,但是有两点:1、端口需要暴露出来 2、并且可以通过宿主机访问进去
我是第二点被坑了,fire-wall开发端口,就没有上面这个错误了。
3、kafka-manager报jmx相关错误
然后点击链接开启jmx
于是就出现下面的错误
- [error] k.m.j.KafkaJMX$ - Failed to connect to service:jmx:rmi:///jndi/rmi://9.11.8.48:-1/jmxrmi java.lang.IllegalArgumentException: requirement failed: No jmx port but jmx polling enabled!
解决办法是:
在每一个kafka节点加上环境变量 JMX_PORT=端口
加上之后发现连不上,又是网络连接的问题,于是又把每个jmx端口暴露出来,然后fire-wall放行, 解决问题。
- KAFKA_ADVERTISED_HOST_NAME:
- 这个最好设置宿主机的ip,宿主机以外的代码或者工具来连接,后面的端口也需要设置暴露的端口。
docker-compose部署zk集群、kafka集群以及kafka-manager,及其遇到的问题和解决的更多相关文章
- 使用Docker Compose部署基于Sentinel的高可用Redis集群
使用Docker Compose部署基于Sentinel的高可用Redis集群 https://yq.aliyun.com/articles/57953 Docker系列之(五):使用Docker C ...
- 基于Docker Compose部署分布式MinIO集群
一.概述 Minio 是一个基于Go语言的对象存储服务.它实现了大部分亚马逊S3云存储服务接口,可以看做是是S3的开源版本,非常适合于存储大容量非结构化的数据,例如图片.视频.日志文件.备份数据和容器 ...
- Docker Compose 部署 Redis 及原理讲解 | 懒人屋
原文:Docker Compose 部署 Redis 及原理讲解 | 懒人屋 Docker Compose 部署 Redis 及原理讲解 4.4k 字 16 分钟 2019-10-1 ...
- Docker Compose 部署前后端分离应用
部署前后端分离应用 容器化 Abp 应用 关于 Abp 应用的容器化,其实和普通的 ASP.NET Core 应用差不多,大家可以参考我此前的文章. 唯一需要注意的是:因为 Abp 解决方案中有多个项 ...
- Docker Compose部署项目到容器-基于Tomcat和mysql的项目yml配置文件代码
场景 Docker-Compose简介与Ubuntu Server 上安装Compose: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...
- 在Windows Server 2019通过Docker Compose部署Asp.Net Core
一.安装Docker Enterprise 安装文档是: https://docs.docker.com/install/windows/docker-ee/ 安装完成后,如下图 二.首先,拉取一个W ...
- 使用Docker Compose 部署Nexus后初次登录账号密码不正确,并且在nexus-data下没有admin,password
场景 Ubuntu Server 上使用Docker Compose 部署Nexus(图文教程): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/ ...
- Ubuntu Server 上使用Docker Compose 部署Nexus(图文教程)
场景 Docker-Compose简介与Ubuntu Server 上安装Compose: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...
- Docker Compose部署Nexus3时的docker-compose,yml代码
场景 Docker-Compose简介与Ubuntu Server 上安装Compose: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...
- Docker Compose部署GitLab服务,搭建自己的代码托管平台(图文教程)
场景 Docker-Compose简介与Ubuntu Server 上安装Compose: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...
随机推荐
- JavaScript 框架 jQuery 的下载和安装
jQuery 简介: jQuery 是一个 JavaScript 库. jQuery 极大地简化了 JavaScript 编程. jQuery 很容易学习. jQuery 下载: // 官网: htt ...
- sort-uniq-cut-join命令练习
[root@linux Desktop]# cat> fruits.txt banana orange persimmon %%banana apple ORAGE cat> fruits ...
- window.parent.document解决原生js或jQuery 实现父窗口的问题
做WEB前端开发的过程中,经常会有这样的需求,用户点击[编辑]按钮,弹出一个对话框,在里边修改相应的值,然后把修改后的值显示在原页面,最后点击保存. 用window.parent.document.g ...
- Toad 补充与培训 & 常用菜单
Toad 常用菜单 新版本 toad 软件中, 比较有用的菜单 (toad10.6 版本) 下边菜单, 在日常工作中出现过的, 显示为 粉色 , 蓝色 表示次一级的重要 session 菜单 new ...
- 对session的操作
request.getSession().removeAttribute("amount");request.getSession().setAttribute("amo ...
- HTML和CSS的盒子模型(Box model)
本文作为属性篇的最后一篇文章, 将讲述HTML和CSS的关键—盒子模型(Box model). 理解Box model的关键便是margin和padding属性, 而正确理解这两个属性也是学习用css ...
- 001servlet的基本知识
servlet的知识: l 1. servlet概念及相关接口简介 l 2. servet 执行过程 l 3. servlet路径映射 l 4. 缺省servlet --应用 ...
- Git神器sourceTreesetup,让你的git效率迅速提升
image.png 小编之前在简书和公众号发不过idea如何git clone,git add,创建分支,创建码云的操作idea和Webstorm上使用git和github,码云最近又找到一款git神 ...
- jquery合并表格中相同文本的相邻单元格
<!DOCTYPE HTML> <html> <head> <title>Example</title> <meta char ...
- 配置gosublime
Installation Sublime Package Control allows you to easily install or remove GoSublime (and many othe ...