一、环境准备
-
准备好3台虚拟机搭建kafka集群
-
修改主机名
第一台:hostnamectl set-hostname kafka01
第二台:hostnamectl set-hostname kafka02
第三台:hostnamectl set-hostname kafka03
-
配置好静态ip地址
vim /etc/sysconfig/network-scripts/ifcfg-ens33
例如:TYPE=Ethernet NAME=ens33 UUID=15692761-d444-42ed-a0a9-3e98fefc909d DEVICE=ens33 ONBOOT=yes IPADDR=192.168.22.2 PREFIX=24 GATEWAY=192.168.22.1 DNS1=114.114.114.114
三台都要配置好,要求互相能ping通。
-
每一台机器上都写好域名解析
vim /etc/hosts192.168.22.2 nginx-kafka01 192.168.22.3 nginx-kafka02 192.168.22.4 nginx-kafka03
-
安装时间同步服务
yum -y install chrony
systemctl enable chronyd
systemctl start chronyd
设置时区:cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime -
关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
关闭selinux:
vim /etc/selinux/config
改为SELINUX=disabled
selinux关闭 需要重启机器
二、安装
- 安装java和wget
yum install java wget -y
- 安装kafka:
wget https://mirrors.bfsu.edu.cn/apache/kafka/2.8.1/kafka_2.12-2.8.1.tgz
tar xf kafka_2.12-2.8.1.tgz
- 安装zookeeper
wget https://mirrors.bfsu.edu.cn/apache/zookeeper/zookeeper-3.6.3/apache-zookeeper-3.6.3-bin.tar.gz
tar -xf apache-zookeeper-3.6.3-bin.tar.gz
三、配置
3台都要配置
1、配置kafka
进入kafka文件夹,vim config /server.properties
例如192.168.22.2主机:
- 21行,broker.id=1 (broker的唯一标识)
- 32行,listeners=PLAINTEXT://nginx-kafka01:9092
- 62行,修改日志目录log.dirs=/data (/data目录必须为空,否则使用其他目录)
- 126行,zookeeper.connect=192.168.22.2:2181,192.168.22.3:2181,192.168.22.4:2181
2、配置zookeeper
-
进入/opt/apache-zookeeper-3.6.3-bin/confs
-
cp zoo_sample.cfg zoo.cfg
-
vim zoo.cfg
-
修改zoo.cfg, 添加如下三行:
server.1=192.168.22.2:3888:4888 server.2=192.168.22.3:3888:4888 server.3=192.168.22.4:3888:4888
3888和4888都是端口 一个用于数据传输,一个用于检验存活性和选举
-
创建/tmp/zookeeper目录 ,在目录中添加myid文件,文件内容就是本机指定的zookeeper id内容
例如:在192.168.22.2机器上:
echo 1 > /tmp/zookeeper/myid
四、运行服务
开启zk和kafka的时候,一定是先启动zk,再启动kafka。关闭服务的时候,kafka先关闭,再关闭zk。运行这两个软件需要由java环境。
- 进入zookeeper目录
启动zookeeper:bin/zkServer.sh start
(三台都要启动)
查看启动后的状态:bin/zkServer.sh status
- 进入kafka目录
启动kafka:(三台都要启动)
进入kafka目录
bin/kafka-server-start.sh -daemon config/server.properties
- 再进入zookeeper目录,查看成功运行了几台kafka服务器。
bin/zkCli.sh
[zk: localhost:2181(CONNECTED) 2]ls /brokersd/ids
[1, 2, 3] #表示broker.id为1、2、3的kafka成功运行。
五,测试
其中的ip随便写(三台中的任意一个)。
- 创建topic
bin/kafka-topics.sh --create --zookeeper 192.168.22.2:2181 --replication-factor 1 --partitions 1 --topic test
- 查看topic
bin/kafka-topics.sh --list --zookeeper 192.168.22.2:2181
- 创建生产者
bin/kafka-console-producer.sh --broker-list 192.168.22.3:9092 --topic test
输入:>hello >world!
- 创建消费者
bin/kafka-console-consumer.sh --bootstrap-server 192.168.22.4:9092 --topic test --from-beginning
输出:
如果打印出刚刚在生产者中输入的数据,说明环境搭建成功!hello world!