跳到主要内容

中间件环境配置

目录

  1. 简介
  2. 项目结构
  3. 核心组件
  4. 架构总览
  5. 详细组件分析
  6. 依赖关系分析
  7. 性能考虑
  8. 故障排查指南
  9. 结论
  10. 附录

简介

本指南面向中间件环境的完整配置与运维,覆盖以下内容:

  • 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

Mermaid Diagram Code:

graph TB
subgraph "Docker 编排"
KAFKA["Kafka<br/>deploy/docker/kafka/docker-compose.yml"]
CANAL["Canal<br/>deploy/docker/canal/dk_canal_kafka/docker-compose.yml"]
SCRIPT["SkyWalking Agent<br/>script/docker/docker-compose.yml"]
end
subgraph "监控与配置"
PROM["Prometheus 控制器<br/>PrometheusController.java"]
ADMIN["Boot Admin 启用<br/>AdminServerConfiguration.java"]
METRICS["Micrometer 标签<br/>YudaoMetricsAutoConfiguration.java"]
NACOS_EXAMPLE["Nacos 示例配置<br/>application-prod.yaml"]
end
KAFKA --> CANAL
SCRIPT --> PROM
SCRIPT --> ADMIN
SCRIPT --> METRICS
SCRIPT --> NACOS_EXAMPLE

图表来源

章节来源

核心组件

  • Kafka 与 KafDrop:提供消息队列与 Web UI
  • Canal:MySQL 增量数据同步至 Kafka
  • SkyWalking Agent:Java 应用链路追踪探针
  • Prometheus:指标采集与服务发现
  • Boot Admin:应用健康与管理界面
  • Micrometer:通用指标标签注入
  • Nacos:注册与配置中心(示例配置)

章节来源

架构总览

下图展示中间件编排的整体交互关系。

Mermaid Diagram Code:

graph TB
subgraph "消息层"
KAFKA["Kafka Broker<br/>9092/9093/9094"]
KDROP["KafDrop UI<br/>9000"]
CANAL["Canal Server<br/>21111"]
end
subgraph "应用层"
GW["Gateway"]
SYS["System Biz"]
INFRA["Infra Biz"]
REPORT["Report Biz"]
BPM["BPM Biz"]
PAY["Pay Biz"]
MP["MP Biz"]
end
subgraph "观测层"
SW["SkyWalking Agent<br/>JAVA_TOOL_OPTIONS"]
PROM["Prometheus Controller<br/>/prometheus/discovery"]
ADMIN["Boot Admin Server"]
METRICS["Micrometer Tags"]
NACOS["Nacos Config/Discovery"]
end
CANAL --> |"写入"| KAFKA
KDROP --> KAFKA
GW --> KAFKA
SYS --> KAFKA
INFRA --> KAFKA
REPORT --> KAFKA
BPM --> KAFKA
PAY --> KAFKA
MP --> KAFKA
GW --> SW
SYS --> SW
INFRA --> SW
REPORT --> SW
BPM --> SW
PAY --> SW
MP --> SW
INFRA --> PROM
INFRA --> ADMIN
INFRA --> METRICS
INFRA --> NACOS

图表来源

详细组件分析

Kafka 消息队列配置

  • 集群角色与节点
    • 节点ID、控制器与Broker角色、控制器投票者、控制器监听器名称、KRaft 集群ID
  • 监听器与对外暴露
    • 外部客户端访问、控制器通信、Broker 内部通信三类监听器;外部广告地址与内部监听器分离
  • 安全与认证
    • 禁止明文、启用 SASL PLAIN、Broker 间协议机制、客户端用户与密码、内部 Broker 用户
  • 主题与副本
    • 默认分区数、默认副本因子
  • 存储与网络
    • 数据与日志卷挂载、自定义网络、容器内解析宿主机IP

Mermaid Diagram Code:

flowchart TD
Start(["启动 Kafka"]) --> SetRoles["设置节点ID与角色<br/>控制器+Broker"]
SetRoles --> Listeners["配置监听器<br/>外部/控制器/内部"]
Listeners --> Advertise["配置广告地址<br/>外部/内部"]
Advertise --> Security["安全协议映射<br/>SASL/PLAINTEXT"]
Security --> Auth["SASL 认证<br/>客户端与内部用户"]
Auth --> Partitions["主题与副本策略<br/>分区数/副本因子"]
Partitions --> Storage["卷挂载<br/>数据/日志"]
Storage --> Network["网络与主机解析"]
Network --> Ready(["就绪"])

图表来源

章节来源

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 地址

Mermaid Diagram Code:

sequenceDiagram
participant App as "应用容器"
participant Agent as "SkyWalking Agent"
participant OAP as "SkyWalking OAP"
App->>Agent : "启动时加载 Agent"
Agent->>OAP : "上报心跳与追踪数据"
OAP-->>Agent : "下发配置/命令"
Agent-->>App : "完成探针注入"

图表来源

章节来源

Prometheus 监控与服务发现

  • 服务发现
    • 通过 Nacos Discovery 获取实例列表,构造 targets 与标签
  • 告警接收
    • 提供 /prometheus/alerts 接收 Prometheus 告警消息
  • 指标标签
    • Micrometer 自动注入 common tags,统一标识应用名

Mermaid Diagram Code:

sequenceDiagram
participant Prom as "Prometheus"
participant Infra as "Infra Biz"
participant Disc as "Nacos Discovery"
Prom->>Infra : "GET /prometheus/discovery"
Infra->>Disc : "查询服务实例"
Disc-->>Infra : "返回实例列表"
Infra-->>Prom : "返回 targets 与 labels"
Prom->>Infra : "POST /prometheus/alerts"
Infra-->>Prom : "确认接收"

图表来源

章节来源

Nacos 注册配置中心

  • 配置示例
    • 各模块的 application-prod.yaml 展示了 Nacos 服务地址、命名空间、分组等配置占位
  • 部署模式
    • 生产环境建议使用多节点集群,结合持久化与高可用网络
  • 数据持久化
    • 建议使用外置数据库或云托管服务,确保配置与注册数据可靠

章节来源

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 配置中心接入配置与注册

章节来源

依赖关系分析

  • 组件耦合
    • Canal 依赖 Kafka;KafDrop 依赖 Kafka;应用服务依赖 Kafka 与 Nacos
    • SkyWalking Agent 与应用容器强耦合,需正确挂载与注入
    • Prometheus 依赖 Nacos Discovery 获取服务实例
  • 外部依赖
    • Nacos、SkyWalking OAP、Kafka 集群

Mermaid Diagram Code:

graph LR
CANAL["Canal"] --> KAFKA["Kafka"]
KDROP["KafDrop"] --> KAFKA
APPS["应用服务"] --> KAFKA
APPS --> NACOS["Nacos"]
APPS --> SW["SkyWalking OAP"]
PROM["Prometheus"] --> DISC["Nacos Discovery"]
DISC --> APPS

图表来源

章节来源

性能考虑

  • 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 获取服务发现与标签

章节来源

用户文档
AI 助手
Agent 列表
请选择一个 Agent 开始对话
AI 问答