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 ...
随机推荐
- [Python基础]Python中remove,del和pop的区别
以a=[1,2,3] 为例,似乎使用del, remove, pop一个元素2 之后 a都是为 [1,3], 如下:http://Novell.Me >>> a=[1,2,3] &g ...
- c配置库ccl使用小结
配置文件为key=value键值对形式 下载与安装 库文件下载:ccl-0.1.1.tar.gz 安装: tar -zxvf ccl-0.1.1.tar.gz cd ccl-0.1.1 ./con ...
- ci框架简单出现的错误[Undefined property: MContacts::$db]
出现这样的错误时说明自己忘记加载数据库了, application/config/aotuload.php $autoload['libraries'] = array('database') ...
- 使用PULL解析XML文件
转载博文1:http://blog.csdn.net/wangkuifeng0118/article/details/7313241 XmlPull和Sax类似,是基于流(stream)操作文件,然后 ...
- 在MVC设计模式中,JavaBean的作用是。(选择1项)
A.Controller B.Model C.业务数据的封装 D.View 解答:B
- joomla对象注入漏洞分析
0x00 漏洞简单介绍 jooomla 1.5 到 3.4.5 的全部版本号中存在反序列化对象造成对象注入的漏洞,漏洞利用无须登录,直接在前台就可以运行随意PHP代码. Joomla 安全团队紧急公布 ...
- C++之类模板
C++之类模板 代码如下: C++ Code 123456789101112131415161718192021222324252627282930313233343536373839404142 ...
- matplotlib库解析
matplotlib 是python最著名的2D绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地进行制图.而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中.通过简单的绘图语 ...
- GCC命令基础
gcc命令使用GNU推出的基于C/C++的编译器,是开放源代码领域应用最广泛的编译器,具有功能强大,编译代码支持性能优化等特点, 现在很多程序员都应用GCC,怎样才能更好的应用GCC. 目前,GCC可 ...
- galera安装之编译安装xtrabackup 2.2.11
----1.编译安装percona-xtrabackup yum -y install cmake gcc gcc-c++ libaio libaio-devel automake autoconf ...