一、kafka概述
kafka是什么
1)kafka是一个分布式消息队列。
2)kafka对消息保存时根据topic进行分类,发送消息者为producer,接收消息者为consumer
3)kafka集群依赖zookeeper集群保存meta信息
二、服务器规划
kafka1(192.168.79.160) zookeeper kafka
kafka2(192.168.79.161) zookeeper kafka
kafka3(192.168.79.162) zookeeper kafka
三、三台服务器基本设置
3.1 关闭防火墙和selinux
systemctl stop firewalld
systemctl disable firewalld
sed -i s/SELINUX=enforcing/SELINUX=permissive/g /etc/selinux/config
3.2 服务器改名
vim /etc/hosts
192.168.79.160 kafka1
192.168.79.161 kafka2
192.168.79.162 kafka3
vim /etc/sysconfig/network
HOSTNAME=kafka1
###3.3 重启服务器
reboot
四、 三台机子均安装jdk
4.1 解压
tar -zxvf jdk-8u121-linux-x64.tar.gz -C /usr/local
4.2 配置环境变量
vim /etc/profile
#JDK
JAVA_HOME=/usr/local/jdk1.8.0_121
PATH=
P
A
T
H
:
PATH:
PATH:JAVA_HOME/bin
4.3 加载
source /etc/profile
4.4 验证
java -version
java version “1.8.0_121”
Java™ SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot™ 64-Bit Server VM (build 25.121-b13, mixed mode)
五、 三台机子均安装zookeeper
5.1 解压
tar -zxvf zookeeper-3.4.14.tar.gz -C /usr/local/
5.2 创建数据目录和备份配置文件
mkdir -p /usr/local/zookeeper-3.4.14/zkData
cp /usr/local/zookeeper-3.4.14/conf/zoo_sample.cfg /usr/local/zookeeper-3.4.14/conf/zoo.cfg
5.3 修改配置文件
vim /usr/local/zookeeper-3.4.14/zoo.cfg
dataDir=/usr/local/zookeeper-3.4.14/zkData
server.1=kafka1:2888:3888
server.2=kafka2:2888:3888
server.3=kafka3:2888:3888
解释:server.A=B:C
A是一个数字,表示服务器的编号
B是服务器的ip,因为设置了服务器名,所以用服务器名替代
C是服务器与集群leader通讯的端口
D是集群leader挂了,选举新leader时通讯的端口
5.4 创建myid
这边注意,每台服务器的myid值必须不一致,与server.值 对应(server.1=kafka1:2888:3888
)
vim /usr/local/zookeeper-3.4.14/zkData/myid
5.5 启动zk
/usr/local/zookeeper-3.4.14/bin/zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.14/bin/…/conf/zoo.cfg
Starting zookeeper … STARTED
###5.6 查看集群状态
/usr/local/zookeeper-3.4.14/bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.14/bin/…/conf/zoo.cfg
Mode: leader
六、三台kafka集群部署
6.1 解压
tar -zxvf kafka_2.11-2.1.1.tgz -C /usr/local/
6.2 重命名
mv /usr/local/kafka_2.11-2.1.1/ /usr/local/kafka
6.3 创建日志目录
mkdir -p /usr/local/kafka/logs
6.4 修改配置文件
vim /usr/local/kafka/config/server.properties
修改以下参数,这边要注意,broker.id值 每台服务器上必须不一致
#broker全局唯一编号
broker.id=1
#启用删除topic功能,没有则添加
delete.topic.enable=true
#指定kafka运行日志目录
log.dirs=/usr/local/kafka/logs
#配置zookeeper集群地址
zookeeper.connect=kafka1:2181,kafka2:2181,kafka3:2181
6.5 设置环境变量
vim /etc/profile
#KAFKA
KAFKA_HOME=/usr/local/kafka
PATH=
P
A
T
H
:
PATH:
PATH:KAFKA_HOME/bin
source /etc/profile
6.6 三台服务器上分别启动
/usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.properties &
七、kafka命令行操作
7.1 创建topic
/usr/local/kafka/bin/kafka-topics.sh --zookeeper kafka1:2181 --create --topic zhangsan --replication-factor 1 --partitions 1
7.2 查看当前服务器的topic
/usr/local/kafka/bin/kafka-topics.sh --zookeeper kafka1:2181 --list
7.3 一台服务器上执行,发送消息
/usr/local/kafka/bin/kafka-console-producer.sh --topic zhangsan --broker-list kafka1:9092
输入hello world
7.4 另一台服务器上执行,消费消息
/usr/local/kafka/bin/kafka-console-consumer.sh --topic zhangsan --bootstrap-server kafka1:9092 --from-beginning
7.5 显示hello world
/usr/local/kafka/bin/kafka-topics.sh --zookeeper kafka1:2181 --describe --topic zhangsan
7.6 删除该topic
/usr/local/kafka/bin/kafka-topics.sh --zookeeper kafka1:2181 --delete --topic zhangsan