From 0ed8ba8ca43dea0fa4e6ebec20085353fa920827 Mon Sep 17 00:00:00 2001 From: zengqiao Date: Thu, 20 Jan 2022 11:47:55 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E5=85=85KCM=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/dev_guide/assets/kcm/kcm_principle.png | Bin 0 -> 71084 bytes docs/dev_guide/drawio/KCM实现原理.drawio | 89 ++++++++++++++++++++ docs/dev_guide/如何使用集群安装部署功能.md | 89 ++++++++++++++++++++ 3 files changed, 178 insertions(+) create mode 100644 docs/dev_guide/assets/kcm/kcm_principle.png create mode 100644 docs/dev_guide/drawio/KCM实现原理.drawio create mode 100644 docs/dev_guide/如何使用集群安装部署功能.md diff --git a/docs/dev_guide/assets/kcm/kcm_principle.png b/docs/dev_guide/assets/kcm/kcm_principle.png new file mode 100644 index 0000000000000000000000000000000000000000..d206f57c63ab6aaaeea0b76fcfc5e2ed8468f489 GIT binary patch literal 71084 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 literal 0 HcmV?d00001 diff --git a/docs/dev_guide/drawio/KCM实现原理.drawio b/docs/dev_guide/drawio/KCM实现原理.drawio new file mode 100644 index 00000000..d2742a80 --- /dev/null +++ b/docs/dev_guide/drawio/KCM实现原理.drawio @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/dev_guide/如何使用集群安装部署功能.md b/docs/dev_guide/如何使用集群安装部署功能.md new file mode 100644 index 00000000..5e5f0101 --- /dev/null +++ b/docs/dev_guide/如何使用集群安装部署功能.md @@ -0,0 +1,89 @@ + +--- + +![kafka-manager-logo](../assets/images/common/logo_name.png) + +**一站式`Apache Kafka`集群指标监控与运维管控平台** + +--- + +# 如何使用集群安装部署功能? + +[TOC] + +## 1、实现原理 + +![KCM实现原理](./assets/kcm/kcm_principle.png) + +- LogiKM上传安装包到S3服务; +- LogiKM调用夜莺-Job服务接口,创建执行[kcm_script.sh](https://github.com/didi/LogiKM/blob/master/kafka-manager-extends/kafka-manager-kcm/src/main/resources/kcm_script.sh)脚本的任务,kcm_script.sh脚本是安装部署Kafka集群的脚本; +- 夜莺将任务脚本下发到具体的机器上,通过夜莺Agent执行该脚本; +- kcm_script.sh脚本会进行Kafka-Broker的安装部署; + + +--- + +## 2、使用方式 + +### 2.1、第一步:修改配置 + +**配置application.yml文件** +```yaml +# +kcm: + enabled: false # 是否开启,将其修改为true + s3: # s3 存储服务 + endpoint: s3.didiyunapi.com + access-key: 1234567890 + secret-key: 0987654321 + bucket: logi-kafka + n9e: # 夜莺 + base-url: http://127.0.0.1:8004 # 夜莺job服务地址 + user-token: 12345678 # 用户的token + timeout: 300 # 单台操作的超时时间 + account: root # 操作时使用的账号 + script-file: kcm_script.sh # 脚本,已内置好,在源码的kcm模块内,此处配置无需修改 + logikm-url: http://127.0.0.1:8080 # logikm部署地址,部署时kcm_script.sh会调用logikm检查部署中的一些状态,这里只需要填写 http://IP:PORT 就可以了 + + +account: + jump-login: + gateway-api: false # 网关接口 + third-part-api: false # 第三方接口,将其修改为true,即允许未登录情况下调用开放的第三方接口 +``` + +### 2.2、第二步:检查服务 + +**检查s3服务** +- 测试 "运维管控-》集群运维-》版本管理" 页面的上传,查看等功能是否都正常。如果存在不正常,则需要查看s3的配置是否正确; +- 如果都没有问题,则上传Kafka的以.tgz结尾的安装包以及server.properties文件; + +**检查夜莺Job服务** +- 创建一个job任务,机器选择需要安装Kafka集群的机器,然后执行的命令是echo "Hello LogiKM",看能否被成功执行。如果不行,则需要检查夜莺的安装; +- 如果没有问题则表示夜莺和所需部署的机器之间的交互是没有问题的; + +### 2.3、第三步:接入集群 + +在LogiKM的 “运维管控-》集群列表” 中接入需要安装部署的集群,**PS:此时是允许接入一个没有任何Broker的空的Kafka集群**,其中对的bootstrapServers配置搭建完成后的Kafka集群地址就可以了,而ZK地址必须和集群的server.properties中的ZK地址保持一致; + +### 2.4、第四步:部署集群 + +- 打开LogiKM的 “运维管控-》集群运维-》集群任务” 页面,点击 “新建集群任务” 按钮; +- 选择集群、任务类型、包版本、server配置及填写主机列表,然后点击确认,即可在夜莺的Job服务中心中创建一个任务出来。**PS:如果创建失败,可以看一下日志我为什么创建失败**; +- 随后可以点击详情及状态对任务进行操作; + +### 2.5、可能问题 + +#### 2.5.1、问题一:任务执行超时、失败等 + +进入夜莺Job服务中心,查看对应的任务的相关日志; + +- 提示安装包下载失败,则需要查看对应的s3服务是否可以直接wget下载安装包,如果不可以则需要对kcm_script.sh脚本进行修改; +- 提示调用LogiKM失败,则可以使用postman手动测试一下kcm_script.sh脚本调用LogiKM的那个接口是否有问题,如果存在问题则进行相应的修改;PS:具体接口见kcm_script.sh脚本 + + +## 3、备注说明 + +- 集群安装部署,仅安装部署Kafka-Broker,不安装Kafka的ZK服务; +- 安装部署中,有任何定制化的需求,例如修改安装的目录等,可以通过修改kcm_script.sh脚本实现; +- kcm_script.sh脚本位置:[kcm_script.sh](https://github.com/didi/LogiKM/blob/master/kafka-manager-extends/kafka-manager-kcm/src/main/resources/kcm_script.sh);