kafka集群部署
一、环境规划
组成 | 安装节点 | 版本 |
---|---|---|
java1.8 | 192.168.15.139 192.168.8.135 192.168.8.136 | 1.8.0_212 |
kafka | 192.168.15.139 192.168.8.135 192.168.8.136 | 3.1.0 |
zookeeper | 192.168.15.139 192.168.8.135 192.168.8.136 | 3.1.0kafka自带 |
efak-web | 192.168.15.139 | 2.1.0 |
二、安装kafka和zookeeper
1.下载kafka3.0以上版本,自带zookeeper
cd /usr/local
wget https://dlcdn.apache.org/kafka/3.1.0/kafka_2.13-3.1.0.tgz --no-check-certificate
tar -zxvf kafka_2.13-3.1.0.tgz(我这里解压了两次)
cd kafka_2.13-3.1.0/
2.编辑配置文件
vim config/server.properties
broker.id=0
listeners=PLAINTEXT://192.168.15.139:9092
log.dirs=/usr/local/kafka_2.13-3.1.0/kafka-logs
zookeeper.connect=192.168.15.139:2181,192.168.8.135:2181,192.168.8.136:2181
把kafka的包同步到另外两个节点
scp -r kafka_2.13-3.1.0 root@192.168.8.135:/usr/local/
scp -r kafka_2.13-3.1.0 root@192.168.8.136:/usr/local/
其它两个节点配置文件修改为
broker.id=1
listeners=PLAINTEXT://192.168.8.135:9092
log.dirs=/usr/local/kafka_2.13-3.1.0/kafka-logs
zookeeper.connect=192.168.15.139:2181,192.168.8.135:2181,192.168.8.136:2181
broker.id=2
listeners=PLAINTEXT://192.168.8.136:9092
log.dirs=/usr/local/kafka_2.13-3.1.0/kafka-logs
zookeeper.connect=192.168.15.139:2181,192.168.8.135:2181,192.168.8.136:2181
3.配置环境变量(三个节点都需要)
# 添加环境变量
vi /etc/profile
# 新增环境变量配置
export KAFKA_HOME=/usr/local/kafka_2.13-3.1.0
export PATH=$PATH:$KAFKA_HOME/bin
# 使得环境变量立刻生效
source /etc/profile
3.启动zookeeper
bin/zookeeper-server-start.sh -daemon ./config/zookeeper.properties &
4.启动kafka
bin/kafka-server-start.sh -daemon ./config/server.properties &
5.常用命令
#topic创建
./kafka-topics.sh --create --bootstrap-server IP:9092 --replication-factor 1 --partitions 1 --topic test1
#当前topic列表查看
./kafka-topics.sh --list --bootstrap-server IP:9092
#修改topic的partition数
kafka-topics.sh --bootstrap-server IP:9092 --alter --topic mytest --partitions 5
#topic对应的消息查看
./kafka-topics.sh --describe --bootstrap-server IP:9092
#topic删除
./kafka-topics.sh --delete --bootstrap-server IP:9092 --topic test1
#查看消费者组列表
./kafka-consumer-groups.sh --bootstrap-server 127.0.0.1:9092 --list
#查看消费者组的消费情况:
./kafka-consumer-groups.sh --describe --bootstrap-server 127.0.0.1:9092 --group invoiceUpload
三、安装kafka管理工具
1.下载并解压efak
mkdir -p /usr/local/kafka_2.13-3.1.0/efak
wget https://codeload.github.com/smartloli/kafka-eagle-bin/tar.gz/refs/tags/v2.1.0
tar -zxvf efak-web-2.1.0-bin.tar.gz
2.编辑system-config.properties
修改的地方看中文注释处
######################################
我们只有一个集群,把clustre2注释,cluster1.zk.list修改为zookeeper的集群节点,和kafka配置文件上的一致
######################################
efak.zk.cluster.alias=cluster1
cluster1.zk.list=192.168.15.139:2181,192.168.8.135:2181,192.168.8.136:2181
#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.efak.broker.size=20
######################################
# zk client thread limit
######################################
kafka.zk.limit.size=16
######################################
# EFAK webui port
######################################
efak.webui.port=8048
######################################
# EFAK enable distributed
######################################
efak.distributed.enable=false
efak.cluster.mode.status=master
efak.worknode.master.host=localhost
efak.worknode.port=8085
######################################
# kafka jmx acl and ssl authenticate
######################################
cluster1.efak.jmx.acl=false
cluster1.efak.jmx.user=keadmin
cluster1.efak.jmx.password=keadmin123
cluster1.efak.jmx.ssl=false
cluster1.efak.jmx.truststore.location=/data/ssl/certificates/kafka.truststore
cluster1.efak.jmx.truststore.password=ke123456
######################################
# kafka offset storage
######################################
cluster1.efak.offset.storage=kafka
cluster2.efak.offset.storage=zk
######################################
# kafka jmx uri
######################################
cluster1.efak.jmx.uri=service:jmx:rmi:///jndi/rmi://%s/jmxrmi
######################################
# kafka metrics, 15 days by default
######################################
efak.metrics.charts=true
efak.metrics.retain=15
######################################
# kafka sql topic records max
######################################
efak.sql.topic.records.max=5000
efak.sql.topic.preview.records.max=10
######################################
# delete kafka topic token
######################################
efak.topic.token=keadmin
######################################
# kafka sasl authenticate
######################################
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 ssl authenticate
######################################
cluster3.efak.ssl.enable=false
cluster3.efak.ssl.protocol=SSL
cluster3.efak.ssl.truststore.location=
cluster3.efak.ssl.truststore.password=
cluster3.efak.ssl.keystore.location=
cluster3.efak.ssl.keystore.password=
cluster3.efak.ssl.key.password=
cluster3.efak.ssl.endpoint.identification.algorithm=https
cluster3.efak.blacklist.topics=
cluster3.efak.ssl.cgroup.enable=false
cluster3.efak.ssl.cgroup.topics=
######################################
# 如果不用MySQL的话,把sqlite 注释放开
######################################
efak.driver=org.sqlite.JDBC
efak.url=jdbc:sqlite:/usr/local/kafka_2.13-3.1.0/efak/db/ke.db
efak.username=root
efak.password=anychat
######################################
#mysql的版本要8.0以上我的是5.7不符合,用自带的sqlite
######################################
#efak.driver=com.mysql.cj.jdbc.Driver
#efak.url=jdbc:mysql://127.0.0.1:3306/ke?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
#efak.username=root
#efak.password=anychat
3.启动
# 进入启动命令文件夹
cd /usr/local/kafka_2.13-3.1.0/efak/efak-web-2.1.0/bin
# 授权
chmod 777 ke.sh
# 启动 服务
ke.sh start
# 重启
ke.sh restart
# 停止服务
ke.sh stop
4.访问
ip:8048
admin/123456