(六)史上最强ELK集群搭建系列教程——kafka集群搭建

13 篇文章 7 订阅
9 篇文章 1 订阅

前言

本小节是我们关于kafka集群搭建的系列教程,也是我们前面设计的整个ELK架构方案中的重要组成部分。由于kafka集群是依赖zookeeper实现通信的,我们也需要搭建一套zookeeper集群,本节中我们依旧采用docker-compose的方式搭建我们的kafka集群,同时为了便于管理我们的kafka集群,我们也会安装俩个辅助的工具管理、监控我们的kafka集群,分别为kafka-manager与kafka-offset-monitor,话不多说,开始我们的正文。

正文

  • 拉取镜像:

命令:docker pull <镜像>:<版本号>

  • docker-compose启动容器超时

在使用docker-compose启动多个容器时,在其默认的启动时间60s内无法全部启动完成,容器就会整个启动失败。这里我们将此参数调大到1000s。使用vi编辑器修改系统变量文件/etc/profile,在文件的末尾添加俩个参数,然后更新系统参数,使新添加的参数配置生效。

export DOCKER_CLIENT_TIMEOUT=1000  
export COMPOSE_HTTP_TIMEOUT=1000

  • 创建kafka-cluster.yml启动脚本
#kafka-cluster.yml文件
version: '3.1'
 
services:
  #zk集群
  zk1:
    image: zookeeper:3.7.0
    restart: always
    container_name: elk-cluster-zk1
    hostname: zk1
    ports:
      - 2181:2181
    volumes:
      - "/elk/zookeeper/zk1/data:/data"
      - "/elk/zookeeper/zk1/logs:/datalog"
    environment:
      ZOO_MY_ID: 1
      ZOO_SERVERS: server.1=0.0.0.0:2888:3888;2181 server.2=zk2:2888:3888;2181 server.3=zk3:2888:3888;2181  
  zk2:
    image: zookeeper:3.7.0
    restart: always
    container_name: elk-cluster-zk2
    hostname: zk2
    ports:
      - 2182:2181
    volumes:
      - "/elk/zookeeper/zk2/data:/data"
      - "/elk/zookeeper/zk2/logs:/datalog"
    environment:
      ZOO_MY_ID: 2
      ZOO_SERVERS: server.1=zk1:2888:3888;2181 server.2=0.0.0.0:2888:3888;2181 server.3=zk3:2888:3888;2181
  zk3:
    image: zookeeper:3.7.0
    restart: always
    container_name: elk-cluster-zk3
    hostname: zk3
    ports:
      - 2183:2181
    volumes:
      - "/elk/zookeeper/zk3/data:/data"
      - "/elk/zookeeper/zk3/logs:/datalog"
    environment:
      ZOO_MY_ID: 3
      ZOO_SERVERS: server.1=zk1:2888:3888;2181 server.2=zk2:2888:3888;2181 server.3=0.0.0.0:2888:3888;2181
  #kafka集群
  kafka1:
    image: wurstmeister/kafka:2.13-2.7.0
    restart: always
    container_name: elk-cluster-kafka1
    hostname: kafka1
    ports:
      - "9091:9092"
      - "9991:9991"
    depends_on:
      - zk1
      - zk2
      - zk3
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_ADVERTISED_HOST_NAME: kafka1
      KAFKA_ADVERTISED_PORT: 9091
      KAFKA_HOST_NAME: kafka1
      KAFKA_ZOOKEEPER_CONNECT: zk1:2181,zk2:2181,zk3:2181
      KAFKA_LISTENERS: PLAINTEXT://kafka1:9092
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://192.168.23.134:9091
      JMX_PORT: 9991
      KAFKA_JMX_OPTS: "-Djava.rmi.server.hostname=kafka1 -Dcom.sun.management.jmxremote.port=9991 -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.managementote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
    volumes:
      - "/elk/kafka/kafka1/:/kafka"
  kafka2:
    image: wurstmeister/kafka:2.13-2.7.0
    restart: always
    container_name: elk-cluster-kafka2
    hostname: kafka2
    ports:
      - "9092:9092"
      - "9992:9992"
    depends_on:
      - zk1
      - zk2
      - zk3
    environment:
      KAFKA_BROKER_ID: 2
      KAFKA_ADVERTISED_HOST_NAME: kafka2
      KAFKA_ADVERTISED_PORT: 9092
      KAFKA_HOST_NAME: kafka2
      KAFKA_ZOOKEEPER_CONNECT: zk1:2181,zk2:2181,zk3:2181
      KAFKA_LISTENERS: PLAINTEXT://kafka2:9092
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://192.168.23.134:9092
      JMX_PORT: 9992
      KAFKA_JMX_OPTS: "-Djava.rmi.server.hostname=kafka2 -Dcom.sun.management.jmxremote.port=9992 -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.managementote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
    volumes:
      - "/elk/kafka/kafka2/:/kafka"
  kafka3:
    image: wurstmeister/kafka:2.13-2.7.0
    restart: always
    container_name: elk-cluster-kafka3
    hostname: kafka3
    ports:
      - "9093:9092"
      - "9993:9993"
    depends_on:
      - zk1
      - zk2
      - zk3
    environment:
      KAFKA_BROKER_ID: 3
      KAFKA_ADVERTISED_HOST_NAME: kafka3
      KAFKA_ADVERTISED_PORT: 9093
      KAFKA_HOST_NAME: kafka3
      KAFKA_ZOOKEEPER_CONNECT: zk1:2181,zk2:2181,zk3:2181
      KAFKA_LISTENERS: PLAINTEXT://kafka3:9092
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://192.168.23.134:9093
      JMX_PORT: 9993
      KAFKA_JMX_OPTS: "-Djava.rmi.server.hostname=kafka3 -Dcom.sun.management.jmxremote.port=9993 -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.managementote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
    volumes:
      - "/elk/kafka/kafka3/:/kafka"
  #kafka管理工具
  'kafka-manager':
    container_name: kafka-manager
    image: sheepkiller/kafka-manager:stable
    restart: always
    ports:
      - 9000:9000
    depends_on:
      - kafka1
      - kafka2
      - kafka3
    environment:
      KM_VERSION: 1.3.3.18
      ZK_HOSTS: zk1:2181,zk2:2181,zk3:2181
  #kafka监控工具
  'kafka-offset-monitor':
    container_name: kafka-offset-monitor
    image: 564239555/kafkaoffsetmonitor:latest
    restart: always
    volumes:
      - /elk/kafkaoffsetmonitor/conf:/kafkaoffsetmonitor
    ports:
      - 9001:8080
    depends_on:
      - kafka1
      - kafka2
      - kafka3
    environment:
      ZK_HOSTS: zk1:2181,zk2:2181,zk3:2181
      KAFKA_BROKERS: kafka1:9092,kafka2:9092,kafka3:9092
      REFRESH_SECENDS: 10
      RETAIN_DAYS: 2
  • 启动kafka集群

