当前位置:   article > 正文

基于docker compose 搭建kafka集群_docker-compose部署 kafka:2.13-2.8.1

docker-compose部署 kafka:2.13-2.8.1

新建docker网络

docker network create docker-net --subnet 172.20.10.0/16
docker network ls

集群规划

zook1172.20.10.112184:2181
zook2172.20.10.122185:2181
zook3172.20.10.132186:2181
broker1172.20.10.14内部9091:9091,外部9191:9191
broker2172.20.10.15内部9092:9092,外部9192:9192
broker3172.20.10.16内部9093:9093,外部9193:9193
kafka manager172.20.10.10内部9000:9000,外部9002:9002

新建一个文件夹 在文件夹下面新建文件zk-docker-compose.yml

  1. version: '2'
  2. services:
  3. zook1:
  4. image: zookeeper:latest
  5. #restart: always #自动重新启动
  6. hostname: zook1
  7. container_name: zook1 #容器名称,方便在rancher中显示有意义的名称
  8. ports:
  9. - 2183:2181 #将本容器的zookeeper默认端口号映射出去
  10. volumes: # 挂载数据卷 前面是宿主机即本机的目录位置,后面是docker的目录
  11. - "/Users/konsy/Development/volume/zkcluster/zook1/data:/data"
  12. - "/Users/konsy/Development/volume/zkcluster/zook1/datalog:/datalog"
  13. - "/Users/konsy/Development/volume/zkcluster/zook1/logs:/logs"
  14. environment:
  15. ZOO_MY_ID: 1 #即是zookeeper的节点值,也是kafka的brokerid值
  16. ZOO_SERVERS: server.1=zook1:2888:3888;2181 server.2=zook2:2888:3888;2181 server.3=zook3:2888:3888;2181
  17. networks:
  18. docker-net:
  19. ipv4_address: 172.20.10.11
  20. zook2:
  21. image: zookeeper:latest
  22. #restart: always #自动重新启动
  23. hostname: zook2
  24. container_name: zook2 #容器名称,方便在rancher中显示有意义的名称
  25. ports:
  26. - 2184:2181 #将本容器的zookeeper默认端口号映射出去
  27. volumes:
  28. - "/Users/konsy/Development/volume/zkcluster/zook2/data:/data"
  29. - "/Users/konsy/Development/volume/zkcluster/zook2/datalog:/datalog"
  30. - "/Users/konsy/Development/volume/zkcluster/zook2/logs:/logs"
  31. environment:
  32. ZOO_MY_ID: 2 #即是zookeeper的节点值,也是kafka的brokerid值
  33. ZOO_SERVERS: server.1=zook1:2888:3888;2181 server.2=zook2:2888:3888;2181 server.3=zook3:2888:3888;2181
  34. networks:
  35. docker-net:
  36. ipv4_address: 172.20.10.12
  37. zook3:
  38. image: zookeeper:latest
  39. #restart: always #自动重新启动
  40. hostname: zook3
  41. container_name: zook3 #容器名称,方便在rancher中显示有意义的名称
  42. ports:
  43. - 2185:2181 #将本容器的zookeeper默认端口号映射出去
  44. volumes:
  45. - "/Users/konsy/Development/volume/zkcluster/zook3/data:/data"
  46. - "/Users/konsy/Development/volume/zkcluster/zook3/datalog:/datalog"
  47. - "/Users/konsy/Development/volume/zkcluster/zook3/logs:/logs"
  48. environment:
  49. ZOO_MY_ID: 3 #即是zookeeper的节点值,也是kafka的brokerid值
  50. ZOO_SERVERS: server.1=zook1:2888:3888;2181 server.2=zook2:2888:3888;2181 server.3=zook3:2888:3888;2181
  51. networks:
  52. docker-net:
  53. ipv4_address: 172.20.10.13
  54. networks:
  55. docker-net:
  56. name: docker-net

执行脚本部署zookeeper至Docker:

docker-compose -p zookeeper -f zk-docker-compose.yml up -d

注:在当前目录下执行,如果没有安装docker-compose先去安装docker-compose

Kafka集群安装

