4.2.5 Kafka集群与运维(集群的搭建、监控工具 Kafka Eagle)

2021年3月23日 22点热度 0条评论 来源: weixin_47134119

Kafka集群与运维

文章目录

1.集群的搭建

搭建设计

1.1 搭建zookeeper集群

1.1.1 上传JDK到linux,安装并配置JDK

# 使用​​rpm​​安装​​JDK ​
​rpm ​​-ivh ​​jdk-8u261-linux-x64.rpm ​
​# ​​默认的安装路径是​​/usr/java/jdk1.8.0_261-amd64 ​# ​​配置​​JAVA_HOME ​
​vim ​​/etc/profile ​
​# ​​文件最后添加两行 ​
​export ​​JAVA_HOME​​=​​/usr/java/jdk1.8.0_261-amd64 ​
​export ​​PATH​​=​​$PATH​​:​​$JAVA_HOME​​/bin ​
​# ​​退出​​vim​​,使配置生效 ​
​source ​/etc/profile

注:三台服务器都要配置

1.1.2. Linux 安装Zookeeper,三台Linux都安装,以搭建Zookeeper集群

  • 上传zookeeper-3.4.14.tar.gz到Linux
  • 解压并配置zookeeper

linux121配置

# 解压到/opt目录​
​tar -zxf zookeeper-3.4.14.tar.gz -C /opt​
​​​
​# 配置​
​cd /opt/zookeeper-3.4.14/conf​
​cp zoo_sample.cfg zoo.cfg​
​vim zoo.cfg​
​​​
​# 设置​
​dataDir=/var/lagou/zookeeper/data​
​​​
​# 添加​
​server.1=linux121:2881:3881​
​server.2=linux122:2881:3881​
​server.3=linux123:2881:3881​
​​​
​# 退出vim​
​mkdir -p /var/lagou/zookeeper/data​
​echo 1 > /var/lagou/zookeeper/data/myid​
​​​
​# 配置环境变量​
​vim /etc/profile​
​​​
​# 添加​
​export ZOOKEEPER_PREFIX=/opt/zookeeper-3.4.14​
​export PATH=$PATH:$ZOOKEEPER_PREFIX/bin​
​export ZOO_LOG_DIR=/var/lagou/zookeeper/log​
​​​
​# 退出vim,让配置生效​
​source /etc/profile​
​​​
​# 将/opt/zookeeper-3.4.14拷贝到linux122,linux123​
​scp -r /opt/zookeeper-3.4.14/ linux122:/opt​
​scp -r /opt/zookeeper-3.4.14/ linux123:/opt​

linux122配置

# 配置环境变量
vim /etc/profile

# 在配置JDK环境变量基础上,添加内容
export ZOOKEEPER_PREFIX=/opt/zookeeper-3.4.14
export PATH=$PATH:$ZOOKEEPER_PREFIX/bin
export ZOO_LOG_DIR=/var/lagou/zookeeper/log

# 退出vim,让配置生效
source /etc/profile
mkdir -p /var/lagou/zookeeper/data
echo 2 > /var/lagou/zookeeper/data/myid

linux123配置

# 配置环境变量
vim /etc/profile

# 在配置JDK环境变量基础上,添加内容
export ZOOKEEPER_PREFIX=/opt/zookeeper-3.4.14
export PATH=$PATH:$ZOOKEEPER_PREFIX/bin
export ZOO_LOG_DIR=/var/lagou/zookeeper/log

# 退出vim,让配置生效
source /etc/profile
mkdir -p /var/lagou/zookeeper/data
echo 3 > /var/lagou/zookeeper/data/myid

1.1.3.启动zookeeper

# 在三台Linux上启动Zookeeper
[root@linux121 ~]# zkServer.sh start
[root@linux121 ~]# zkServer.sh start
[root@linux121 ~]# zkServer.sh start

1.2、Kafka集群搭建

2.1 安装Kafka

上传并解压Kafka到/opt

# 解压到/opt
tar -zxf kafka_2.12-1.0.2.tgz -C /opt

# 拷贝到linux122和linux123
scp -r /opt/kafka_2.12-1.0.2/ linux122:/opt
scp -r /opt/kafka_2.12-1.0.2/ linux123:/opt

2.2 配置Kafka

# 配置环境变量,三台Linux都要配置
vim /etc/profile

# 添加以下内容:
export KAFKA_HOME=/opt/kafka_2.12-1.0.2
export PATH=$PATH:$KAFKA_HOME/bin

# 让配置生效
source /etc/profile

