单机部署请参考Linux安装部署zookeeper、kafka
三台服务器信息:
开始搭建
目录:/data/tools
tar -zxvf zookeeper-3.4.10.tar.gz
进入conf文件夹下复制zoo_sample.cfg文件,将副本重命名为zoo.cfg。
修改zoo.cfg文件,如下:并创建出对应文件夹data、logs。
在data文件夹下新建myid
文件,写入1
。
同样的对第二台和第三台进行同样的操作,注意目录的修改,和myid文件
第一台:
第二台:
第三台:
zookeeper集群启动成功!
注意: 启动第一台后查看状态是没有启动成功的,这是因为我们的集群是三胎,只有一台运行时集群是无法运行的,需要超过半数以上的zookeeper运行集群才会正常运行!
tar -zxvf kafka_2.11-0.11.0.0.tgz
进入kafka/config目录修改server.properties
首先修改服务端配置文件
到这里就完成第一台的部署了。
注意:
listeners:
是kafka真正bind的地址
advertised.listeners:
是暴露给外部的listeners,如果没有设置,会用listeners
对第二台、第三台进行同样的操作,注意broker.id的修改,和对应目录的创建!
略
注意修改对应的brokers.id、ip、目录路径。
略
注意修改对应的brokers.id、ip、目录路径。
进入bin目录:
启动:
./kafka-server-start.sh ../config/server.properties
后台启动:
./kafka-server-start.sh -daemon ../config/server.properties
查看主题:
./kafka-topics.sh --list --zookeeper 192.168.183.53:218
创建主题:
./kafka-topics.sh --create --zookeeper 192.168.183.53:2181 --topic first --partitions 2 --replication-factor 1
生产消息:
./kafka-console-producer.sh --broker-list 192.168.183.53:9092 --topic first
消费消息:
./kafka-console-consumer.sh --bootstrap-server 192.168.183.53:9092 --topic first --from-beginning
创建一个主题 first
查看主题
注意:
我们在第一台kakfa上创建的主题,在另外两台kafka也可以看见:
在第一台kafka上生产消息,在另外两台上可以消费到第一台生产的消息:
在其中一台kafka创建的主题,在另外两台服务器上也有;
在其中一台kafka生产的信息,另外两台也可以消费;
server:
port: 8080
spring:
#============== kafka ===================
# 指定kafka 代理地址,可以多个
kafka:
# 指定kafka server的地址,集群配多个,中间,逗号隔开
bootstrap-servers: 192.168.183.53:9092,192.168.183.55:9092,192.168.183.62:9092
# 生产者配置
producer:
# 指定消息key和消息体的编解码方式
key-serializer: org.apache.kafka.common.serialization.StringSerializer
value-serializer: org.apache.kafka.common.serialization.StringSerializer
# 消费者配置
consumer:
group-id: hw-data-group #群组ID
enable-auto-commit: true
auto-commit-interval: 1000
# 指定消息key和消息体的编解码方式
key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
value-deserializer: org.apache.kafka.common.serialization.StringDeserializer
logging:
最后,启动的时候连接kafka集群超时,可能是因为以下这个原因:
2020-09-03 15:28:06.611 WARN 3268 --- [ntainer#1-0-C-1] org.apache.kafka.clients.NetworkClient : [Consumer clientId=consumer-2, groupId=hw-data-group] Connection to node -1 could not be established. Broker may not be available.
2020-09-03 15:28:06.613 WARN 3268 --- [ntainer#0-0-C-1] org.apache.kafka.clients.NetworkClient : [Consumer clientId=consumer-1, groupId=hw-data-group] Connection to node -1 could not be established. Broker may not be available.
2020-09-03 15:11:53.875 ERROR 3271 --- [ main] o.s.k.support.LoggingProducerListener : Exception thrown when sending a message with key='null' and payload='2020-09-03T15:10:53.783' to topic first:
解决方法:
修改hosts文件,映射主机名
hostname
vim /etc/hosts