美文网首页
kafka 国内开源工具 kafka-eagle k8s部署记录

kafka 国内开源工具 kafka-eagle k8s部署记录

作者: 周周周_e600 | 来源:发表于2019-07-26 15:43 被阅读0次

相关链接

软件开源连接Git hub

软件官方说明文档

官方软件下载包

docker hub 参考文档

网上关于kafka-eagle的部署文档大多是利用安装包直接部署,利用docker甚至k8s部署的文档几乎没找到,所以这里先记录下k8s 部署过程中的坑

1. docker image

利用上面的docker hub 中的docker file 进行了自己的改进。

  1. 自己修正了 启动脚本,将ke.sh 增加了下自己的代码,以便容器可以运行
  2. 涉及到的 tarball 需要到官方网站下载,并且下载时最好要科学上网一下,否则很慢
FROM java:8-alpine
 
ENV KE_HOME=/opt/kafka-eagle
ENV EAGLE_VERSION=1.3.5
 
COPY kafka-eagle-bin-${EAGLE_VERSION}.tar.gz  /
RUN apk --update add wget gettext tar bash sqlite
 
#get and unpack kafka eagle
RUN mkdir -pv /opt/kafka-eagle/conf;mv kafka-eagle-bin-${EAGLE_VERSION}.tar.gz /opt;cd /opt && \
    tar zxvf kafka-eagle-bin-${EAGLE_VERSION}.tar.gz -C kafka-eagle --strip-components 1 && \
    cd kafka-eagle;tar zxvf kafka-eagle-web-${EAGLE_VERSION}-bin.tar.gz --strip-components 1 && \
    chmod +x /opt/kafka-eagle/bin/ke.sh && \
    mkdir -p /hadoop/kafka-eagle/db 

EXPOSE 8048 8080
COPY ke_1.sh /opt/kafka-eagle/bin
ENTRYPOINT ["/opt/kafka-eagle/bin/ke_1.sh","start"] ###这里的 ke_1.sh 是自己处理过的,因为官方的脚本 运行完毕后会退出,这样docker启动的话容器就会退出。所以我在官方的ke.sh 启动代码段增加了一行命令: read test   使容器不退出
 
WORKDIR /opt/kafka-eagle

2. configmap配置文件配置

kubectl create configmap kafka-eagle-config -n kafka --from-file=kafka_client_jaas.conf \
--from-file=log4j.properties \
--from-file=system-config.properties

## 这三个文件是服务需要的配置文件,可以自己修改配置后以configmap存储在k8s以便容器启动时使用
配置文件内容(里面并未配置报警等,只是调研启动服务用)
######################################
# multi zookeeper&kafka cluster list
######################################
kafka.eagle.zk.cluster.alias=cluster1
cluster1.zk.list=kafka-zookeeper:2181

######################################
# 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

######################################
# enable kafka metrics
######################################
kafka.eagle.metrics.charts=true
kafka.eagle.sql.fix.error=true

######################################
# kafka sql topic records max
######################################
kafka.eagle.sql.topic.records.max=5000

######################################
# alarm email configure
######################################
kafka.eagle.mail.enable=false
kafka.eagle.mail.sa=alert_sa@163.com
kafka.eagle.mail.username=alert_sa@163.com
kafka.eagle.mail.password=mqslimczkdqabbbh
kafka.eagle.mail.server.host=smtp.163.com
kafka.eagle.mail.server.port=25

######################################
# alarm im configure
######################################
#kafka.eagle.im.dingding.enable=true
#kafka.eagle.im.dingding.url=https://oapi.dingtalk.com/robot/send?access_token=

#kafka.eagle.im.wechat.enable=true
#kafka.eagle.im.wechat.token=https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=xxx&corpsecret=xxx
#kafka.eagle.im.wechat.url=https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=
#kafka.eagle.im.wechat.touser=
#kafka.eagle.im.wechat.toparty=
#kafka.eagle.im.wechat.totag=
#kafka.eagle.im.wechat.agentid=

######################################
# delete kafka topic token
######################################
kafka.eagle.topic.token=keadmin

######################################
# kafka sasl authenticate
######################################
cluster1.kafka.eagle.sasl.enable=false
cluster1.kafka.eagle.sasl.protocol=SASL_PLAINTEXT
cluster1.kafka.eagle.sasl.mechanism=PLAIN
kafka.eagle.sasl.client=/root/kafka-eagle/kafka-eagle/kafka-eagle-web-1.3.4/conf/kafka_client_jaas.conf

######################################
# kafka jdbc driver address
######################################
#kafka.eagle.driver=org.sqlite.JDBC
#kafka.eagle.url=jdbc:sqlite:/hadoop/kafka-eagle/db/ke.db
#kafka.eagle.username=root
#kafka.eagle.password=www.kafka-eagle.org
# user mysql databases 
### 注意点: mysql 我用最新版是服务启动有问题,改用5.6 版后正常
### 数据库要提前创建好相关的库和用户
### mysql:3306 我这里是在k8s环境的配置,所以host只是mysql service 名字。
kafka.eagle.driver=com.mysql.jdbc.Driver
kafka.eagle.url=jdbc:mysql://mysql:3306/kafkaeagle?useUnicode=true&characterEncoding=UTF8
kafka.eagle.username=kafkaeagle
kafka.eagle.password=sdfsf@2019
k8s deployment yaml文件
apiVersion: apps/v1beta2
kind: Deployment
metadata:
  name: kafka-eagle
  namespace: kafka
spec:
  progressDeadlineSeconds: 600
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      workload.user.cattle.io/workloadselector: deployment-kafka-kafka-eagle
  strategy:
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 0
    type: RollingUpdate
  template:
    spec:
      containers:
      - image: registry.xxxxx.com/kafka-eagle:v1.3.5_2
        imagePullPolicy: Always
        name: kafka-eagle
        ports:
        - containerPort: 8048
          name: 8048tcp01
          protocol: TCP
        resources: {}
        securityContext:
          allowPrivilegeEscalation: false
          privileged: false
          procMount: Default
          readOnlyRootFilesystem: false
          runAsNonRoot: false
        stdin: true
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
        tty: true
        volumeMounts:
        - mountPath: /opt/kafka-eagle/conf
          name: conf
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      terminationGracePeriodSeconds: 30
      volumes:
      - configMap:
          defaultMode: 256
          name: kafka-eagle-config
          optional: false
        name: conf

3. 我遇见的坑

  • 服务启动后,登录界面可以看见,但是用账号密码登录后 返回405 ,并且日志里显示 post方法不接受
问题原因: 由于数据库初始化过程中某些问题,数据库无法初始化完成,所以登录不成功。之前用sqlite时,一直发现指定的数据库目录为空,所以后来我改用mysql进行启动
  • 容器启动后即退出
问题原因: 官方的启动脚本 ke.sh 运行完后即exit ,所以用原始命令进行启动的容器运行一段时间后退出。 解决方法是我在start()代码段最后增加了一条卡住shell脚本不退出的命令 read test
  • MySQL版本问题,我改用5.6 的就好了
DruidDataSource.Druid-ConnectionPool-Create-2037200746 - ERROR - create connection error, url: jdbc:mysql://mysql:3306/kafkaeagle?useUnicode=true&characterEncoding=UTF8, errorCode 0, state 08001
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server.

相关文章

网友评论

      本文标题:kafka 国内开源工具 kafka-eagle k8s部署记录

      本文链接:https://www.haomeiwen.com/subject/enkdrctx.html