# linux121配置
vim /opt/kafka_2.12-1.0.2/config/server.properties
broker.id=0
listeners=PLAINTEXT://:9092
advertised.listeners=PLAINTEXT://linux121:9092
log.dirs=/var/lagou/kafka/kafka-logs
zookeeper.connect=linux121:2181,linux122:2181,linux123:2181/myKafka
# 其他使用默认配置

# linux122配置
vim /opt/kafka_2.12-1.0.2/config/server.properties
broker.id=1
listeners=PLAINTEXT://:9092
advertised.listeners=PLAINTEXT://linux122:9092
log.dirs=/var/lagou/kafka/kafka-logs
zookeeper.connect=linux121:2181,linux122:2181,linux123:2181/myKafka
# 其他使用默认配置

# linux123配置
vim /opt/kafka_2.12-1.0.2/config/server.properties
broker.id=2

listeners=PLAINTEXT://:9092
advertised.listeners=PLAINTEXT://linux123:9092
log.dirs=/var/lagou/kafka/kafka-logs
zookeeper.connect=linux121:2181,linux122:2181,linux123:2181/myKafka
# 其他使用默认配置

注:/var/lagou/kafka/kafka-logs 需要创建下

mkdir -p /var/lagou/kafka/kafka-logs

2.3 启动Kafka

[root@linux121 ~]# kafka-server-start.sh -daemon /opt/kafka_2.12-1.0.2/config/server.properties
[root@linux122 ~]# kafka-server-start.sh -daemon /opt/kafka_2.12-1.0.2/config/server.properties
[root@linux123 ~]# kafka-server-start.sh -daemon /opt/kafka_2.12-1.0.2/config/server.properties

2.监控工具 Kafka Eagle

我们可以使用Kafka-eagle管理Kafka集群
核心模块:

  • 面板可视化
  • 主题管理,包含创建主题、删除主题、主题列举、主题配置、主题查询等
  • 消费者应用:对不同消费者应用进行监控,包含Kafka API、Flink API、Spark API、Storm API、Flume API、LogStash API等
  • 集群管理:包含对Kafka集群和Zookeeper集群的详情展示,其内容包含Kafka启动时间、Kafka端口号、Zookeeper Leader角色等。同时,还有多集群切换管理,Zookeeper Client操作入口
  • 集群监控:包含对Broker、Kafka核心指标、Zookeeper核心指标进行监控,并绘制历史趋势图
  • 告警功能:对消费者应用数据积压情况进行告警,以及对Kafka和Zookeeper监控度进行告警。同时,支持邮件、微信、钉钉告警通知
  • 系统管理:包含用户创建、用户角色分配、资源访问进行管理

架构:

  • 可视化:负责展示主题列表、集群健康、消费者应用等
  • 采集器:数据采集的来源包含Zookeeper、Kafka JMX & 内部Topic、Kafka API(Kafka 2.x以后版本)
  • 数据存储:目前Kafka Eagle存储采用MySQL或SQLite,数据库和表的创建均是自动完成的,按照官方文档进行配置好,启动Kafka Eagle就会自动创建,用来存储元数据和监控数据
  • 监控:负责见消费者应用消费情况、集群健康状态
  • 告警:对监控到的异常进行告警通知,支持邮件、微信、钉钉等方式
  • 权限管理:对访问用户进行权限管理,对于管理员、开发者、访问者等不同角色的用户,分配不用的访问权限

2.1 需要Kafka节点开启JMX

[root@node4 bin]# vim /opt/kafka_2.12-1.0.2/bin/kafka-server-start.sh 

2.2 安装

# 下载编译好的包
wget http://pkgs-linux.cvimer.com/kafka-eagle.zip

# 配置kafka-eagle
unzip kafka-eagle.zip
cd kafka-eagle/kafka-eagle-web/target
mkdir -p test
cp kafka-eagle-web-2.0.1-bin.tar.gz test/
tar xf kafka-eagle-web-2.0.1-bin.tar.gz
cd kafka-eagle-web-2.0.1

2.3 配置环境变量:

vim /etc/profile
#添加
KE_HOME=/opt/lagou/software/kafka-eagle/kafka-eagle-web/target/test/kafka-eagle-web-2.0.1
PATH=$PATH:$KE_HOME/bin

conf下的配置文件:system-config.properties

######################################
# multi zookeeper & kafka cluster list
 
