综述/注意
kafka-eagle 现名:EFAK github
eagle首页:http://192.168.19.53:8048/ admin 123456
- 配置参数要用官网的,不要用书。
- 书说可以自行打包,但是也可以直接下载。
第1、2篇 安装部署
zookeeper
QuorumPeerMain是zookeeper核心进程
[root@localhost ~]# /data/ddos2/zookeeper/bin/zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /data/ddos2/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... already running as process 12514.
[root@localhost ~]# jps
12514 QuorumPeerMain #
16925 Jps
[root@localhost ~]#
~/.bash_profiles
可以实现免路径使用内部脚本,比如
/data/ddos2/kafka/bin/kafka-topics.sh --list -zookeeper dn1:2181,dn2:2181,dn3:2181
# 可以简化为
kafka-topics.sh --list -zookeeper dn1:2181,dn2:2181,dn3:2181
# 配置 java 全局变量
export JAVA_HOME=/data/ddos/jdk
export PATH=$PATH:$JAVA_HOME/bin:/data/ddos/efak-web/bin:/data/ddos2/zookeeper/bin
# 配置 zookeeper 全局变量
export ZK_HOME=/data/ddos2/zookeeper
export PATH=$PATH:$ZK_HOME/bin
# 配置 kafka 全局变量
export KAFKA_HOME=/data/ddos2/kafka
export PATH=$PATH:$KAFKA_HOME/bin
export KE_HOME=/data/ddos2/kafka-eagle
export PATH=$PATH:$KE_HOME/bin
kafka
书本补充
-
kafak JMX 启用(监控)
编写Kafka启动脚本,添加
# 添加JMX相关配置 if [ "x$JMX_PORT" = "x" ]; then export JMX_PORT=9999 # 设置JMX端口,默认是9999 fi export KAFKA_JMX_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.rmi.port=$JMX_PORT -Djava.rmi.server.hostname=localhost"
解决offline问题
service.properties
listeners不是写死的代理地址
broker.id=52 不可重复,是与其他代理的配置唯一不同
log.dirs=/data/ddos2/kafka/logs
zookeeper.connect=localhost:2181
# 设置 Kafka 节点唯一 ID
broker.id=52
# 开启删除 Kafka 主题属性
delete.topic.enable=true
# 非 SASL 模式配置 Kafka 集群
listeners=PLAINTEXT://localhost:9092 # 修改localhost为当前ip,否则启动报错其他节点已定义localhost:9092
# 设置网络请求处理线程数
num.network.threads=10
# 设置磁盘 IO 请求线程数
num.io.threads=20
# 设置发送 buffer 字节数
socket.send.buffer.bytes=1024000
# 设置收到 buffer 字节数
socket.receive.buffer.bytes=1024000
# 设置最大请求字节数
socket.request.max.bytes=1048576000
# 设置消息记录存储路径
log.dirs=/data/ddos2/kafka/logs
# 设置 Kafka 的主题分区数
num.partitions=6
# 设置主题保留时间
log.retention.hours=168
# 设置 Zookeeper 的连接地址
zookeeper.connect=dn1:2181,dn2:2181,dn3:2181
# 设置 Zookeeper 连接超时时间
zookeeper.connection.timeout.ms=60000
Kafka Eagle 监控
又名EFAK,国产
书本补充
-
免编译:官网直接下载
-
配置文件:必须官网的
-
kafak JMX 启用
编写Kafka启动脚本,添加
# 添加JMX相关配置 if [ "x$JMX_PORT" = "x" ]; then export JMX_PORT=9999 # 设置JMX端口,默认是9999 fi export KAFKA_JMX_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.rmi.port=$JMX_PORT -Djava.rmi.server.hostname=localhost"
system-config.properties
######################################
# 设置 Kafka 多集群的 Zookeeper 地址
######################################
efak.zk.cluster.alias=cluster1
cluster1.zk.list=192.168.19.52:2181,192.168.19.53:2181,192.168.19.54:2181
#cluster2.zk.list=xdn10:2181,xdn11:2181,xdn12:2181
######################################
# 配置 Zookeeper 连接池大小
######################################
kafka.zk.limit.size=14
######################################
# 浏览器访问 Kafka Eagle 的端口地址
######################################
efak.webui.port=8048
######################################
# Kafka 的消费信息是否存储在 Topic 中
######################################
cluster1.efak.offset.storage=kafka
cluster2.efak.offset.storage=zk
######################################
# 配置邮件告警服务器
######################################
#efak.mail.enable=false
#efak.mail.sa=alert_sa
#efak.mail.username=1363277762@qq.com
#efak.mail.password=123456
#efak.mail.server.host=smtp.126.com
#efak.mail.server.port=25
######################################
# 管理员删除 Topic 的口令
######################################
efak.topic.token=keadmin
######################################
# 是否开启 Kafka SASL 安全认证
######################################
cluster1.efak.sasl.enable=false
cluster1.efak.sasl.protocol=SASL_PLAINTEXT
cluster1.efak.sasl.mechanism=SCRAM-SHA-256
cluster1.efak.sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="kafka" password="kafka-eagle";
cluster1.efak.sasl.client.id=
cluster1.efak.blacklist.topics=
cluster1.efak.sasl.cgroup.enable=false
cluster1.efak.sasl.cgroup.topics=
#cluster2.efak.sasl.enable=false
#cluster2.efak.sasl.protocol=SASL_PLAINTEXT
#cluster2.efak.sasl.mechanism=PLAIN
#cluster2.efak.sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="kafka" password="kafka-eagle";
#cluster2.efak.sasl.client.id=
#cluster2.efak.blacklist.topics=
#cluster2.efak.sasl.cgroup.enable=false
#cluster2.efak.sasl.cgroup.topics=
######################################
# Kafka Eagle 数据存储到 MySQL
######################################
efak.driver=com.mysql.cj.jdbc.Driver
efak.url=jdbc:mysql://192.168.19.216:6306/kafka_eagle?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
efak.username=taishi
efak.password=Transfar@2022
######################################
主题、副本、分区
topic
自动创建
auto.create.topics.enable = true (默认)。
-
默认分区的数值
default.replication.factor 控制。
-
默认副本系数的值
default.replication.factor 控制。
常用命令
见paste
集群部署思路
先设置节点间免密登陆,然后使用for i do done命令实现部署集群文件夹/集群启动脚本/批量更新配置等
-
免密登陆
# 1、生成当前节点的私钥和公钥,一直回车 [hadoop@dn1 ~]$ ssh-keygen -t rsa # 2、将公钥(id_rsa.pub)文件内容追加到 authorized_keys [hadoop@dn1 ~]$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys # 3、赋予 600 权限 [hadoop@dn1 ~]$ chmod 600 ~/.ssh/authorized_keys # 4、其他节点 # 将 authorized_keys 文件分发到其他节点的/home/root/.ssh/目录中。 #在/tmp 目录中添加一个临时主机名文本文件 [hadoop@dn1 ~]$ vi /tmp/add.list # 添加如下内容,nd2为节点名 dn2 dn3 #使用 scp 命令同步 authorized_keys 文件到指定目录 [hadoop@dn1 ~]$ for i in `cat /tmp/add.list`;do scp ~/.ssh/authorized_keys $i:/home/root/.ssh;done
-
fori
# 在/tmp 目录中添加一个临时主机名文本文件 [hadoop@dn1 ~]$ vi /tmp/add.list # 添加如下内容 dn2 dn3 # 保存并退出 # 将/etc/hosts 文件复制到/tmp 目录中 [hadoop@dn1 ~]$ cp /etc/hosts /tmp # 使用 scp 命令将 hosts 文件下发到其他主机 [hadoop@dn1 ~]$ for i in `cat /tmp/add.list`;do scp /tmp/hosts $i:/tmp;done