kafka内外网和安全配置
内外网不通集群部署模式
分别给kafka配置不同网段的监听
broker.id=70
listener.security.protocol.map=INTERNAL:SASL_PLAINTEXT,EXTERNAL:SASL_PLAINTEXT
#SASL_PLAINTEXT 表示需要先经过安全认证,如果没有安全认证就会启动失败
listeners=INTERNAL://0.0.0.0:19091,EXTERNAL://0.0.0.0:19092
advertised.listeners=INTERNAL://10.30.92.7:19091,EXTERNAL://10.255.206.22:19092
inter.broker.listener.name=INTERNAL
无需安全认证
listener.security.protocol.map=INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT
listeners=INTERNAL://0.0.0.0:19091,EXTERNAL://0.0.0.0:19092
advertised.listeners=INTERNAL://10.30.92.7:19091,EXTERNAL://10.255.206.22:19092
inter.broker.listener.name=INTERNAL
这样可以实现可以实现两个不同的网段的主机都能连接同一个kafka集群
10.30.92.0/24网段和10.255.206.0/24网段两者之间的主机互不相通,但是他们却可以通过10.30.92.78:19091和10.255.206.22:19092来连接到同一台主机上的kafka

broker.id=70 listener.security.protocol.map=INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT listeners=INTERNAL://0.0.0.0:19091,EXTERNAL://0.0.0.0:19092 advertised.listeners=INTERNAL://10.30.92.7:19091,EXTERNAL://10.255.206.22:19092 inter.broker.listener.name=INTERNAL num.network.threads=3 num.io.threads=8 socket.send.buffer.bytes=4194304 socket.receive.buffer.bytes=4194304 socket.request.max.bytes=104857600 log.dirs=/data/soc/logs/kafka/log num.partitions=1 num.recovery.threads.per.data.dir=1 log.retention.hours=96 log.retention.bytes=-1 log.segment.bytes=1073741824 log.retention.check.interval.ms=300000 zookeeper.connect=10.30.92.70:2181,10.30.92.71:2181,10.30.92.73:2181 zookeeper.connection.timeout.ms=6000000 delete.topic.enable=true auto.create.topics.enable=true default.replication.factor=1 offsets.topic.replication.factor=1

############################# Server Basics ############################# #broker 的 id,必须唯一 broker.id=6 ############################# Socket Server Settings ############################# #监听地址 #listeners=SASL_PLAINTEXT://:9092 #advertised.listeners=SASL_PLAINTEXT://10.255.206.189:9092 #sasl相关配置 #security.inter.broker.protocol=SASL_PLAINTEXT sasl.mechanism.inter.broker.protocol=PLAIN sasl.enabled.mechanisms=PLAIN #0519 #listeners=INSIDE://10.32.3.6:9091,OUTSIDE://10.255.206.189:9092 #advertised.listeners=INSIDE://10.32.3.6:9091,OUTSIDE://10.255.206.189:9092 ###listener.security.protocol.map=OUTSIDE:PLAINTEXT #listener.security.protocol.map=INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT #inter.broker.listener.name=INSIDE listener.security.protocol.map=INTERNAL:SASL_PLAINTEXT,EXTERNAL:SASL_PLAINTEXT listeners=INTERNAL://0.0.0.0:9091,EXTERNAL://0.0.0.0:9092 advertised.listeners=INTERNAL://10.32.3.66:9091,EXTERNAL://10.255.206.18:9092 inter.broker.listener.name=INTERNAL #listeners=SASL_PLAINTEXT://0.0.0.0:9092 #advertised.listeners=SASL_PLAINTEXT://10.255.206.189:9092 #listeners=SASL_PLAINTEXT://kddos-node-6:9092 #advertised.listeners=SASL_PLAINTEXT://10.255.206.189:9092 #sasl相关配置 #security.inter.broker.protocol=SASL_PLAINTEXT #sasl.mechanism.inter.broker.protocol=PLAIN #sasl.enabled.mechanisms=PLAIN #Broker 用于处理网络请求的线程数 num.network.threads=6 #Broker 用于处理 I/O 的线程数,推荐值 8 * 磁盘数 num.io.threads=24 #在网络线程停止读取新请求之前,可以排队等待 I/O 线程处理的最大请求个数 queued.max.requests=1000 #socket 发送缓冲区大小 socket.send.buffer.bytes=102400 #socket 接收缓冲区大小 socket.receive.buffer.bytes=102400 #socket 接收请求的最大值(防止 OOM) socket.request.max.bytes=104857600 ############################# Log Basics ############################# #数据目录 log.dirs=/data/ddos/logs/kafka/log #清理过期数据线程数 num.recovery.threads.per.data.dir=3 #单条消息最大 10 M message.max.bytes=10485760 ############################# Topic Settings ############################# #允许自动创建 Topic auto.create.topics.enable=true #不允许 Unclean Leader 选举。 unclean.leader.election.enable=false #不允许定期进行 Leader 选举。 auto.leader.rebalance.enable=false #默认分区数 num.partitions=3 #默认分区副本数 default.replication.factor=3 #当生产者将 acks 设置为 "all"(或"-1")时,此配置指定必须确认写入的副本的最小数量,才能认为写入成功 min.insync.replicas=2 #允许删除主题 delete.topic.enable=true ############################# Log Flush Policy ############################# #建议由操作系统使用默认设置执行后台刷新 #日志落盘消息条数阈值 #log.flush.interval.messages=10000 #日志落盘时间间隔 #log.flush.interval.ms=1000 #检查是否达到flush条件间隔 #log.flush.scheduler.interval.ms=200 ############################# Log Retention Policy ############################# #日志留存时间 7 天 log.retention.hours=168 #最多存储 256GB 数据 log.retention.bytes=274877906944 #日志文件中每个 segment 的大小为 1G log.segment.bytes=1073741824 #检查 segment 文件大小的周期 5 分钟 log.retention.check.interval.ms=300000 #开启日志压缩 log.cleaner.enable=true #日志压缩线程数 log.cleaner.threads=8 ############################# Zookeeper ############################# #Zookeeper 连接参数 zookeeper.connect=10.32.3.6:2181,10.32.3.7:2181,10.32.3.8:2181 #连接 Zookeeper 的超时时间 zookeeper.connection.timeout.ms=6000 ############################# Group Coordinator Settings ############################# #为了缩短多消费者首次平衡的时间,这段延时期间 10s 内允许更多的消费者加入组 group.initial.rebalance.delay.ms=10000 #心跳超时时间默认 10s,设置成 6s 主要是为了让 Coordinator 能够更快地定位已经挂掉的 Consumer session.timeout.ms = 6s #心跳间隔时间,session.timeout.ms >= 3 * heartbeat.interval.ms。 heartbeat.interval.ms=2s #最长消费时间 5 分钟 max.poll.interval.ms=300000
kafka安全认证配置
listener.security.protocol.map=INTERNAL:SASL_PLAINTEXT,EXTERNAL:SASL_PLAINTEXT

