zk集群docker-compose.yml

1、新建网络

  1. docker network create --driver bridge --subnet 172.23.0.0/ --gateway 172.23.0.1 zookeeper_network

2、zk集群

  1. version: '3.4'
  2.  
  3. services:
  4. zoo1:
  5. image: zookeeper
  6. restart: always
  7. hostname: zoo1
  8. container_name: zoo1
  9. ports:
  10. - :
  11. volumes:
  12. - "./zoo1/data:/data"
  13. - "./zoo1/datalog:/datalog"
  14. environment:
  15. ZOO_MY_ID:
  16. ZOO_SERVERS: server.=0.0.0.0:: server.=zoo2:: server.=zoo3::
  17. networks:
  18. default:
  19. ipv4_address: 172.23.0.11
  20.  
  21. zoo2:
  22. image: zookeeper
  23. restart: always
  24. hostname: zoo2
  25. container_name: zoo2
  26. ports:
  27. - :
  28. volumes:
  29. - "./zoo2/data:/data"
  30. - "./zoo2/datalog:/datalog"
  31. environment:
  32. ZOO_MY_ID:
  33. ZOO_SERVERS: server.=zoo1:: server.=0.0.0.0:: server.=zoo3::
  34. networks:
  35. default:
  36. ipv4_address: 172.23.0.12
  37.  
  38. zoo3:
  39. image: zookeeper
  40. restart: always
  41. hostname: zoo3
  42. container_name: zoo3
  43. ports:
  44. - :
  45. volumes:
  46. - "./zoo3/data:/data"
  47. - "./zoo3/datalog:/datalog"
  48. environment:
  49. ZOO_MY_ID:
  50. ZOO_SERVERS: server.=zoo1:: server.=zoo2:: server.=0.0.0.0::
  51. networks:
  52. default:
  53. ipv4_address: 172.23.0.13
  54.  
  55. networks:
  56. default:
  57. external:
  58. name: zookeeper_network

3、kafka集群以及kafka-manager

  1. version: ''
  2.  
  3. services:
  4. kafka1:
  5. image: wurstmeister/kafka
  6. restart: always
  7. hostname: kafka1
  8. container_name: kafka1
  9. ports:
  10. - "9092:9092"
  11. environment:
  12. KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://192.168.0.6:9092
  13. KAFKA_ADVERTISED_HOST_NAME: 192.168.0.6
  14. KAFKA_ADVERTISED_PORT:
  15. KAFKA_ZOOKEEPER_CONNECT: zoo1:,zoo2:,zoo3:
  16. JMX_PORT:
  17. volumes:
  18. - ./kafka1/logs:/kafka
  19. external_links:
  20. - zoo1
  21. - zoo2
  22. - zoo3
  23. networks:
  24. default:
  25. ipv4_address: 172.23.0.14
  26.  
  27. kafka2:
  28. image: wurstmeister/kafka
  29. restart: always
  30. hostname: kafka2
  31. container_name: kafka2
  32. ports:
  33. - "9093:9092"
  34. environment:
  35. KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://192.168.0.6:9093
  36. KAFKA_ADVERTISED_HOST_NAME: 192.168.0.6
  37. KAFKA_ADVERTISED_PORT:
  38. KAFKA_ZOOKEEPER_CONNECT: zoo1:,zoo2:,zoo3:
  39. JMX_PORT:
  40. volumes:
  41. - ./kafka2/logs:/kafka
  42. external_links: # 连接本compose文件以外的container
  43. - zoo1
  44. - zoo2
  45. - zoo3
  46. networks:
  47. default:
  48. ipv4_address: 172.23.0.15
  49.  
  50. kafka3:
  51. image: wurstmeister/kafka
  52. restart: always
  53. hostname: kafka3
  54. container_name: kafka3
  55. ports:
  56. - "9094:9092"
  57. environment:
  58. KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://192.168.0.6:9094
  59. KAFKA_ADVERTISED_HOST_NAME: 192.168.0.6
  60. KAFKA_ADVERTISED_PORT:
  61. KAFKA_ZOOKEEPER_CONNECT: zoo1:,zoo2:,zoo3:
  62. JMX_PORT:
  63. volumes:
  64. - ./kafka3/logs:/kafka
  65. external_links: # 连接本compose文件以外的container
  66. - zoo1
  67. - zoo2
  68. - zoo3
  69. networks:
  70. default:
  71. ipv4_address: 172.23.0.16
  72.  
  73. kafka-manager:
  74. image: sheepkiller/kafka-manager:latest
  75. restart: always
  76. container_name: kafa-manager
  77. hostname: kafka-manager
  78. ports:
  79. - "9002:9000"
  80. links: # 连接本compose文件创建的container
  81. - kafka1
  82. - kafka2
  83. - kafka3
  84. external_links: # 连接本compose文件以外的container
  85. - zoo1
  86. - zoo2
  87. - zoo3
  88. environment:
  89. ZK_HOSTS: zoo1:,zoo2:,zoo3:
  90. KAFKA_BROKERS: kafka1:,kafka2:,kafka3:
  91. APPLICATION_SECRET: letmein
  92. KM_ARGS: -Djava.net.preferIPv4Stack=true
  93. networks:
  94. default:
  95. ipv4_address: 172.23.0.10
  96.  
  97. networks:
  98. default:
  99. external: # 使用已创建的网络
  100. name: zookeeper_network

