1.前置
紧跟上文,还是选择相同的三台机器,操作系统为centos
,且三台机器的ip
如下:
- 192.168.80.130
- 192.168.80.131
- 192.168.80.132
同时需要将kafka
上传到这三台机器上,安装包跟之前讲解单机版安装版本一样
2.安装
-
解压
tar -zxvf kafka_2.12-2.8.0.tgz -C /opt/ mv /opt/kafka_2.12-2.8.0/ /opt/kafka chown -R kafka:kafka /opt/kafka
注意:三台机器都要操作
-
创建数据目录,用于
kafka
存储数据mkdir -p /var/data/kafka chown -R kafka:kafka /var/data/kafka
注意:三台机器都要操作
-
配置
修改配置文件,
vim /opt/kafka/config/server.properties
# broker id 集群唯一 broker.id=130 listeners=PLAINTEXT://192.168.80.130:9092 advertised.listeners=PLAINTEXT://192.168.80.130:9092 num.network.threads=3 num.io.threads=8 socket.send.buffer.bytes=102400 socket.request.max.bytes=104857600 log.dirs=/var/data/kafka num.recovery.threads.per.data.dir=1 offsets.topic.replication.factor=1 transaction.state.log.replication.factor=1 transaction.state.log.min.isr=1 log.retention.hours=168 # zookeeper集群地址 zookeeper.connect=192.168.80.130:2181,192.168.80.131:2181,192.168.80.132:2181 # Timeout in ms for connecting to zookeeper zookeeper.connection.timeout.ms=18000 group.initial.rebalance.delay.ms=0
配置文件的内容在之前单机版时已经详细解释过了,这里不再解释
这是在
192.168.80.130
机器上的配置,其他机器上也要进行相对应的配置 -
防火墙
关闭防火墙或者将端口加入到防火墙里面
systemctl stop firewalld firewall-cmd --add-port 9092/tcp --permanent firewall-cmd --reload
注意: 三台机器都要操作
-
配置环境变量
vim /etc/profile
,在文件末尾追加一下内容export KAFKA_HOME=/opt/kafka export PATH=$PATH:$KAFKA_HOME/bin
让配置生效
source /etc/profile
注意:三台都要配置
-
服务
在
/etc/systemd/system
新建kafka.service
文件touch kafka.service chmod u+x,o+x,g+x kafka.service
文件内容如下:
[Unit] Description=kafka Requires=network.target remote-fs.target After=network.target remote-fs.target zookeeper.service [Service] Type=forking User=kafka Group=kafka Environment=JAVA_HOME=/opt/jdk ExecStart=/opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/server.properties ExecStop=/opt/kafka/bin/kafka-server-stop.sh # 启动失败后重启 Restart=on-failure # 每次尝试重启间隔60秒 StartLimitInterval=60 # 最终尝试重启3000次 StartLimitBurst=3000 [Install] WantedBy=multi-user.target
注意三台机器都需要操作
-
命令
# 配置生效 systemctl daemon-reload # 启动 systemctl start kafka # 查看启动状态 systemctl status kafka # 查看启动日志 journalctl -xe # 关闭 systemctl stop kafka # 开启自启动 systemctl enable kafka
3. 监控
kafka
集群安装了以后,为了更加方便的管理集群,安装kafka-eagle
,对集群信息一目了然,安装细节之前的章节已经介绍了,这里再去安装一次
-
开启
JMX
监控编辑
vim /opt/kafka/bin/kafka-server-start.sh
在此处添加以下代码
export JMX_PORT="9999"
编辑
vim /opt/kafka/bin/kafka-run-class.sh
将此处代码修改为以下内容
if [ -z "$KAFKA_JMX_OPTS" ]; then KAFKA_JMX_OPTS="-Dcom.sun.management.jmxremote.rmi.port=$JMX_PORT -Djava.rmi.server.hostname=192.168.80.110 -Dcom.sun.anagement.jmxremote.local.only=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false " fi
重启
kafka
systemctl restart kafka
注意:三台机器都要配置
-
安装
kafka-eagle
在一台机器上安装
kafka-eagle
即可,不需要在所以的机器安装笔者这里是在
192.168.80.130
机器上安装解压
tar xvf kafka-eagle-bin-2.0.0.tar.gz -C . cd kafka-eagle-bin-2.0.0 tar -xvf kafka-eagle-web-2.0.0-bin.tar.gz -C /opt/ mv /opt/kafka-eagle-web-2.0.0 /opt/kafka-eagle chown -R kafka:kafka /opt/kafka-eagle
修改配置文件
vim /opt/kafka-eagle/conf/system-config.properties
内容如下:
###################################### # multi zookeeper & kafka cluster list ###################################### kafka.eagle.zk.cluster.alias=cluster1 cluster1.zk.list=192.168.80.130:2181,192.168.80.131:2181,192.168.80.132:2181 ###################################### # zookeeper enable acl ###################################### cluster1.zk.acl.enable=false ###################################### # broker size online list ###################################### cluster1.kafka.eagle.broker.size=20 ###################################### # zk client thread limit ###################################### kafka.zk.limit.size=25 ###################################### # kafka eagle webui port ###################################### kafka.eagle.webui.port=8048 ###################################### # kafka offset storage ###################################### cluster1.kafka.eagle.offset.storage=kafka ###################################### # kafka metrics, 15 days by default ###################################### kafka.eagle.metrics.charts=true kafka.eagle.metrics.retain=15 ###################################### # kafka sql topic records max ###################################### kafka.eagle.sql.topic.records.max=5000 kafka.eagle.sql.fix.error=true ###################################### # delete kafka topic token ###################################### kafka.eagle.topic.token=keadmin ###################################### # kafka sasl authenticate ###################################### cluster1.kafka.eagle.sasl.enable=false ###################################### # kafka ssl authenticate ###################################### cluster1.kafka.eagle.ssl.enable=false ###################################### # kafka sqlite jdbc driver address ###################################### kafka.eagle.driver=org.sqlite.JDBC kafka.eagle.url=jdbc:sqlite:/opt/kafka-eagle/db/ke.db kafka.eagle.username=root kafka.eagle.password=www.kafka-eagle.org
配置环境变量
vim /etc/profile
一台机器配置即可
export KE_HOME=/opt/kafka-eagle export PATH=$PATH:$KE_HOME/bin
让配置生效
source /etc/profile
将端口添加到防火墙或者关闭防火墙
# 关闭防火墙 systemctl stop firewalld # 添加端口 firewall-cmd --add-port=8048/tcp --permanent firewall-cmd --reload
创建服务文件
vim /etc/systemd/system/kafka-eagle.service
,内容如下:[Unit] Description=Kafka Eagle After=kafka.service [Service] Environment=KE_HOME=/opt/kafka-eagle Environment=JAVA_HOME=/opt/jdk User=kafka Group=kafka Type=forking ExecStart=/opt/kafka-eagle/bin/ke.sh start ExecReload=/opt/kafka-eagle/bin/ke.sh restart ExecStop=/opt/kafka-eagle/bin/ke.sh stop #启动失败后重启 Restart=on-failure #每次尝试重启间隔60秒 StartLimitInterval=60 #最终尝试重启50次 StartLimitBurst=50 [Install] WantedBy=multi-user.target
kafka-eagle
命令操作如下# 配置生效 systemctl daemon-reload # 启动 systemctl start kafka-eagle # 查看启动状态 systemctl status kafka-eagle # 查看启动日志 journalctl -xe # 关闭 systemctl stop kafka-eagle # 开启自启动 systemctl enable kafka-eagle
启动成功后,访问地址
192.168.80.130:8048
地址,即可看到监控网页账号:
admin/123456
也可以通过大屏展示监控
kafka
[图片上传失败...(image-53c984-1620823151774)]
例如我创建了一个
test_topic
主题,且分区数为3,副本数为3查看该主题即可看到分区分布信息,如下:
自此集群搭建完成
4. 安装(docker)
创建目录用来进行数据挂载
mkdir -p /root/kafka/data && chmod 777 /root/kafka/data
mkdir -p /root/kafka/config
当zookeeper集群创建好了以后就可以去创建kafka
集群了,具体步骤如下:
在
192.168.80.130
机器上输入以下指令
docker run -di --network=host --privileged=true \
--name kafka -p 9092:9092 \
-e KAFKA_BROKER_ID=1 \
-e KAFKA_ZOOKEEPER_CONNECT=192.168.80.130:2181,192.168.80.131:2181,192.168.80.132:2181 \
-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.80.130:9092 \
-e ALLOW_PLAINTEXT_LISTENER=yes \
-v /root/kafka/data:/bitnami/kafka/data \
-v /root/kafka/config:/bitnami/kafka/config \
bitnami/kafka:2.6.0
在
192.168.80.131
机器上输入以下指令
docker run -di --network=host --privileged=true \
--name kafka -p 9092:9092 \
-e KAFKA_BROKER_ID=2 \
-e KAFKA_ZOOKEEPER_CONNECT=192.168.80.130:2181,192.168.80.131:2181,192.168.80.132:2181 \
-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.80.131:9092 \
-e ALLOW_PLAINTEXT_LISTENER=yes \
-v /root/kafka/data:/bitnami/kafka/data \
-v /root/kafka/config:/bitnami/kafka/config \
bitnami/kafka:2.6.0
在
192.168.80.132
机器上输入以下指令
docker run -di --network=host --privileged=true \
--name kafka -p 9092:9092 \
-e KAFKA_BROKER_ID=3 \
-e KAFKA_ZOOKEEPER_CONNECT=192.168.80.130:2181,192.168.80.131:2181,192.168.80.132:2181 \
-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.80.132:9092 \
-e ALLOW_PLAINTEXT_LISTENER=yes \
-v /root/kafka/data:/bitnami/kafka/data \
-v /root/kafka/config:/bitnami/kafka/config \
bitnami/kafka:2.6.0