新建文件kafka-docker-compose.yml

  1. version: '2'
  2. services:
  3. broker1:
  4. image: docker.io/wurstmeister/kafka
  5. #restart: always #自动重新启动
  6. hostname: broker1
  7. container_name: broker1
  8. ports:
  9. - 9091:9091
  10. - 9191:9191
  11. environment:
  12. KAFKA_BROKER_ID: 1
  13. KAFKA_LISTENERS: INSIDE://:9091,OUTSIDE://:9191
  14. SKAFKA_ADVERTISED_LISTENERS: INSIDE://broker1:9091,OUTSIDE://localhost:9191
  15. KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT
  16. KAFKA_INTER_BROKER_LISTENER_NAME: INSIDE
  17. KAFKA_ZOOKEEPER_CONNECT: zook1:2181,zook2:2181,zook3:2181
  18. ALLOW_PLAINTEXT_LISTENER : 'yes'
  19. JMX_PORT: 9999 #开放JMX监控端口,来监测集群数据
  20. volumes:
  21. - /Users/konsy/Development/volume/kafka/broker1/wurstmeister/kafka:/wurstmeister/kafka
  22. - /Users/konsy/Development/volume/kafka/broker1/kafka:/kafka
  23. external_links:
  24. - zook1
  25. - zook2
  26. - zook3
  27. networks:
  28. docker-net:
  29. ipv4_address: 172.20.10.14
  30. broker2:
  31. image: docker.io/wurstmeister/kafka
  32. #restart: always #自动重新启动
  33. hostname: broker2
  34. container_name: broker2
  35. ports:
  36. - 9092:9092
  37. - 9192:9192
  38. environment:
  39. KAFKA_BROKER_ID: 2
  40. KAFKA_LISTENERS: INSIDE://:9092,OUTSIDE://:9192
  41. KAFKA_ADVERTISED_LISTENERS: INSIDE://broker2:9092,OUTSIDE://localhost:9192
  42. KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT
  43. KAFKA_INTER_BROKER_LISTENER_NAME: INSIDE
  44. KAFKA_ZOOKEEPER_CONNECT: zook1:2181,zook2:2181,zook3:2181
  45. ALLOW_PLAINTEXT_LISTENER : 'yes'
  46. JMX_PORT: 9999 #开放JMX监控端口,来监测集群数据
  47. volumes:
  48. - /Users/konsy/Development/volume/kafka/broker2/wurstmeister/kafka:/wurstmeister/kafka
  49. - /Users/konsy/Development/volume/kafka/broker2/kafka:/kafka
  50. external_links:
  51. - zook1
  52. - zook2
  53. - zook3
  54. networks:
  55. docker-net:
  56. ipv4_address: 172.20.10.15
  57. broker3:
  58. image: docker.io/wurstmeister/kafka
  59. #restart: always #自动重新启动
  60. hostname: broker3
  61. container_name: broker3
  62. ports:
  63. - 9093:9093
  64. - 9193:9193
  65. environment:
  66. KAFKA_BROKER_ID: 3
  67. KAFKA_LISTENERS: INSIDE://:9093,OUTSIDE://:9193
  68. KAFKA_ADVERTISED_LISTENERS: INSIDE://broker3:9093,OUTSIDE://localhost:9193
  69. KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT
  70. KAFKA_INTER_BROKER_LISTENER_NAME: INSIDE
  71. KAFKA_ZOOKEEPER_CONNECT: zook1:2181,zook2:2181,zook3:2181
  72. ALLOW_PLAINTEXT_LISTENER : 'yes'
  73. JMX_PORT: 9999 #开放JMX监控端口,来监测集群数据
  74. volumes:
  75. - /Users/konsy/Development/volume/kafka/broker3/wurstmeister/kafka:/wurstmeister/kafka
  76. - /Users/konsy/Development/volume/kafka/broker3/kafka:/kafka
  77. external_links:
  78. - zook1
  79. - zook2
  80. - zook3
  81. networks:
  82. docker-net:
  83. ipv4_address: 172.20.10.16
  84. networks:
  85. docker-net:
  86. name: docker-net

执行脚本部署zookeeper至Docker:

docker-compose -f kafka-docker-compose.yml up -d

安装kafka-manager

新建文件kafka-manager-docker-compose.yml

  1. version: '2'
  2. services:
  3. kafka-manager:
  4. image: scjtqs/kafka-manager:latest
  5. restart: always
  6. hostname: kafka-manager
  7. container_name: kafka-manager
  8. ports:
  9. - 9000:9002
  10. external_links: # 连接本compose文件以外的container
  11. - zook1
  12. - zook2
  13. - zook3
  14. - broker1
  15. - broker2
  16. - broker3
  17. environment:
  18. ZK_HOSTS: zook1:2181,zook2:2181,zook3:2181
  19. KAFKA_BROKERS: broker1:9091,broker2:9092,broker3:9093
  20. APPLICATION_SECRET: letmein
  21. KM_ARGS: -Djava.net.preferIPv4Stack=true
  22. networks:
  23. docker-net:
  24. ipv4_address: 172.20.10.10
  25. networks:
  26. docker-net:
  27. external:
  28. name: docker-net

执行脚本部署kafka-manager至Docker:

docker-compose -f kafka-manager-docker-compose.yml up -d

配置Cluster

浏览器打开 172.20.10.10:9002

测试kafka

进入kafka容器的命令行:

docker exec -ti broker1 /bin/bash

进入kafka所在目录:

cd opt/kafka_2.13-2.8.1/

创建Replication为2,Partition为2的topic

bin/kafka-topics.sh --create --zookeeper zook1:2181 --replication-factor 2 --partitions 2 --topic partopic

查看topic的状态

在kafka容器中的 opt/kafka_2.12-1.1.0/ 目录下输入

bin/kafka-topics.sh --describe --zookeeper zook1:2181 --topic partopic

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

闽ICP备14008679号