Kafka+Zookeeper集群搭建及注意事项

Kafka集群的搭建

说明:只配置主要的配置,其他都是默认

  • 基于最新版本kafka:kafka_2.12-2.3.0.tgz
  • Zookeeper版本: zookeeper-3.4.10.tar.gz
  • JDK(1.8+): jdk-8u152-linux-x64.tar.gz
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, 消息收不到,也不报错,这种情况,如果不好使,就去官网看例子

  • 创建一个名为test的topic:以前的–zookeeper参数在比较新的版本中已经替换为了–bootstrap-server

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工程启动会报错

按照上面的步骤基本没有问题,如果有问题请留言,相互学习,进步

你可能感兴趣的:(Java,MQ)