错误:

1、kafka使用external_links仍连不上zookeeper

  1. 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)
  2. docker-kafka | [-- ::,] WARN Session 0x0 for server null, unexpected error, closing socket connection and attempting reconnect (org.apache.zookeeper.ClientCnxn)
  3. docker-kafka | java.net.ConnectException: Connection refused
  4. docker-kafka | at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
  5. docker-kafka | at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:)
  6. docker-kafka | at org.apache.zookeeper.ClientCnxnSocketNIO.doTransport(ClientCnxnSocketNIO.java:)
  7. docker-kafka | at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:)
  8. 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节点相互连不上

  1. kafka3 | [-- ::,] WARN [Controller id=, targetBrokerId=] Connection to node could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)
  2. kafka3 | [-- ::,] WARN [Controller id=, targetBrokerId=] Connection to node could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)
  3. kafka3 | [-- ::,] WARN [Controller id=, targetBrokerId=] Connection to node could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)

找了挺多靠谱和不靠谱的解决方案,都没能解决问题,但也给我提示。

这个问题无非就是kafka集群,这里是通过宿主机连接节点的,

  1. KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka3:9094
  2. KAFKA_ADVERTISED_HOST_NAME: kafka3
  3.  
  4. 这两个配置可以配置宿主机的IP或者容器的hostname都可,但是有两点:1、端口需要暴露出来 2、并且可以通过宿主机访问进去
    我是第二点被坑了,fire-wall开发端口,就没有上面这个错误了。

3、kafka-manager报jmx相关错误

然后点击链接开启jmx

于是就出现下面的错误

  1. [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放行, 解决问题。

  1. KAFKA_ADVERTISED_HOST_NAME:
  2.  
  3. 这个最好设置宿主机的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. JavaScript 框架 jQuery 的下载和安装

    jQuery 简介: jQuery 是一个 JavaScript 库. jQuery 极大地简化了 JavaScript 编程. jQuery 很容易学习. jQuery 下载: // 官网: htt ...

  2. sort-uniq-cut-join命令练习

    [root@linux Desktop]# cat> fruits.txt banana orange persimmon %%banana apple ORAGE cat> fruits ...

  3. window.parent.document解决原生js或jQuery 实现父窗口的问题

    做WEB前端开发的过程中,经常会有这样的需求,用户点击[编辑]按钮,弹出一个对话框,在里边修改相应的值,然后把修改后的值显示在原页面,最后点击保存. 用window.parent.document.g ...

  4. Toad 补充与培训 & 常用菜单

    Toad 常用菜单 新版本 toad 软件中, 比较有用的菜单 (toad10.6 版本) 下边菜单, 在日常工作中出现过的, 显示为 粉色 , 蓝色 表示次一级的重要 session 菜单 new ...

  5. 对session的操作

    request.getSession().removeAttribute("amount");request.getSession().setAttribute("amo ...

  6. HTML和CSS的盒子模型(Box model)

    本文作为属性篇的最后一篇文章, 将讲述HTML和CSS的关键—盒子模型(Box model). 理解Box model的关键便是margin和padding属性, 而正确理解这两个属性也是学习用css ...

  7. 001servlet的基本知识

    servlet的知识: l  1. servlet概念及相关接口简介 l  2. servet 执行过程 l  3. servlet路径映射 l  4. 缺省servlet          --应用 ...

  8. Git神器sourceTreesetup,让你的git效率迅速提升

    image.png 小编之前在简书和公众号发不过idea如何git clone,git add,创建分支,创建码云的操作idea和Webstorm上使用git和github,码云最近又找到一款git神 ...

  9. jquery合并表格中相同文本的相邻单元格

    <!DOCTYPE HTML> <html> <head>   <title>Example</title>   <meta char ...

  10. 配置gosublime

    Installation Sublime Package Control allows you to easily install or remove GoSublime (and many othe ...