centos中安装kafka(不用docker)
centos中安装kafka概述开始搞事了1.下载2.运行zookeeper3.运行kafka-server4.学会改kafka的conf文件4.1 几个重要的地方要改4.2 建议修改log存放的目录5.配置内外网不同的访问6.kafka-map的运行7.解决kafka服务问题的终极大法7.1 Zookeeper改这个目录然后源目录的文件慢慢研究。或者删掉。7.2 kafka改这个目录原来的可以删除也可以留着慢慢研究。7.3 重启zookeeper和kafka8.报错完整解决InconsistentClusterIdException 集群ID不匹配报错含义步骤1先确认ZK连接是否正确优先排查步骤2清理旧集群标识核心修复方案1. 停止kafka服务2. 找到日志存储目录server.properties 的 log.dirs3. 重启Kafka步骤3如果是全新环境直接清空全部数据推荐步骤4多Broker集群注意事项根本成因总结补充避坑8.kafka中log有关的内容概述其实kafka的安装是非常简单的大家可以看官网地址在下面。kafka官网quickstart点击download,看到下面这个下载地址开始搞事了1.下载cd/homewgethttps://archive.apache.org/dist/kafka/3.4.0/kafka_2.13-3.4.0.tgz --no-check-certificate下载完成后解压文件tar-xzfkafka_2.13-3.4.0.tgzcdkafka_2.13-3.4.02.运行zookeeper#前台运行的命令./bin/zookeeper-server-start.sh ./config/zookeeper.properties#或者后台运行./bin/zookeeper-server-start.sh-daemon./config/zookeeper.properties3.运行kafka-server#前台运行./bin/kafka-server-start.sh config/server.properties#后台运行./bin/kafka-server-start.sh-daemon./config/server.properties4.学会改kafka的conf文件4.1 几个重要的地方要改broker.id1加入集群的时候id要变不能跟以前的一样。listenersPLAINTEXT://0.0.0.0:9092监听所有的网卡advertised.listenersPLAINTEXT://10.101.2.144:9092内网访问的地址zookeeper.connect192.168.50.173:2181这里要填写zookeeper的地址和端口。以上必须注意否则可能运行不起来。如果需要更详细的信息参考我的另外一个文档server.properties配置另外如果你的服务器要被公网访问还需要修改advertised.listeners关于这个的解释我摘抄一段文字描述。advertised.listeners 和 listeners 都是 Kafka 的重要参数用于配置 Kafka 的监听地址。它们之间的区别如下listeners用于指定 Kafka Broker 监听的地址和端口它可以包含多个监听地址。例如listenersPLAINTEXT://0.0.0.0:9092,SSL://0.0.0.0:9093 表示当前 Broker 同时监听 9092 和 9093 端口一个用于 PLAINTEXT 协议另一个用于 SSL 协议。在多台 Broker 的集群中通常要为每个 Broker 指定唯一的监听地址以避免冲突。advertised.listeners用于向客户端公开 Kafka Broker 的访问地址客户端将使用该地址来连接 Kafka Broker。由于 Kafka 集群的 Broker 可能位于不同的机器上所以每个 Broker 的监听地址可能是不同的因此需要将每个 Broker 的公开地址提供给客户端。例如advertised.listenersPLAINTEXT://localhost:9092,SSL://localhost:9093 表示客户端应该使用 localhost 作为 Kafka Broker 的访问地址。通常情况下advertised.listeners 的配置方式与 listeners 相同只是地址部分被改为公开地址。需要注意的是当 advertised.listeners 参数不设置时Kafka 会自动将 listeners 中的地址作为公开地址。因此如果你的 Kafka 集群中的 Broker 之间是通过内部网络连接的那么你可以只设置 listeners 参数并让 Kafka 自动选择正确的地址。如果你的集群中的 Broker 是通过外部网络互相连接的则需要同时设置 advertised.listeners 和 listeners 参数。4.2 建议修改log存放的目录log.dirs/var/lib/docker/kafka-logs5.配置内外网不同的访问listenersPRIVATE://0.0.0.0:9092,PUBLIC://0.0.0.0:9093advertised.listenersPRIVATE://192.168.16.4:9092,PUBLIC://180.77.248.246:9093listener.security.protocol.mapPRIVATE:PLAINTEXT,PUBLIC:PLAINTEXTinter.broker.listener.namePRIVATE参考以下链接关于内外网配置不同6.kafka-map的运行docker run -d --name kafka-map -p 9000:8080 -e DEFAULT_USERNAMEjason -e DEFAULT_PASSWORDJason_18916939125 dushixiang/kafka-map:latest7.解决kafka服务问题的终极大法在我使用Kafka的过程中出现了2次kafka不能访问的问题。后来我用粗暴的方法解决了。就是删除log重新放数据。实际操作是修改config文件指向一个新的log目录然后重启服务。进到这个目录找到两个文件。7.1 Zookeeper改这个目录然后源目录的文件慢慢研究。或者删掉。7.2 kafka改这个目录原来的可以删除也可以留着慢慢研究。7.3 重启zookeeper和kafka#前台运行的命令./bin/zookeeper-server-start.sh ./config/zookeeper.properties#或者后台运行./bin/zookeeper-server-start.sh-daemon./config/zookeeper.properties#前台运行./bin/kafka-server-start.sh config/server.properties#后台运行./bin/kafka-server-start.sh-daemon./config/server.properties8.报错完整解决InconsistentClusterIdException 集群ID不匹配报错含义Kafka 本地磁盘文件meta.properties里记录的旧集群ID和当前 Zookeeper 里保存的集群ID不一致Broker 认为自己要加入另一个集群直接启动失败。两种核心场景换了 Zookeeper 地址连错ZK集群旧Kafka数据目录没清空重装/迁移Kafka后残留旧集群标识。步骤1先确认ZK连接是否正确优先排查打开config/server.propertieszookeeper.connect127.0.0.1:2181确认地址端口是你当前正在使用的ZK集群不要连其他环境ZK。步骤2清理旧集群标识核心修复方案1. 停止kafka服务# Linuxbin/kafka-server-stop.sh# Windowsbin/windows/kafka-server-stop.bat2. 找到日志存储目录server.properties 的 log.dirs# server.properties log.dirs/kafka/kafka-logs进入这个目录每个分区文件夹同级有meta.properties全部删除# Linux 示例rm-rf/kafka/kafka-logs/meta.properties3. 重启Kafkabin/kafka-server-start.sh-daemonconfig/server.properties启动时会重新生成匹配当前ZK的集群ID报错消失。步骤3如果是全新环境直接清空全部数据推荐如果这台Broker是新部署、无业务数据# 停止kafkabin/kafka-server-stop.sh# 删除所有日志数据rm-rf/kafka/kafka-logs/*# 重启bin/kafka-server-start.sh-daemonconfig/server.properties步骤4多Broker集群注意事项集群内所有broker必须连同一套Zookeeper不要把旧集群的log.dirs目录直接拷贝到新集群机器若多台机器同时报这个错统一清空所有机器的meta.properties。根本成因总结更换zookeeper.connect地址连到了另一个Kafka集群重装Kafka、迁移服务器log目录残留旧集群meta文件误挂载了其他节点的kafka数据磁盘。补充避坑生产有业务数据只删meta.properties不要删除分区日志文件否则消息丢失全新测试环境直接清空整个log.dirs目录最简单。8.kafka中log有关的内容可以参考以下帖子。https://blog.csdn.net/fenglepeng/article/details/114532420