中间件环境配置
引用文件
本文档引用的文件
- deploy/docker/kafka/docker-compose.yml
- deploy/docker/canal/dk_canal_kafka/docker-compose.yml
- deploy/docker/canal/dk_canal_kafka/.env
- script/docker/docker-compose.yml
- yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/framework/monitor/config/AdminServerConfiguration.java
- yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/prometheus/PrometheusController.java
- yudao-framework/yudao-spring-boot-starter-monitor/src/main/java/cn/iocoder/yudao/framework/tracer/config/YudaoMetricsAutoConfiguration.java
- yudao-gateway/src/main/resources/application-prod.yaml
- yudao-module-system/yudao-module-system-biz/src/main/resources/application-prod.yaml
- yudao-module-infra/yudao-module-infra-biz/src/main/resources/application-prod.yaml
- yudao-module-report/yudao-module-report-biz/src/main/resources/application-prod.yaml
- yudao-module-device/yudao-module-device-biz/src/main/resources/application-prod.yaml
- yudao-module-bpm/yudao-module-bpm-biz/src/main/resources/application-prod.yaml
- yudao-module-task/yudao-module-task-biz/src/main/resources/application-prod.yaml
- yudao-module-blacklist/yudao-module-blacklist-biz/src/main/resources/application-prod.yaml
- yudao-module-launcher/yudao-module-launcher-biz/src/main/resources/application-prod.yaml
目录
简介
本指南面向中间件环境的完整配置与运维,覆盖以下内容:
- Kafka 消息队列:安装与配置 Zookeeper 集群、Kafka broker、主题创建、权限设置
- SkyWalking 链路追踪:Agent 安装、探针配置、收集器设置
- Prometheus 监控:配置文件编写、服务发现、告警规则设置
- Nacos 注册配置中心:集群部署模式、数据持久化配置
- docker-compose 编排:各服务端口映射、卷挂载、环境变量
- 健康检查与监控指标:常见指标与日志查看方法
项目结构
中间件相关配置主要分布在以下位置:
- Kafka 与 Canal 的 Docker 编排位于 deploy/docker
- SkyWalking Agent 配置位于 script/docker
- Prometheus 与 Admin Server 的集成位于 yudao-module-infra
- Nacos 配置示例位于各业务模块的 application-prod.yaml
图表来源
- deploy/docker/kafka/docker-compose.yml
- deploy/docker/canal/dk_canal_kafka/docker-compose.yml
- script/docker/docker-compose.yml
- yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/prometheus/PrometheusController.java
- yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/framework/monitor/config/AdminServerConfiguration.java
- yudao-framework/yudao-spring-boot-starter-monitor/src/main/java/cn/iocoder/yudao/framework/tracer/config/YudaoMetricsAutoConfiguration.java
章节来源
- deploy/docker/kafka/docker-compose.yml
- deploy/docker/canal/dk_canal_kafka/docker-compose.yml
- script/docker/docker-compose.yml
核心组件
- Kafka 与 KafDrop:提供消息队列与 Web UI
- Canal:MySQL 增量数据同步至 Kafka
- SkyWalking Agent:Java 应用链路追踪探针
- Prometheus:指标采集与服务发现
- Boot Admin:应用健康与管理界面
- Micrometer:通用指标标签注入
- Nacos:注册与配置中心(示例配置)
章节来源
- deploy/docker/kafka/docker-compose.yml
- deploy/docker/canal/dk_canal_kafka/docker-compose.yml
- script/docker/docker-compose.yml
- yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/prometheus/PrometheusController.java
- yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/framework/monitor/config/AdminServerConfiguration.java
- yudao-framework/yudao-spring-boot-starter-monitor/src/main/java/cn/iocoder/yudao/framework/tracer/config/YudaoMetricsAutoConfiguration.java
架构总览
下图展示中间件编排的整体交互关系。
图表来源
- deploy/docker/kafka/docker-compose.yml
- deploy/docker/canal/dk_canal_kafka/docker-compose.yml
- script/docker/docker-compose.yml
- yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/prometheus/PrometheusController.java
- yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/framework/monitor/config/AdminServerConfiguration.java
- yudao-framework/yudao-spring-boot-starter-monitor/src/main/java/cn/iocoder/yudao/framework/tracer/config/YudaoMetricsAutoConfiguration.java
详细组件分析
Kafka 消息队列配置
- 集群角色与节点
- 节点ID、控制器与Broker角色、控制器投票者、控制器监听器名称、KRaft 集群ID
- 监听器与对外暴露
- 外部客户端访问、控制器通信、Broker 内部通信三类监听器;外部广告地址与内部监听器分离
- 安全与认证
- 禁止明文、启用 SASL PLAIN、Broker 间协议机制、客户端用户与密码、内部 Broker 用户
- 主题与副本
- 默认分区数、默认副本因子
- 存储与网络
- 数据与日志卷挂载、自定义网络、容器内解析宿主机IP
图表来源
章节来源
Kafka 主题创建与权限设置
- 主题创建
- 可通过 Kafka CLI 或 KafDrop UI 创建主题,指定分区与副本
- 权限设置
- 基于 SASL/PLAIN 的用户认证,建议为不同组件创建专用用户与最小权限
- KafDrop 使用
- 通过 KafDrop UI 进行主题浏览与消息查看
章节来源
Canal 到 Kafka
- Canal 作为 MySQL 增量同步代理,将变更写入 Kafka
- 关键环境变量
- MySQL 地址与凭据、字符集、TSDB、GTID 状态
- Kafka 发送配置(可选)
- 可通过注释中的示例启用 Kafka 发送、SASL 配置与动态 Topic/分区
章节来源
SkyWalking 链路追踪
- Agent 安装与挂载
- 将 Agent 目录挂载到容器内,通过 JAVA_TOOL_OPTIONS 注入
- 探针配置
- 应用名、忽略路径、Collector 后端地址
- 收集器设置
- 通过环境变量指向 SkyWalking OAP 地址
图表来源
章节来源
Prometheus 监控与服务发现
- 服务发现
- 通过 Nacos Discovery 获取实例列表,构造 targets 与标签
- 告警接收
- 提供 /prometheus/alerts 接收 Prometheus 告警消息
- 指标标签
- Micrometer 自动注入 common tags,统一标识应用名
图表来源
- yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/prometheus/PrometheusController.java
- yudao-framework/yudao-spring-boot-starter-monitor/src/main/java/cn/iocoder/yudao/framework/tracer/config/YudaoMetricsAutoConfiguration.java
章节来源
- yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/prometheus/PrometheusController.java
- yudao-framework/yudao-spring-boot-starter-monitor/src/main/java/cn/iocoder/yudao/framework/tracer/config/YudaoMetricsAutoConfiguration.java
Nacos 注册配置中心
- 配置示例
- 各模块的 application-prod.yaml 展示了 Nacos 服务地址、命名空间、分组等配置占位
- 部署模式
- 生产环境建议使用多节点集群,结合持久化与高可用网络
- 数据持久化
- 建议使用外置数据库或云托管服务,确保配置与注册数据可靠
章节来源
- yudao-gateway/src/main/resources/application-prod.yaml
- yudao-module-system/yudao-module-system-biz/src/main/resources/application-prod.yaml
- yudao-module-infra/yudao-module-infra-biz/src/main/resources/application-prod.yaml
- yudao-module-report/yudao-module-report-biz/src/main/resources/application-prod.yaml
- yudao-module-device/yudao-module-device-biz/src/main/resources/application-prod.yaml
- yudao-module-bpm/yudao-module-bpm-biz/src/main/resources/application-prod.yaml
- yudao-module-task/yudao-module-task-biz/src/main/resources/application-prod.yaml
- yudao-module-blacklist/yudao-module-blacklist-biz/src/main/resources/application-prod.yaml
- yudao-module-launcher/yudao-module-launcher-biz/src/main/resources/application-prod.yaml
docker-compose 编排说明
- Kafka 与 KafDrop
- 端口映射:9092/9093/9094 对外访问,9000 KafDrop UI
- 环境变量:节点ID、控制器配置、监听器、SASL、分区与副本
- 卷挂载:数据与日志目录
- Canal
- 端口映射:21111
- 环境变量:MySQL 地址、用户名、密码、字符集、TSDB、GTID
- SkyWalking Agent
- 挂载 Agent 目录,通过 JAVA_TOOL_OPTIONS 注入
- 设置应用名、忽略路径、Collector 地址
- 通过 Nacos 配置中心接入配置与注册
章节来源
- deploy/docker/kafka/docker-compose.yml
- deploy/docker/canal/dk_canal_kafka/docker-compose.yml
- script/docker/docker-compose.yml
依赖关系分析
- 组件耦合
- Canal 依赖 Kafka;KafDrop 依赖 Kafka;应用服务依赖 Kafka 与 Nacos
- SkyWalking Agent 与应用容器强耦合,需正确挂载与注入
- Prometheus 依赖 Nacos Discovery 获取服务实例
- 外部依赖
- Nacos、SkyWalking OAP、Kafka 集群
图表来源
- deploy/docker/kafka/docker-compose.yml
- deploy/docker/canal/dk_canal_kafka/docker-compose.yml
- script/docker/docker-compose.yml
- yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/prometheus/PrometheusController.java
章节来源
性能考虑
- Kafka
- 分区数与副本因子应根据吞吐量与容灾需求调整
- 使用独立磁盘与合适的 JVM 堆大小
- Canal
- TSDB 与正则过滤可根据数据量开启,避免过度匹配
- SkyWalking
- 合理设置忽略路径,减少无关追踪开销
- Prometheus
- 服务发现批量拉取,避免频繁查询 Nacos
故障排查指南
- 健康检查
- 应用容器内置健康检查,可通过 curl 访问端口判断健康状态
- 日志查看
- 应用容器挂载日志目录,便于查看运行日志
- 常见问题
- Kafka 无法连接:检查监听器与广告地址、SASL 凭据
- Canal 同步异常:检查 MySQL 连接、TSDB 与正则配置
- SkyWalking 无数据:确认 Agent 挂载与 Collector 地址
- Prometheus 无服务:确认 Nacos Discovery 正常与标签配置
章节来源
结论
本指南提供了从 Kafka、Canal 到 SkyWalking、Prometheus、Nacos 的完整中间件配置路径。通过 docker-compose 编排与模块化配置,可快速搭建可观察、可扩展的微服务基础设施。建议在生产环境中进一步完善高可用、安全加固与容量规划。
附录
- 健康检查与日志
- 健康检查端口:应用容器分别提供 48081、48082 等端口
- 日志目录:容器内挂载 /root/logs
- 监控指标
- Micrometer 注入 common tags,统一标识应用名
- Prometheus 通过 /prometheus/discovery 获取服务发现与标签
章节来源
- script/docker/docker-compose.yml
- script/docker/docker-compose.yml
- yudao-framework/yudao-spring-boot-starter-monitor/src/main/java/cn/iocoder/yudao/framework/tracer/config/YudaoMetricsAutoConfiguration.java
- yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/prometheus/PrometheusController.java