当前位置:   article > 正文

docker快速搭建kafka集群_docker kafka集群

docker kafka集群

一、准备工作

1、拉取kafka镜像

  1. docker pull wurstmeister/kafka
  2. docker tag docker.io/wurstmeister/kafka kafka
  3. docker rmi docker.io/wurstmeister/kafka

2、拉取kafka可视化管理工具镜像

  1. docker pull sheepkiller/kafka-manager
  2. docker tag docker.io/sheepkiller/kafka-manager kafka-manager
  3. docker rmi docker.io/sheepkiller/kafka-manager

3、安装docker-compose工具

  1. # 升级 pip
  2. pip3 install --upgrade pip
  3. # 指定 docker-compose 版本安装
  4. pip install docker-compose==1.22
  5. # 验证是否安装成功,有返回值,说明安装成功
  6. docker-compose -v

4、创建相关文件夹

  1. mkdir -p /data/docker-compose/kafka
  2. mkdir -p /data/docker-data/kafka

5、创建网络,用于kafka和zookeeper共享一个网络段

docker network create --driver bridge zookeeper_kafka_net

6、构建zookeeper集群

kafka集群需要用到zookeeper集群,因此需要先构建zookeeper集群,请查看文章

docker快速搭建zookeeper集群

 

二、使用docker-compose编排kafka集群

1、创建docker-compose.yml

  1. cd /data/docker-compose/kafka
  2. vi docker-compose.yml
  3. version: '3'
  4. services:
  5. kafka1:
  6. image: kafka
  7. restart: always
  8. container_name: kafka1
  9. hostname: kafka1
  10. ports:
  11. - 9091:9092
  12. environment:
  13. KAFKA_BROKER_ID: 1
  14. KAFKA_ADVERTISED_HOST_NAME: kafka1
  15. KAFKA_ADVERTISED_PORT: 9091
  16. KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://192.168.78.200:9091
  17. KAFKA_ZOOKEEPER_CONNECT: zoo1:2181,zoo2:2181,zoo3:2181
  18. volumes:
  19. - /data/docker-data/kafka1/docker.sock:/var/run/docker.sock
  20. - /data/docker-data/kafka1/data:/kafka
  21. external_links:
  22. - zoo1
  23. - zoo2
  24. - zoo3
  25. kafka2:
  26. image: kafka
  27. restart: always
  28. container_name: kafka2
  29. hostname: kafka2
  30. ports:
  31. - 9092:9092
  32. environment:
  33. KAFKA_BROKER_ID: 2
  34. KAFKA_ADVERTISED_HOST_NAME: kafka2
  35. KAFKA_ADVERTISED_PORT: 9092
  36. KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://192.168.78.200:9092
  37. KAFKA_ZOOKEEPER_CONNECT: zoo1:2181,zoo2:2181,zoo3:2181
  38. volumes:
  39. - /data/docker-data/kafka2/docker.sock:/var/run/docker.sock
  40. - /data/docker-data/kafka2/data:/kafka
  41. external_links:
  42. - zoo1
  43. - zoo2
  44. - zoo3
  45. kafka3:
  46. image: kafka
  47. restart: always
  48. container_name: kafka3
  49. hostname: kafka3
  50. ports:
  51. - 9093:9092
  52. environment:
  53. KAFKA_BROKER_ID: 3
  54. KAFKA_ADVERTISED_HOST_NAME: kafka3
  55. KAFKA_ADVERTISED_PORT: 9093
  56. KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://192.168.78.200:9093
  57. KAFKA_ZOOKEEPER_CONNECT: zoo1:2181,zoo2:2181,zoo3:2181
  58. volumes:
  59. - /data/docker-data/kafka3/docker.sock:/var/run/docker.sock
  60. - /data/docker-data/kafka3/data:/kafka
  61. external_links:
  62. - zoo1
  63. - zoo2
  64. - zoo3
  65. kafka-manager:
  66. image: kafka-manager
  67. restart: always
  68. container_name: kafka-manager
  69. hostname: kafka-manager
  70. ports:
  71. - 9010:9000
  72. links:
  73. - kafka1
  74. - kafka2
  75. - kafka3
  76. external_links:
  77. - zoo1
  78. - zoo2
  79. - zoo3
  80. environment:
  81. ZK_HOSTS: zoo1:2181,zoo2:2181,zoo3:2181

注:links是引入当前docker-compose内部的service,external_links 引入的是当前docker-compose外部的service

2、执行构建

docker-compose up -d

3、将所有kafka和zookeeper加入一个网络

  1. docker network connect zookeeper_kafka_net zoo1
  2. docker network connect zookeeper_kafka_net zoo2
  3. docker network connect zookeeper_kafka_net zoo3
  4. docker network connect zookeeper_kafka_net kafka1
  5. docker network connect zookeeper_kafka_net kafka2
  6. docker network connect zookeeper_kafka_net kafka3
  7. docker network connect zookeeper_kafka_net kafka-manager

之所以这样指定网络而不是在编排文件中指定网络为一个网络段的原因是因为考虑到后面可能kafka和zookeeper分布在6台机器上,到时使用docker swarm构建docker 集群,网络处理就很方便,不用修改编排文件

4、重启这组服务

因为为每台容器都新增了一个网络,如果不重启,容器用的还是之前的网络,就会导致kafka和kafka-manager是ping不通zookeeper的三个容器的

docker-compose restart

 

三、验证结果

浏览器访问kafka-manager管理界面

192.168.78.200:9010

说明kafka集群构建好了,并且kafka集群已经完成了和zookeeper集群的互通

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/木道寻08/article/detail/897803?site
推荐阅读
相关标签
  

闽ICP备14008679号