• 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集群已经完成了和zookeeper集群的互通

     

  • 相关阅读:
    Idea 启动报错 failed to create jvm:jvm path url
    效率倍增啊,20个面向数据科学家的自动机器学习(AutoML)库来了
    药物研发---信息部门考核办法
    网卡介绍篇
    黑豹程序员-页面录音-在vue页面中进行录音wav/mp3
    Django爬虫:如何处理超过重试次数的请求以保障数据完整性
    Java进阶3 - 易错知识点整理(待更新)
    Vue-dvadmin-d2-crud-plus-常用配置-row-handle-columns-options
    Python——序列
    机器学习 - 常见问题与解决方案
  • 原文地址:https://blog.csdn.net/qq_27229113/article/details/126015972