######################################
# 集群的别名,用于在kafka-eagle中进行区分。
# 可以配置监控多个集群,别名用逗号隔开
# kafka.eagle.zk.cluster.alias=cluster1,cluster2,cluster3
kafka.eagle.zk.cluster.alias=cluster1
# cluster1.zk.list=10.1.201.17:2181,10.1.201.22:2181,10.1.201.23:2181
# 配置当前集群的zookeeper地址,此处的值要与Kafka的server.properties中的zookeeper.connect的值一致
# 此处的前缀就是集群的别名
cluster1.zk.list=node2:2181,node3:2181,node4:2181/myKafka
#cluster2.zk.list=xdn10:2181,xdn11:2181,xdn12:2181
######################################
# zookeeper enable acl
######################################
cluster1.zk.acl.enable=false
cluster1.zk.acl.schema=digest
cluster1.zk.acl.username=test
cluster1.zk.acl.password=test123
######################################
# broker size online list
######################################
cluster1.kafka.eagle.broker.size=20
######################################
# zookeeper客户端连接数限制
######################################
kafka.zk.limit.size=25
######################################
# kafka eagle网页端口号
######################################
kafka.eagle.webui.port=8048
######################################
# kafka 消费信息存储位置,用来兼容kafka低版本
######################################
cluster1.kafka.eagle.offset.storage=kafka
cluster2.kafka.eagle.offset.storage=zk
######################################
# 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
######################################
# 管理员删除kafka中topic的口令
######################################
kafka.eagle.topic.token=keadmin
######################################
# kafka 集群是否开启了认证模式,此处是cluster1集群的配置,禁用
######################################
cluster1.kafka.eagle.sasl.enable=false
cluster1.kafka.eagle.sasl.protocol=SASL_PLAINTEXT
cluster1.kafka.eagle.sasl.mechanism=SCRAM-SHA-256
cluster1.kafka.eagle.sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="kafka" password="kafka-eagle";
cluster1.kafka.eagle.sasl.client.id=
cluster1.kafka.eagle.sasl.cgroup.enable=false
cluster1.kafka.eagle.sasl.cgroup.topics=
######################################
# kafka ssl authenticate,示例配置
######################################
cluster2.kafka.eagle.sasl.enable=false
cluster2.kafka.eagle.sasl.protocol=SASL_PLAINTEXT
cluster2.kafka.eagle.sasl.mechanism=PLAIN
cluster2.kafka.eagle.sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="kafka" password="kafka-eagle";
cluster2.kafka.eagle.sasl.client.id=
cluster2.kafka.eagle.sasl.cgroup.enable=false
cluster2.kafka.eagle.sasl.cgroup.topics=
######################################
# kafka ssl authenticate,示例配置
######################################
cluster3.kafka.eagle.ssl.enable=false
cluster3.kafka.eagle.ssl.protocol=SSL
cluster3.kafka.eagle.ssl.truststore.location=
cluster3.kafka.eagle.ssl.truststore.password=
cluster3.kafka.eagle.ssl.keystore.location=
cluster3.kafka.eagle.ssl.keystore.password=
cluster3.kafka.eagle.ssl.key.password=
cluster3.kafka.eagle.ssl.cgroup.enable=false
cluster3.kafka.eagle.ssl.cgroup.topics=
######################################
# 存储监控数据的数据库地址
# kafka默认使用sqlite存储,需要指定和创建sqlite的目录
# 如 /home/lagou/hadoop/kafka-eagle/db
######################################
kafka.eagle.driver=org.sqlite.JDBC
kafka.eagle.url=jdbc:sqlite:/home/lagou/hadoop/kafka-eagle/db/ke.db
kafka.eagle.username=root
kafka.eagle.password=www.kafka-eagle.org
######################################
# 还可以使用MySLQ存储监控数据
######################################
#kafka.eagle.driver=com.mysql.jdbc.Driver
#kafka.eagle.url=jdbc:mysql://127.0.0.1:3306/ke?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
#kafka.eagle.username=root
#kafka.eagle.password=123456
######################################
# kafka eagle 设置告警邮件服务器
######################################
kafka.eagle.mail.enable=true
kafka.eagle.mail.sa=kafka_lagou_alert
kafka.eagle.mail.username=kafka_lagou_alert@163.com
kafka.eagle.mail.password=Pas2W0rd
kafka.eagle.mail.server.host=smtp.163.com
kafka.eagle.mail.server.port=25

也可以自行编译, https://github.com/smartloli/kafka-eagle 创建Eagel的存储目录:mkdir -p /hadoop/kafka-eagle

# 启动kafka-eagle
./bin/ke.sh start

会提示登陆地址和账号密码

账号:admin 密码:123456

    原文作者:weixin_47134119
    原文地址: https://blog.csdn.net/weixin_47134119/article/details/115128395
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。