3 efak部署脚本(docker)
efak官网地址:EFAK
3.1 部署环境准备
linux环境、docker环境以及kafka-eagle依赖包
部署环境配置 | 版本 | 下载链接 |
---|---|---|
ECS | CentOS 7.6 | 5台2vCPUs|4GiB |
docker | 19.03.9 | 脚本 |
kafka-eagle | 3.0.1 | https://github.com/smartloli/kafka-eagle-bin/archive/v3.0.1.tar.gz |
3.2服务器部署
id | 系统镜像 | 规格 | IP |
---|---|---|---|
kafka1 | x86 CentOS 7.6 | 2vCPUs|4GiB | 192.168.0.208 |
kafka2 | x86 CentOS 7.6 | 2vCPUs|4GiB | 192.168.0.210 |
kafka3 | x86 CentOS 7.6 | 2vCPUs|4GiB | 192.168.0.91 |
kafka4 | x86 CentOS 7.6 | 2vCPUs|4GiB | 192.168.0.197 |
efak | x86 CentOS 7.6 | 2vCPUs|4GiB | 192.168.0.190 |
mysql | x86 CentOS 7.6 | 2vCPUs|4GiB | 192.168.0.226 |
3.3 脚本使用
保存下面脚本内容到文件:install-efak.sh
vim install-efak.sh chmod +x install-efak.sh ource install-efak.sh #一键安装完成后可输入jps查看
3.4 脚本内容
#!/bin/bash
##################### 准备工作 #####################
#1.服务器直接下载包可能会很慢,建议下载到本地后上传至服务器
#2.可自定义安装包存放目录
#3.注意修改IP地址&&
#4.配置文件根据自己情况改
#5.根据需求增添ip和主机名(修改完后重启)
#6.脚本&&&&压缩包放在一个目录下/opt/kafka-eagle
#7.dockerfile里的路径谨慎修改
#安装包目录mydir,即执行脚本的当前目录
mydir=$(cd "$(dirname "$0")";pwd)
echo $mydir
#更改IP
ip1=172.16.20.83
ip2=172.16.20.113
ip3=172.16.20.139
mysqlip=172.16.20.131
#efak版本变量
EAGLE_VERSION=3.0.1
#目录变量
mkdir /opt/kafka-eagle #安装包和脚本的存放目录
mkdir /usr/local/bin/kafka-eagle #存放efak的配置文件目录
file1=/opt/kafka-eagle
file2=/usr/local/bin/kafka-eagle
###########################################################
cd $file1
#上传到华为云后压缩包地址(官网地址在上边)
wget https://hcie-lxw.obs.cn-east-3.myhuaweicloud.com/kafka-eagle-bin-3.0.1.tar.gz
#efak的配置文件
cat <<EOF>> $file2/system-config.properties
######################################
# multi zookeeper & kafka cluster list
# Settings prefixed with 'kafka.eagle.' will be deprecated, use 'efak.' instead
######################################
efak.zk.cluster.alias=cluster1
cluster1.zk.list=$ip1:2181,$ip2:2181,$ip3:2181/myKafka
#cluster1.zk.list=$ip1:2181
# zookeeper enable acl
######################################
cluster1.zk.acl.enable=false
cluster1.zk.acl.schema=digest
cluster1.zk.acl.username=admin
cluster1.zk.acl.password=admin
######################################
# 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=true
cluster1.efak.sasl.protocol=SASL_PLAINTEXT
cluster1.efak.sasl.mechanism=PLAIN
cluster1.efak.sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="admin" password="admin";
cluster1.efak.sasl.client.id=
cluster1.efak.blacklist.topics=
cluster1.efak.sasl.cgroup.enable=false
cluster1.efak.sasl.cgroup.topics=
####################################
######################################
# kafka sqlite jdbc driver address
######################################
efak.driver=org.sqlite.JDBC
efak.url=jdbc:sqlite:/hadoop/kafka-eagle/db/ke.db
efak.username=root
efak.password=www.kafka-eagle.org
######################################
# kafka mysql jdbc driver address
######################################
efak.driver=com.mysql.cj.jdbc.Driver
efak.url=jdbc:mysql://$mysqlip:3306/ke?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
efak.username=root
efak.password=01271916Tao@
EOF
#创建镜像
cat <<EOF>> $file1/dockerfile
#kafka-eagle的Dockerfile镜像脚本
#引入依赖的java环境
FROM openjdk:8-alpine3.9
#环境变量配置
ENV KE_HOME=/opt/kafka-eagle
ENV EAGLE_VERSION=3.0.1
CMD ["/bin/bash"]
#工作目录
WORKDIR /opt/kafka-eagle
#拷贝压缩包到临时目录
COPY kafka-eagle-bin-$EAGLE_VERSION.tar.gz /tmp
#将上传的kafka-eagle压缩包解压放入镜像中并授权
RUN mkdir /opt/kafka-eagle -p && cd /opt && \
tar zxvf /tmp/kafka-eagle-bin-$EAGLE_VERSION.tar.gz -C kafka-eagle --strip-components 1 && rm -f /tmp/kafka-eagle-bin-$EAGLE_VERSION.tar.gz && \
cd kafka-eagle;tar zxvf efak-web-$EAGLE_VERSION-bin.tar.gz --strip-components 1 && rm -f efak-web-$EAGLE_VERSION-bin.tar.gz && \
chmod +x /opt/kafka-eagle/bin/ke.sh && \
mkdir -p /hadoop/kafka-eagle/db
#将kafka-eagle的启动文件拷贝到镜像中
COPY entrypoint.sh /opt/kafka-eagle/bin
#给启动文件授权
RUN chmod +x /opt/kafka-eagle/bin/entrypoint.sh
#暴露端口
EXPOSE 8048 8080
#镜像的启动命令
CMD ["sh","/opt/kafka-eagle/bin/entrypoint.sh"]
EOF
#启动脚本
cat <<EOF>> $file1/entrypoint.sh
#!/usr/bin
#kafka-eagle项目启动的命令
sh $file1/bin/ke.sh start
tail -f /dev/null
EOF
#构建镜像
docker build -f dockerfile -t efak:3.0.1 .
#创建网络
docker network create app-tier
#启动efak
docker run --name efak -p 8048:8048 --network app-tier -v $file2/system-config.properties:$file1/conf/system-config.properties -d efak:3.0.1
4.5 完成安装
用docker logs +【容器名】查看完成部署
安装界面
kafka监控(这里反应时间略长)