官方搭建地址:http://kafka.apache.org/quickstart
推荐使用官方文档,现在网上烂货太多。
常用配置
broker.id=0 #集群设置不一样如:一台为1,一台为2.。。
port=9092
host.name= localhost
num.network.threads=2
num.io.threads=8
socket.send.buffer.bytes=1048576
socket.receive.buffer.bytes=1048576
socket.request.max.bytes=104857600
log.dirs=/tmp/kafka-logs
num.partitions=2
log.retention.hours=168
log.segment.bytes=536870912
log.retention.check.interval.ms=60000
log.cleaner.enable=false
zookeeper.connect=localhost:2181#如果是集群使用','隔开
zookeeper.connection.timeout.ms=1000000
坑一(kafka启动不起来)
报错:
Socket server failed to bind to xxx.xxx.xxx.xxx:9092: Cannot assign requested address.
尝试:
使用host.name=localhost可以,换为阿里或者腾讯的外网ip就不可以,在另一台机器使用telnet ip port 发现不同。
解决:把host.name=阿里的内网ip
(因为这个是阿里云内部;它会去内网去寻找他的地址,所以配成127.0.0.1 会自动识别成本机地址/不然应该使用外网的映射地址。)
坑二 (可以正常广播,消费者不能正常接收)
报错:
WARN Fetching topic metadata with correlation id 0 for topics [Set(test)] from broker [id:0,host:xxx.xxx.xxx.xxx,port:9092] failed (kafka.client.ClientUtils$)
尝试:
网上搜索答案
解决:advertised.host.name=设置一下广播ip
(我设置的是阿里的外网ip,因为访问的时候,会通过zookeeper进行监控,进而广播消息,内网ip未测试,理论上也可以)
坑三(集群clusterdown)
报错:
ERROR org.apache.kafka.common.errors.InvalidReplicationFactorException: replication factor: 1 larger than available brokers: 0
分析:这个报错是个必然,违背了2n+1台可以允许n台down机。
解决:
- 运行JPS 查看是否有Kafka进程 ; 2.重新启动Kafka(推荐)。