############################# Server Basics ############################# #broker 的 id,必须唯一 broker.id=6 ############################# Socket Server Settings ############################# #监听地址 #listeners=SASL_PLAINTEXT://:9092 #advertised.listeners=SASL_PLAINTEXT://10.255.206.189:9092 #sasl相关配置 #security.inter.broker.protocol=SASL_PLAINTEXT sasl.mechanism.inter.broker.protocol=PLAIN sasl.enabled.mechanisms=PLAIN #0519 #listeners=INSIDE://10.32.3.6:9091,OUTSIDE://10.255.206.189:9092 #advertised.listeners=INSIDE://10.32.3.6:9091,OUTSIDE://10.255.206.189:9092 ###listener.security.protocol.map=OUTSIDE:PLAINTEXT #listener.security.protocol.map=INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT #inter.broker.listener.name=INSIDE listener.security.protocol.map=INTERNAL:SASL_PLAINTEXT,EXTERNAL:SASL_PLAINTEXT listeners=INTERNAL://0.0.0.0:9091,EXTERNAL://0.0.0.0:9092 advertised.listeners=INTERNAL://10.32.3.66:9091,EXTERNAL://10.255.206.18:9092 inter.broker.listener.name=INTERNAL #listeners=SASL_PLAINTEXT://0.0.0.0:9092 #advertised.listeners=SASL_PLAINTEXT://10.255.206.189:9092 #listeners=SASL_PLAINTEXT://kddos-node-6:9092 #advertised.listeners=SASL_PLAINTEXT://10.255.206.189:9092 #sasl相关配置 #security.inter.broker.protocol=SASL_PLAINTEXT #sasl.mechanism.inter.broker.protocol=PLAIN #sasl.enabled.mechanisms=PLAIN #Broker 用于处理网络请求的线程数 num.network.threads=6 #Broker 用于处理 I/O 的线程数,推荐值 8 * 磁盘数 num.io.threads=24 #在网络线程停止读取新请求之前,可以排队等待 I/O 线程处理的最大请求个数 queued.max.requests=1000 #socket 发送缓冲区大小 socket.send.buffer.bytes=102400 #socket 接收缓冲区大小 socket.receive.buffer.bytes=102400 #socket 接收请求的最大值(防止 OOM) socket.request.max.bytes=104857600 ############################# Log Basics ############################# #数据目录 log.dirs=/data/ddos/logs/kafka/log #清理过期数据线程数 num.recovery.threads.per.data.dir=3 #单条消息最大 10 M message.max.bytes=10485760 ############################# Topic Settings ############################# #允许自动创建 Topic auto.create.topics.enable=true #不允许 Unclean Leader 选举。 unclean.leader.election.enable=false #不允许定期进行 Leader 选举。 auto.leader.rebalance.enable=false #默认分区数 num.partitions=3 #默认分区副本数 default.replication.factor=3 #当生产者将 acks 设置为 "all"(或"-1")时,此配置指定必须确认写入的副本的最小数量,才能认为写入成功 min.insync.replicas=2 #允许删除主题 delete.topic.enable=true ############################# Log Flush Policy ############################# #建议由操作系统使用默认设置执行后台刷新 #日志落盘消息条数阈值 #log.flush.interval.messages=10000 #日志落盘时间间隔 #log.flush.interval.ms=1000 #检查是否达到flush条件间隔 #log.flush.scheduler.interval.ms=200 ############################# Log Retention Policy ############################# #日志留存时间 7 天 log.retention.hours=168 #最多存储 256GB 数据 log.retention.bytes=274877906944 #日志文件中每个 segment 的大小为 1G log.segment.bytes=1073741824 #检查 segment 文件大小的周期 5 分钟 log.retention.check.interval.ms=300000 #开启日志压缩 log.cleaner.enable=true #日志压缩线程数 log.cleaner.threads=8 ############################# Zookeeper ############################# #Zookeeper 连接参数 zookeeper.connect=10.32.3.6:2181,10.32.3.7:2181,10.32.3.8:2181 #连接 Zookeeper 的超时时间 zookeeper.connection.timeout.ms=6000 ############################# Group Coordinator Settings ############################# #为了缩短多消费者首次平衡的时间,这段延时期间 10s 内允许更多的消费者加入组 group.initial.rebalance.delay.ms=10000 #心跳超时时间默认 10s,设置成 6s 主要是为了让 Coordinator 能够更快地定位已经挂掉的 Consumer session.timeout.ms = 6s #心跳间隔时间,session.timeout.ms >= 3 * heartbeat.interval.ms。 heartbeat.interval.ms=2s #最长消费时间 5 分钟 max.poll.interval.ms=300000
2.在kafka的安装目录下添加认证配置文件
3.kafka的server.properties中如果配置成SASL_PLAINTEXT 那么就一定要在config的目录下创建kafka_server_jaas.conf和kafka_client_jaas.conf配置文件,否则kafka无法正常启动
4.配置文件实例

