环境要求
- kafka2
- mac或linux
步骤
一、在mac中安装kafka
配置一下kafka的环境变量:
sudo vim /etc/profile
加入配置
export KAFKA_HOME=/usr/local/Cellar/kafka/2.1.0
export PATH=.:$PATH:$KAFKA_HOME/bin
刷新一下配置
source /etc/profile
二、启动zookeeper
可以直接使用kafka默认的zookeeper:
zookeeper-server-start /usr/local/etc/kafka/zookeeper.properties &
三、配置kafka
假设我们只搭建三个kafka集群,那么我们积极需要给这三个kafka配置server.properties
- 复制两份server.properties
cp /usr/local/etc/kafka/server.properties /usr/local/etc/kafka/server1.properties
cp /usr/local/etc/kafka/server.properties /usr/local/etc/kafka/server2.properties - 分别修改server1.properties、server2.properties
修改位置 | server.properties | server1.properties | server2.properties |
---|---|---|---|
broker.id | broker.id=0 | broker.id=1 | broker.id=2 |
listeners | listeners=PLAINTEXT://:9092 | listeners=PLAINTEXT://:9093 | listeners=PLAINTEXT://:9094 |
log.dir | log.dir=/usr/local/var/lib/kafka-logs-1 | log.dir=/usr/local/var/lib/kafka-logs-2 | log.dir=/usr/local/var/lib/kafka-logs-3 |
- 启动三个kafka
kafka-server-start /usr/local/etc/kafka/server.properties &
kafka-server-start /usr/local/etc/kafka/server1.properties &
kafka-server-start /usr/local/etc/kafka/server2.properties & - 创建一个有三个副本的topic
kafka-topics –create –zookeeper localhost:2181 –replication-factor 3 –partitions 1 –topic mytopic
- 使用describe命令查看topic的信息
kafka-topics –describe –zookeeper localhost:2181 –topic mytopic
“leader”:该集群中broker.id=2 的 kafka是 leader,leader负责数据的读取、同步
“replicas”:存在的节点列表(包含已经挂掉的)
“isr”:“同步备份”的节点列表(不包含已经挂掉的,也就是活着的节点并且正在同步leader)。
测试
由上图可知当前的leader是broker.id为2的kafka服务器,下面测试将当前的leader杀死
杀死一个id为2的kafka,模拟当前leader服务器宕机
解释上图:
Leader:0:当旧的leader挂掉之后马上重新选举出一个新的leader(broker.id为0的kafka)
Isr:0,1:将已经挂掉的kafka去除同步备份的节点列表