说明:只配置主要的配置,其他都是默认
IP | HostName |
---|---|
192.168.174.140 | Kafka-01 |
192.168.174.141 | Kafka-02 |
192.168.174.142 | Kafka-03 |
网上有一些博客,就是把Zookeeper和Kafka的默认配置也写出来,然后端口也写错等等,导致大家参考的时候,不小心直接拷贝这些配置到配置文件中候,同一个参数配置了两次,产生一些莫名的错误,我不信只有我一个人中枪,所以虽然网上这类博客很多,但是我还是打算写一篇
先创建两个日志文件夹:
Zookeeper的zoo.cfg基本就是这三行,主机名在/etc/hostname 文件中配置,完事要重启
server.1=Kafka-01:2888:3888
server.2=Kafka-02:2888:3888
server.3=Kafka-03:2888:3888
采用上面的方式,那么Zookeeper的配置文件是一模一样的
或者,两者任选一种
第一台机
server.1=0.0.0.0:2888:3888
server.2=Kafka-02:2888:3888
server.3=Kafka-03:2888:3888
第二台机
server.1=Kafka-01:2888:3888
server.2=0.0.0.0:2888:3888
server.3=Kafka-03:2888:3888
第三台机
server.1=Kafka-01:2888:3888
server.2=Kafka-02:2888:3888
server.3=0.0.0.0:2888:3888
然后有个myid文件三台机器,根据配置dataDir=/tmp/zookeeper
放在这个目录即可,里面的值分别1/2/3
然后是Kafka的配置,server.properties配置文件,主要配置如下:
第一台机器:
broker.id=0
listeners=PLAINTEXT://Kafka-01:9092
port=9092
advertised.listeners=PLAINTEXT://Kafka-01:9092
zookeeper.connect=Kafka-01:2181,Kafka-02:2181,Kafka-03:2181
第二台机器
broker.id=1
listeners=PLAINTEXT://Kafka-02:9092
port=9092
advertised.listeners=PLAINTEXT://Kafka-02:9092
zookeeper.connect=Kafka-01:2181,Kafka-02:2181,Kafka-03:2181
第三台机器
broker.id=2
listeners=PLAINTEXT://Kafka-03:9092
port=9092
advertised.listeners=PLAINTEXT://Kafka-03:9092
zookeeper.connect=Kafka-01:2181,Kafka-02:2181,Kafka-03:2181
先启动Zookeeper集群,三台分别启动:
./zkServer.sh start
然后启动Kafka集群,三台分别启动:
./kafka-server-start.sh
然后测试Kafka生产消费的,网上博客坑的是,端口写错,消费的时候应该是是用9092端口,却写的是Zookeeper的2181, 消息收不到,也不报错,这种情况,如果不好使,就去官网看例子
bin/kafka-topics.sh --create --bootstrap-server Kafka-01:9092,Kafka-02:9092,Kafka-03:9092 --replication-factor 1 --partitions 1 --topic test
创建消费者
bin/kafka-console-producer.sh --broker-list Kafka-01:9092,Kafka-02:9092,Kafka-03:9092 --topic test
创建消费者就是这里最坑,网上博客基本都写的2181端口
bin/kafka-console-consumer.sh --bootstrap-server Kafka-01:9092,Kafka-02:9092,Kafka-03:9092 --topic test --from-beginning
注:如果在Linux上使用的是主机名,在Windows上使用Java代码的时候需要配置Windows 的hosts文件,否则Kafka工程启动会报错
按照上面的步骤基本没有问题,如果有问题请留言,相互学习,进步