kafka集群搭建

0,用VMWare安装3台CentOS8虚拟机

 0.1,虚拟网络地址如下:

        hostname                      ipaddress                   subnet mask                          geteway    

    1、 CentOS-1      192.168.213.135    255.255.255.0      192.168.213.2

    2、 CentOS-2      192.168.213.136    255.255.255.0      192.168.213.2

    3、 CentOS-3      192.168.213.137    255.255.255.0      192.168.213.2

 0.2,修改host文件,将hostname添加到本机

    进入etc目录:cd /etc/

    使用vim命令修改host:vim hosts

    输入 i 进入编辑模式

    增加IP地址和hostname对应关系:    

    192.168.213.135 CentOS-1
    192.168.213.136 CentOS-2
    192.168.213.137 CentOS-3

    esc退出编辑模式,输入 :wq 保存更改

    

1,搭建zookeeper集群

  kafka是依赖于zookeeper的,单机模式下可以直接用kafka自带zookeeper(config/zookeeper.properties)启动,但是单机并不是kafka的价值所在,所以要搭建自己的zookeeper集群

  博客园上有篇文章写zookeeper集群搭建的文章,写的不错,可供参考:https://www.cnblogs.com/ysocean/p/9860529.html

  这里我们的zookeeper配置文件,增加的server.0、server.1、server.2分别为:

  server.0=192.168.213.135:2888:3888
  server.1=192.168.213.136:2888:3888
  server.2=192.168.213.137:2888:3888

  当然,由于上一步我们设置了hostname,这里的IP也可以直接写成hostname的形式:

  server.0=CentOS-1:2888:3888
  server.1=CentOS-2:2888:3888
  server.2=CentOS-3:2888:3888

  另外增加日志输出目录:dataLogDir=/tmp/zookeeper/log

   

 2,下载kafka安装包

  官网上下载最新kafka安装包,https://kafka.apache.org/downloads,使用tar命令解压,这里我们将/usr/lcoal 目录作为所有软件的安装目录,将kafka解压到这个目录

  解压命令行:tar -vxzf kafka_2.13-2.6.0.tgz

  之后我们将kafka配置到环境变量里:

  进入etc目录:cd /etc/

  vim命令编辑profile文件:vim profile

  export KAFKA_HOME=/usr/local/kafka_2.13-2.6.0
  export PATH=$PATH:$KAFKA_HOME/bin

  如图:

  

  :wq保存退出,然后使用source命令,使配置文件立即生效:source profile

  配置环境变量这一步不是必须的,如果不配置那么在每次启动kafka的时候,需要在kafka的bin目录中执行启动命令。  

3,修改server.properties配置文件

  进入解压的kafka的config目录:cd /usr/local/kafka_2.13-2.6.0/config/

  vim命令修改server.properties文件(这里的zookeeper.properties就用不到了):vim server.properties

  指定zookeeper集群地址:zookeeper.connect=CentOS-1:2181,CentOS-2:2181,CentOS-3:2181

  修改broker.id,值从1开始的正整数:broker.id=1(三台broker都要改,依次向后排列即可)

  

 

4,启动kafka

  使用官方给出的命令,稍作修改启动:

  nohup kafka-server-start.sh /usr/local/kafka_2.13-2.6.0/config/server.properties &

  因为前面设置了环境变量,所以可以在任意位置执行启动命令,但需要将server.properties的路径写为绝对路径

  这里我们将kafka作为后台启动了,使用的命令是nohup

  

  出现如上图的结果,说明启动无报错,图中6182是进程pid,我们还可以使用jps命令,查看是否有pid为6182的进程:jps

     

  有pid为6182的进程,kafka已启动  

5,创建topic

  在任意一个broker上创建topic,使用官方命令稍作修改,如下

  kafka-topics.sh --create --zookeeper CentOS-1,CentOS-2,CentOS-3 --topic mytopic --partitions 3 --replication-factor 3

  这里我们使用指定的zookeeper集群:CentOS-1,CentOS-2,CentOS-3

  --topic 主题名称,这里是mytopic

  --partitions 主题下有几个分区,这里设置了3个

  --replication-factor 副本数,这里同样设置了3个

    

6,查看topic详情

  在任意一个broker上查看topic,使用官方命令稍作修改,如下

  kafka-topics.sh --describe --zookeeper CentOS-1,CentOS-2,CentOS-3 --topic mytopic

 

7,生产者和消费者的创建 

  7.1 创建生产者

  kafka-console-producer.sh --topic mytopic --broker-list localhost:9092

  7.2 创建消费者

  kafka-console-consumer.sh --topic mytopic --from-beginning --bootstrap-server localhost:9092

  生产者生产消息,消费者能够接收到消息

  

 

8,如果启动失败,可尝试:

  1,查看防火墙是否关闭;

  2,检查broker.id是否正确设置;

  3,删除数据目录(log)中所有文件,重新启动。log目录是在server.properties中设置的:log.dirs=/tmp/kafka-logs 。如果之前没有搭建成功,在数据目录中会生成一个mata.properties文件,里面包含了broker.id的值。在搭建完成后,当前的broker.id和mata文件不一致,就会报错。

原文地址:https://www.cnblogs.com/huyueping/p/13992735.html