1、首先现在kafka的二进制包,http://kafka.apache.org
2、解压后修改config目录中的server.properties文件
注意:按照官方文档的说法,advertised.host.name 和 advertised.port 这两个参数用于定义集群向 Producer 和 Consumer 广播的节点 host 和 port,如果不定义,会默认使用 host.name 和 port 的定义。但在实际应用中,发现如果不定义 advertised.host.name 参数,使用 Java 客户端从远端连接集群时,会发生连接超时,抛出异常:org.apache.kafka.common.errors.TimeoutException: Batch Expired
经过过 debug 发现,连接到集群是成功的,但连接到集群后更新回来的集群 meta 信息却是错误的。metadata 中的 Cluster 信息中节点的 hostname 是一串字符,而不是实际的ip地址。这串其实是远端主机的 hostname,这说明在没有配置 advertised.host.name 的情况下,Kafka 并没有像官方文档宣称的那样改为广播我们配置的 host.name,而是广播了主机配置的 hostname 。远端的客户端并没有配置 hosts,所以自然是连接不上这个 hostname 的。要解决这一问题,把 host.name 和 advertised.host.name 都配置成绝对的 ip 地址就可以了。
# 节点ID
broker.id=1
#当前节点的hostname
advertised.host.name=10.0.17.67
#端口
port=9092
#服务器用于处理网络请求的网络线程数量
num.network.threads=3
#服务器用于执行网络请求的io线程数量
num.io.threads=8
#socket的sendbuf缓冲区。如果值为-1,则将使用OS缺省值。
socket.send.buffer.bytes=102400
#socket接收网络请求的缓冲区
socket.receive.buffer.bytes=102400
#socket请求的最大字节数
socket.request.max.bytes=104857600
#保存日志数据的目录。如果没有设置,则日志中的值。使用dir
log.dirs=/opt/data/kafka-1
#分区数量
num.partitions=1
#每个数据目录用来日志恢复的线程数目
num.recovery.threads.per.data.dir=1
#日志的保留时间
log.retention.hours=168
#单个日志文件的最大大小
log.segment.bytes=1073741824
#记录日志的频率以毫秒为间隔,检查日志是否有资格进行删除
log.retention.check.interval.ms=300000
#zookeeper集群连接配置
zookeeper.connect=127.0.0.1:4181,127.0.0.1:4182,127.0.0.1:4183
#zookeeper连接超时时间
zookeeper.connection.timeout.ms=6000
3丶分别启动kafka服务./kafka-server-start.sh ../config/server.properties