KafkaClient { org.apache.kafka.common.security.plain.PlainLoginModule required username="admin" password="11111"; };

KafkaServer { org.apache.kafka.common.security.plain.PlainLoginModule required username="admin" password="22222" user_admin="11111"; };
kafka集群重启异常
修改kafka的配置后重启kafka服务 提示
Error while executing topic command : Replication factor: 1 larger than available brokers: 0.
集群重启操作步骤
1.先把所有节点的kafka停止 supervisorctl stop kafka
2.把所有节点的zookeeper重启 supervisorctl restart zookeeper
3.最后把所有节点的kafka启动 supervisorctl start kafka
4.修改kafka的配置后不能仅仅重启kafka本身 还需要先重启kafka的依赖服务zookeeper
kafka外网转发
配置项目解析
配置多个IP监听

broker.id=70 listener.security.protocol.map=INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT,OUTSIDE:PLAINTEXT listeners=INTERNAL://0.0.0.0:19091,EXTERNAL://0.0.0.0:19093,OUTSIDE://0.0.0.0:19092 advertised.listeners=INTERNAL://1.1.1.1:19091,EXTERNAL://2.2.2.2:19093,OUTSIDE://3.3.3.3:19092 inter.broker.listener.name=INTERNAL
进程服务化

cat /etc/systemd/system/zookeeper.service [Unit] Description=Zookeeper After=network.target [Service] Type=simple Environment=ZOO_LOG_DIR=/data/taishi/soft/zookeeper/apache-zookeeper-3.6.1-bin/logs Environment=JAVA_HOME=/data/taishi/soft/jdk/jdk1.8.0_60 User=root Group=root ExecStart=/data/taishi/soft/zookeeper/apache-zookeeper-3.6.1-bin/bin/zkServer.sh start-foreground ExecStop=/data/taishi/soft/zookeeper/apache-zookeeper-3.6.1-bin/bin/zkServer.sh stop PIDFile=/data/taishi/soft/zookeeper/apache-zookeeper-3.6.1-bin/zookeeper_server.pid [Install] WantedBy=multi-user.target
托管给systemd管理的进程也必须和supervisor一样以前台进程方式的启动,否则就会启动异常状态结束
kafka服务化
本文来自博客园,作者:不懂123,转载请注明原文链接:https://www.cnblogs.com/yxh168/p/17603426.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
2021-08-03 IP分类和用途
2021-08-03 firewalld基础知识