Kafka Manager (CMAK) 容器化部署

需求场景

随着架构的不断扩大和改造,使用的 Kafka 集群的体量和数量都不断翻倍,对 Kafka 多集群的管理提出了挑战,依托 GitOps 的 Ansible 和 Kafka Shell 脚本管理的方式作用越来越式微,追求一个可视化的多集群管理平台,也许会成为管理者优先考虑的方向。

Kafka Manager (CMAK)

CMAK 是常用的 Kafka Manager 的新名字,因为使用习惯,后续还是继续使用 Kafka Manager 来称呼。该软件通过页面操控 Kafka 集群,支持多集群管理,能够通过 JMX 来获取 Broker 的内部监控数据。并且,Kafka Manager 是由雅虎开源维护,主要使用 Scala 编写,截至目前,其在 GitHub 上已有 11.5K 的 start,最新版本为 3.0.0.6 。更多详细的官方说明可参考仓库地址。

这里介绍使用 docker-compose 来部署一套 Kafka Manager,并通过 Nginx 转发和添加 Basic Auth 认证。

部署

制作 Kafka Manager 镜像

官方并没有维护最新版本的容器镜像,因此需要自行编译 Kafka Manager 的镜像,使用如下的 Dockerfile。

FROM openjdk:11

LABEL GITHUB_CMAK="https://github.com/yahoo/CMAK"

ENV ZK_HOSTS=localhost:2181
ENV HTTP_CONTEXT=/
ENV CMAK_VERSION=3.0.0.6

RUN cd /tmp && wget https://github.com/yahoo/CMAK/archive/${CMAK_VERSION}.tar.gz && tar -xzvf ${CMAK_VERSION}.tar.gz
RUN cd /tmp/CMAK-${CMAK_VERSION} && ./sbt clean dist
RUN unzip -d / /tmp/CMAK-${CMAK_VERSION}/target/universal/cmak-${CMAK_VERSION}.zip
RUN echo 'play.http.context=${?HTTP_CONTEXT}' >>/cmak-${CMAK_VERSION}/conf/application.conf && rm -fr /tmp/CMAK-${CMAK_VERSION} /tmp/${CMAK_VERSION}.tar.gz

WORKDIR /cmak-${CMAK_VERSION}
EXPOSE 9000
ENTRYPOINT ["./bin/cmak","-Dconfig.file=conf/application.conf"]

后续通过子路径的转发需要使用 play.http.context 配置,但是官方并没有将其设置为可环境变量同步的方式,因此这里额外添加。

docker-compose 拉起服务

Kafka Manager 使用 Zookeeper 持久化数据,这里使用最精简的模式部署单节点 Zookeeper。配置如下 docker-compose 文件:

version: '3'
services:
  zk:
    image: zookeeper:3.5.9
    restart: unless-stopped
    environment:
      ZOO_SERVERS: server.1=0.0.0.0:2888:3888;2181
  cmak:
    image: acidgo/cmak:3.0.0.6
    restart: unless-stopped
    ports:
      - "9000:9000"
    environment:
      ZK_HOSTS: "zk:2181"
      HTTP_CONTEXT: "/cmak"

执行 docker-compose 拉起服务:

docker-compose -f docker-compose.yml up -d
# 检查服务
docker ps

服务正常启动后,访问 http://127.0.0.1:9000/cmak 地址即可进入 Kafka Manager 界面。

配置 Nginx

为了避免 Kafka Manager 被肆意访问导致误操作而影响 Kafka 集群,通过 Nginx 添加 Basic Auth 认证来拦截非法请求。(注意:可以在 Kafka Manager 里直接通过 basicAuthentication.ldap.enabled 开启内部认证,这里仅介绍 Nginx 的方式)
生成密码文本:

apt-get install apache2-utils
htpasswd -c /data/nginx/.htpasswd admin

配置 Nginx http 服务:

upstream cmak {
    server 10.131.74.147:9000;
}

server {
  large_client_header_buffers 4 1m;
  listen  8080  reuseport default_server;
  server_name _;
  expires -1;

  location /cmak {
    auth_basic "Please Input Basic Auth";
    auth_basic_user_file /data/nginx/.htpasswd;

    proxy_set_header Host $http_host;
    proxy_pass http://cmak;
  }
}

reload Nginx 后,使用 http://<nginx>/cmak 访问部署的 Kafka Manager。

Kafka Manager (CMAK) 容器化部署


原文始发于微信公众号(AcidPool):Kafka Manager (CMAK) 容器化部署

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/171053.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!