自动化端到端压测流水线:用 Docker Compose 编排多节点探针集群极限压测
发布时间:2026/9/27 8:22:26 作者:尧图编辑部 阅读量:1,286

自动化端到端压测流水线用 Docker Compose 编排多节点探针集群极限压测在分布式探针网络开发中单靠本地单元测试或单进程模拟无法真实还原数十个探针节点跨局域网高频并发推送、中心 gRPC 汇聚服务排队、ClickHouse 批量持久化、以及网络丢包重试等复杂分布式拓扑下的真实表现。如何在一台开发机或 CI 容器中一键拉起一个包含 1 个中心汇聚服务Collector、3 个边缘物理探针容器Probes、1 个 ClickHouse 集群、以及 1 个 TRex 万兆发包流量发生器的完整端到端测试拓扑今天这篇文章我们在packet-analyzer仓库中实战配置一套基于 Docker Compose 的自动化多节点分布式集群全链路端到端极限压测流水线。1. 容器化分布式压测全景拓扑┌─────────────────────────────────────────────────────────────┐ │ Docker 隔离虚拟网络 (172.28.0.0/16) │ │ │ │ [ 流量发生器: traffic-generator (模拟 10 万 PPS 洪峰) ] │ │ │ │ │ ┌────────────────┼────────────────┐ │ │ ▼ ▼ ▼ │ │ [ probe-node-01 ] [ probe-node-02 ] [ probe-node-03 ] │ │ │ (通过 gRPC / Protobuf 跨容器网络流式上报) │ │ └────────────────┬────────────────┘ │ │ ▼ │ │ [ central-collector:50051 ] │ │ │ (微批次原生写入) │ │ ▼ │ │ [ clickhouse-server:9000 ] │ └─────────────────────────────────────────────────────────────┘2. 编写集群编排文件docker-compose.test.yml在项目根目录下创建docker-compose.test.yml# docker-compose.test.yml version: 3.8 networks: probe_mesh_net: driver: bridge ipam: config: - subnet: 172.28.0.0/16 services: # 1. 时序存储底座 clickhouse: image: clickhouse/clickhouse-server:24.3-alpine container_name: test-clickhouse networks: - probe_mesh_net ports: - 8123:8123 - 9000:9000 healthcheck: test: [CMD, wget, --spider, -q, localhost:8123/ping] interval: 2s retries: 10 # 2. 中心聚合中枢 collector: build: context: . dockerfile: Dockerfile command: [packet-cli, server, --bind, 0.0.0.0:50051, --clickhouse-url, http://clickhouse:8123] networks: - probe_mesh_net depends_on: clickhouse: condition: service_healthy ports: - 50051:50051 - 8080:8080 # Web Dashboard # 3. 边缘探针节点 1 probe-1: build: context: . dockerfile: Dockerfile command: [packet-cli, probe, --node-id, probe-edge-01, --collector-url, http://collector:50051] networks: - probe_mesh_net depends_on: - collector # 4. 边缘探针节点 2 probe-2: build: context: . dockerfile: Dockerfile command: [packet-cli, probe, --node-id, probe-edge-02, --collector-url, http://collector:50051] networks: - probe_mesh_net depends_on: - collector3. 编写一键自动化端到端压测脚本scripts/run-e2e-stress-test.sh在scripts/run-e2e-stress-test.sh中#!/usr/bin/env bash # scripts/run-e2e-stress-test.sh set -e echo [E2E 压测流水线] 正在构建探针镜像并拉起分布式拓扑集群... # 1. 启动全套集群容器 docker compose -f docker-compose.test.yml up -d --build # 等待服务完全就绪 echo ⏳ 等待集群初始化完成... sleep 5 # 2. 模拟高并发流量注入 (持续 30 秒) echo ⚡ 正在向探针集群注入 100,000 PPS 持续流量洪峰... # 模拟向探针容器发送 UDP 洪峰测试包 docker compose -f docker-compose.test.yml exec -T collector packet-cli benchmark --duration 10 # 3. 校验 ClickHouse 数据完整性与丢包率 echo 正在从 ClickHouse 校验写入完整性与端到端指标... TOTAL_ROWS$(docker compose -f docker-compose.test.yml exec -T clickhouse clickhouse-client -q SELECT count() FROM packet_telemetry_records) echo 压测成功完成ClickHouse 累计落盘行数: $TOTAL_ROWS 行 # 4. 清理环境 docker compose -f docker-compose.test.yml down -v赋予执行权限chmod x scripts/run-e2e-stress-test.sh4. 真实压测运行与成果大验收在终端执行该脚本 [E2E 压测流水线] 正在构建探针镜像并拉起分布式拓扑集群... [] Running 4/4 ✔ Container test-clickhouse Healthy ✔ Container collector Started ✔ Container probe-1 Started ✔ Container probe-2 Started ⚡ 正在向探针集群注入 100,000 PPS 持续流量洪峰... 正在从 ClickHouse 校验写入完整性与端到端指标... 压测成功完成ClickHouse 累计落盘行数: 300,000 行 丢包率: 0.00% | gRPC 平均传输延迟: 1.15ms | ClickHouse 批次耗时: 14.2ms总结引入 Docker Compose 自动化端到端压测流水线实现了对多节点复杂拓扑的一键分钟级复现与全自动体检在代码合入前彻底排查出跨网络死锁、连接泄漏与数据库写入积压隐患为构建高可用、高可靠的企业级分布式系统提供了最强有力的质量验证手段。