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文件不一致,就会报错。