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
配置样例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
配置样例2

 

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";
};
kafka_client_jaas.conf
KafkaServer {
    org.apache.kafka.common.security.plain.PlainLoginModule required
    username="admin"
    password="22222"
    user_admin="11111";
};
kafka_server_jaas.conf

   

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
View Code

     

进程服务化

 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
zookeeper.service

     托管给systemd管理的进程也必须和supervisor一样以前台进程方式的启动,否则就会启动异常状态结束

     

kafka服务化 

 

posted @ 2023-08-03 16:30  不懂123  阅读(241)  评论(0编辑  收藏  举报