由于近期公司需要通过kafka接收一批数据,需要另外一个公司通过spark往公司内网写数据,部署了三台kafka集群,对外提供的接口是通过nginx通过代理域名和端口提供给数据提供者.
由于代理域名和端口无法与kafka地址进行关联,需要进行如下配置:
1.首先是使用ambari搭建kafka进行配置,发现对方调用一直无法解析集群的域名,而且修改kafka内外网配置导致kafka无法启动;
2.其次是通过ambari部署的kafka修改服务器上面的配置,然后启动,脱离ambari管控,发现连接超时,无法连接;
3.搭建kafka原生集群,刚开始使用3版本以上的,由于对方版本使用的比较低,考虑到版本高兼容性的问题,就使用kafka2.5版本,并修改相关配置,具体配置如下:
############################# Server Basics #############################
broker.id=402
############################# Socket Server Settings #############################
#kafka默认监听的端口为9092
listeners=INTERNAL://0.0.0.0:6666,EXTERNAL://0.0.0.0:6667
advertised.listeners=INTERNAL://kafkaip.40:6666,EXTERNAL://外网代理域名:39665
inter.broker.listener.name=INTERNAL
listener.security.protocol.map=INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT,PLAINTEXT:PLAINTEXT,SSL:SSL,SASL_PLAINTEXT:SASL_PLAINTEXT,SASL_SSL:SASL_SSL
# 处理网络请求的线程数量,默认为3个
num.network.threads=3
# 执行磁盘IO操作的线程数量,默认为8个
num.io.threads=8
# socket服务发送数据的缓冲区大小,默认100KB
socket.send.buffer.bytes=102400
# socket服务接受数据的缓冲区大小,默认100KB
socket.receive.buffer.bytes=102400
# socket服务所能接受的一个请求的最大大小,默认为100M
socket.request.max.bytes=104857600
############################# Log Basics #############################
# 日志存储地址
log.dirs=/data1/software/kafka_2.12-2.5.0/logs
# 每个topic默认的partition数量
num.partitions=3
# 在启动时恢复数据和关闭时刷新数据时每个数据目录的线程数量
num.recovery.threads.per.data.dir=1
############################# Internal Topic Settings #############################
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
default.replication.factor=3
############################# Log Flush Policy #############################
# 消息刷新到磁盘中的消息条数阈值
log.flush.interval.messages=10000
# 消息刷新到磁盘中的最大时间间隔
log.flush.interval.ms=1000
############################# Log Retention Policy #############################
# 日志分片策略,单个日志文件的大小最大为1G,超出后则创建一个新的日志文件
log.segment.bytes=1073741824
# 日志保留大小,超出大小会自动删除,默认为1G,log.retention.bytes这是指定 Broker 为消息保存的总磁盘容量大小
#log.retention.bytes=1073741824
# 每隔多长时间检测数据是否达到删除条件
log.retention.check.interval.ms=300000
# 日志保留小时数,超时会自动删除,默认为7天
log.retention.hours=168
############################# Zookeeper #############################
# Zookeeper连接地址
zookeeper.connect=zkip:2181/kafka
# Zookeeper连接超时时间
zookeeper.connection.timeout.ms=18000
# Zookeeper是否允许删除topic
delete.topic.enable=true
############################# Group Coordinator Settings #############################
group.initial.rebalance.delay.ms=0
发现还是无法连接,当时考虑到与之前搭建复用的部分只有zk了,然后就重新搭建了一个单节点的zk,将kafka配置改为新搭建的单节点zk后,网络居然通啦,问题解决.