使用vi编辑器创建一个kafka-cluster.yml启动文件,文件内容如上,然后我们根据kafka-cluster.yml文件启动我们的kafka集群。

命令:docker-compose -f kafka-cluster.yml -p kafka up -d

说明:

(1)-f :指定我们的启动文件

(2)-p:指定容器启动的项目目录,如果我们有多个docker-compose启动项目,如果不指定项目目录,会有项目目录冲突的警告

(3)-d:后台启动

  • 验证kafka集群

(1)访问kafka集群管理工具kafka-manager

访问工具kafka-manager地址:http://192.168.23.134:9000,这里可以实现简单的kafka集群管理,进行主题创建等简单操作。我们这里创建一个atp主题,后续通过filebeat将数据收集到atp主题上,然后让logstash消费这些主题信息。

kafka集群管理
标题

(2)访问kafka集群监控工具kafka-offset-monitor

访问http://192.168.23.134:9001/工具kafka-offset-monitor地址,这里可以实现简单的kafka集群监控。

kafka集群监控
标题

结语

ok,到这里我们的kafka集群就搭建好,关于kakfa日志的收集和消费的配置,我们在后续的章节中会详细介绍。下期见咯。。。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
下面是 ELK 集群搭建的详细文档: 1. 安装 Java:ELK 需要 Java 环境支持,因此需要先安装 Java。推荐使用 OpenJDK 8。 2. 安装 Elasticsearch:可以从 Elasticsearch 官网下载最新版本的 Elasticsearch,然后解压缩到指定目录。安装好 Elasticsearch 后,需要在 `elasticsearch.yml` 文件中进行配置,如设置节点名称、集群名称、数据目录等。 3. 安装 Logstash:可以从 Logstash 官网下载最新版本的 Logstash,然后解压缩到指定目录。安装好 Logstash 后,需要在 `logstash.yml` 文件中进行配置,如设置节点名称、集群名称、数据目录等。 4. 安装 Kibana:可以从 Kibana 官网下载最新版本的 Kibana,然后解压缩到指定目录。安装好 Kibana 后,需要在 `kibana.yml` 文件中进行配置,如设置 Elasticsearch 地址、端口号等。 5. 配置 Elasticsearch 集群:在 Elasticsearch 集群中,需要配置节点之间的通信方式、集群名称、节点名称等。可以在 `elasticsearch.yml` 文件中进行配置。 6. 配置 Logstash 集群:在 Logstash 集群中,需要配置节点之间的通信方式、集群名称、节点名称等。可以在 `logstash.yml` 文件中进行配置。 7. 配置 Kibana:在 Kibana 中,需要配置 Elasticsearch 的地址、端口号等信息。可以在 `kibana.yml` 文件中进行配置。 8. 启动 Elasticsearch 集群:在 Elasticsearch 集群中,可以通过 `bin/elasticsearch` 命令启动 Elasticsearch。启动后,可以通过 `curl -X GET 'http://localhost:9200/_cluster/health?pretty'` 命令查看集群健康状态。 9. 启动 Logstash 集群:在 Logstash 集群中,可以通过 `bin/logstash -f <config-file>` 命令启动 Logstash。其中,`<config-file>` 是 Logstash 配置文件的路径。 10. 启动 Kibana:在 Kibana 中,可以通过 `bin/kibana` 命令启动 Kibana。启动后,可以通过浏览器访问 Kibana 的 Web 界面。 11. 验证集群:可以通过在 Kibana 中创建索引、搜索数据等方式来验证 ELK 集群是否正常工作。 以上是 ELK 集群搭建的大致步骤和注意事项,具体操作需要根据实际情况进行调整和修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

厉害哥哥吖

您的支持是我创作下去的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值