搭建Zookeeper集群和Kafka集群详细步骤

搭建部署Kafka集群

  • 一、搭建zookeeper集群
    • 1.部署第一台zookeeper
        • 解压
        • zoo.cfg
        • 修改zoo.cfg
        • myid文件
    • 2.第二台zookeeper
    • 3.第三台zookeeper
    • 4.启动
    • 5.查看zookeeper集群运行状态
  • 二.搭建kafka集群
    • 1.部署第一台Kafka
        • 解压
        • 1. 修改server.properties配置文件
    • 2.第二台kafka
    • 3.第三台kafka
    • 4.启动kafka集群
    • 5.kafka集群运行效果
  • 三、效果
  • 四、springboot的yml配置文件
  • 最后、Bug

单机部署请参考Linux安装部署zookeeper、kafka
三台服务器信息:

  1. 192.168.183.53
  2. 192.168.183.55
  3. 192.168.183.62

开始搭建

一、搭建zookeeper集群

目录/data/tools

1.部署第一台zookeeper

解压

tar -zxvf zookeeper-3.4.10.tar.gz 

zoo.cfg

进入conf文件夹下复制zoo_sample.cfg文件,将副本重命名为zoo.cfg。
搭建Zookeeper集群和Kafka集群详细步骤_第1张图片

修改zoo.cfg

修改zoo.cfg文件,如下:并创建出对应文件夹data、logs。
搭建Zookeeper集群和Kafka集群详细步骤_第2张图片

在这里插入图片描述

myid文件

在data文件夹下新建myid文件,写入1
搭建Zookeeper集群和Kafka集群详细步骤_第3张图片
同样的对第二台和第三台进行同样的操作,注意目录的修改,和myid文件

2.第二台zookeeper

搭建Zookeeper集群和Kafka集群详细步骤_第4张图片

3.第三台zookeeper

搭建Zookeeper集群和Kafka集群详细步骤_第5张图片

4.启动

  1. 启动第一台zookeeper:
    搭建Zookeeper集群和Kafka集群详细步骤_第6张图片

  2. 启动第二台zookeeper:
    搭建Zookeeper集群和Kafka集群详细步骤_第7张图片

  3. 启动第三台zookeeper:
    搭建Zookeeper集群和Kafka集群详细步骤_第8张图片

5.查看zookeeper集群运行状态

第一台:
在这里插入图片描述
第二台:
搭建Zookeeper集群和Kafka集群详细步骤_第9张图片
第三台:
在这里插入图片描述
zookeeper集群启动成功!

注意: 启动第一台后查看状态是没有启动成功的,这是因为我们的集群是三胎,只有一台运行时集群是无法运行的,需要超过半数以上的zookeeper运行集群才会正常运行!

二.搭建kafka集群

1.部署第一台Kafka

解压

tar -zxvf kafka_2.11-0.11.0.0.tgz

搭建Zookeeper集群和Kafka集群详细步骤_第10张图片

1. 修改server.properties配置文件

进入kafka/config目录修改server.properties
首先修改服务端配置文件
搭建Zookeeper集群和Kafka集群详细步骤_第11张图片

搭建Zookeeper集群和Kafka集群详细步骤_第12张图片

搭建Zookeeper集群和Kafka集群详细步骤_第13张图片

创建出对应目录data:
在这里插入图片描述

到这里就完成第一台的部署了。
注意:
listeners:
是kafka真正bind的地址
advertised.listeners:
是暴露给外部的listeners,如果没有设置,会用listeners

对第二台、第三台进行同样的操作,注意broker.id的修改,和对应目录的创建!

2.第二台kafka


注意修改对应的brokers.id、ip、目录路径。

3.第三台kafka


注意修改对应的brokers.id、ip、目录路径。

4.启动kafka集群

进入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

5.kafka集群运行效果

创建一个主题 first
查看主题
在这里插入图片描述
注意:
我们在第一台kakfa上创建的主题,在另外两台kafka也可以看见:
在这里插入图片描述
在这里插入图片描述

第一台服务器 生产消息 并进行消费:
搭建Zookeeper集群和Kafka集群详细步骤_第14张图片

在第一台kafka上生产消息,在另外两台上可以消费到第一台生产的消息:
搭建Zookeeper集群和Kafka集群详细步骤_第15张图片
搭建Zookeeper集群和Kafka集群详细步骤_第16张图片

在这里插入图片描述
搭建Zookeeper集群和Kafka集群详细步骤_第17张图片

三、效果

在其中一台kafka创建的主题,在另外两台服务器上也有;
在其中一台kafka生产的信息,另外两台也可以消费;

四、springboot的yml配置文件

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:

最后、Bug

最后,启动的时候连接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

你可能感兴趣的:(zookeeper,集群,消息中间件,kafka,zookeeper,大数据)