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,及其遇到的问题和解决的更多相关文章

  1. 使用Docker Compose部署基于Sentinel的高可用Redis集群

    使用Docker Compose部署基于Sentinel的高可用Redis集群 https://yq.aliyun.com/articles/57953 Docker系列之(五):使用Docker C ...

  2. 基于Docker Compose部署分布式MinIO集群

    一.概述 Minio 是一个基于Go语言的对象存储服务.它实现了大部分亚马逊S3云存储服务接口,可以看做是是S3的开源版本,非常适合于存储大容量非结构化的数据,例如图片.视频.日志文件.备份数据和容器 ...

  3. Docker Compose 部署 Redis 及原理讲解 | 懒人屋

    原文:Docker Compose 部署 Redis 及原理讲解 | 懒人屋 Docker Compose 部署 Redis 及原理讲解  4.4k  字    16  分钟    2019-10-1 ...

  4. Docker Compose 部署前后端分离应用

    部署前后端分离应用 容器化 Abp 应用 关于 Abp 应用的容器化,其实和普通的 ASP.NET Core 应用差不多,大家可以参考我此前的文章. 唯一需要注意的是:因为 Abp 解决方案中有多个项 ...

  5. Docker Compose部署项目到容器-基于Tomcat和mysql的项目yml配置文件代码

    场景 Docker-Compose简介与Ubuntu Server 上安装Compose: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...

  6. 在Windows Server 2019通过Docker Compose部署Asp.Net Core

    一.安装Docker Enterprise 安装文档是: https://docs.docker.com/install/windows/docker-ee/ 安装完成后,如下图 二.首先,拉取一个W ...

  7. 使用Docker Compose 部署Nexus后初次登录账号密码不正确,并且在nexus-data下没有admin,password

    场景 Ubuntu Server 上使用Docker Compose 部署Nexus(图文教程): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/ ...

  8. Ubuntu Server 上使用Docker Compose 部署Nexus(图文教程)

    场景 Docker-Compose简介与Ubuntu Server 上安装Compose: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...

  9. Docker Compose部署Nexus3时的docker-compose,yml代码

    场景 Docker-Compose简介与Ubuntu Server 上安装Compose: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...

  10. Docker Compose部署GitLab服务,搭建自己的代码托管平台(图文教程)

    场景 Docker-Compose简介与Ubuntu Server 上安装Compose: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...

随机推荐

  1. linux - fpga-framebuff驱动

    * linux/drivers/video/fpga_fb.c --fpga graphics adaptor frame buffer device *  Created 16 Sep2011 *  ...

  2. PHP libevent扩展安装

    libevent是一个基于事件驱动的高性能网络库.支持多种 I/O 多路复用技术, epoll. poll. dev/poll. select 和 kqueue 等:支持 I/O,定时器和信号等事件: ...

  3. VisualStudio快捷键

    ctrl+k,c 注释选中行 ctrl+k,u 取消对选中行的注释 CTRL + SHIFT + B:生成解决方案 CTRL + F7 :生成编译 CTRL + O :打开文件 CTRL + SHIF ...

  4. mapreduce程序调用各个类的功能

    转自:http://www.cnblogs.com/z1987/p/5052409.html 1.map类 map类继承了库类中的Mapper,即Mapper<KEYIN, VALUEIN, K ...

  5. 【BZOJ】1629: [Usaco2007 Demo]Cow Acrobats(贪心+排序)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1629 这题我想了很久都没想出来啊... 其实任意两头相邻的牛交换顺序对其它牛是没有影响的.. 那么我 ...

  6. jquery ajax 的用法

    jquery的ajax请求的主要参数 beforeSend:发送ajax请求之前 success:发送ajax请求成功 error:发送ajax请求错误,通常是网络失去连接.服务器出错.后台方法错误等 ...

  7. jdk 配置时时区设置

    在eclipse中的 Default VM Arguments:添加 -Duser.timezone=Aisa/Shanghai

  8. springframework resource

    文件资源操作     Spring 定义了一个 org.springframework.core.io.Resource 接口,Resource 接口是为了统一各种类型不同的资源而定义的,Spring ...

  9. ios开发之--swift下Alamofire的使用

    1,首先使用cocoapods导入,如果有不会的同学,可以去看我写的关于cocopods使用的那篇博客 2,直接上代码: a 先看下文件结构 CommonFile.swift import UIKit ...

  10. 创建4个线程,两个对j加一,两个对j减一(j两同两内)

    package multithread; public class MyThread { //j变量私有 private int j; //同步的+1方法 private synchronized v ...