系统部署环境要求.md 18 KB

HaHRCS 系统部署环境要求文档

文档版本: 1.0 生成日期: 2026-01-19 系统名称: HaHRCS (华航机器人控制系统) 系统版本: 3.1.0


一、系统概述

HaHRCS 是一套企业级 AGV/AMR 机器人调度控制系统,采用前后端分离架构,支持 VDA5050 工业标准协议,实现多机器人协同调度、任务管理、地图管理等核心功能。

技术架构

  • 后端: .NET 8.0 / ASP.NET Core Web API
  • 前端: Vue 3.5.8 + Vite 5.4.9 + TypeScript 5.2.2
  • 架构模式: DDD (领域驱动设计) + 清洁架构 + CQRS
  • 部署方式: Docker Compose 容器化编排

二、硬件环境要求

2.1 最低配置要求

项目 要求
CPU 4 核心 (推荐 Intel i5 或同等性能)
内存 8 GB RAM (推荐 16 GB)
硬盘 50 GB 可用空间 (SSD 推荐)
网络 千兆以太网 (1000 Mbps)

2.2 推荐配置

项目 要求
CPU 8 核心或以上 (Intel i7/Xeon 或同等性能)
内存 16 GB RAM 或以上
硬盘 100 GB 可用空间 (NVMe SSD)
网络 千兆以太网 + 备用网卡

2.3 存储空间分配

组件 预估空间
Docker 镜像 ~2 GB
数据库 (PostgreSQL) 10-50 GB (根据业务量)
日志文件 5-10 GB
地图资源文件 1-5 GB
系统预留 10 GB

三、操作系统要求

3.1 支持的操作系统

Windows 平台

  • Windows 10 专业版/企业版 (64位) - 版本 1903 或更高
  • Windows 11 专业版/企业版 (64位)
  • Windows Server 2019/2022 (推荐用于生产环境)

Linux 平台 (可选)

  • Ubuntu 20.04 LTS / 22.04 LTS
  • CentOS 7.9 / 8.x
  • Debian 10/11

3.2 系统组件要求

组件 版本要求 说明
Docker Desktop 4.0 或以上 Windows 环境必需
Docker Engine 20.10 或以上 Linux 环境必需
Docker Compose 2.0 或以上 容器编排工具
.NET Runtime 8.0 非容器部署时需要
Node.js 20.x 仅开发环境需要

四、网络环境要求

4.1 端口占用清单

系统运行需要以下端口,部署前请确保端口未被占用:

端口 服务 协议 说明 是否对外开放
5000 后端 API HTTP RESTful API 服务
8080 前端 Nginx HTTP Web 前端访问
5432 PostgreSQL TCP 数据库服务 否 (内网)
7379 Redis TCP 缓存服务 否 (内网)
5672 RabbitMQ AMQP 消息队列 否 (内网)
15672 RabbitMQ 管理 HTTP 管理控制台 可选
1883 EMQX MQTT MQTT 机器人通信
8083 EMQX WebSocket WS WebSocket 连接
18083 EMQX Dashboard HTTP MQTT 管理控制台 可选

4.2 网络连通性要求

内网通信

  • 所有容器服务之间需要能够互相访问 (通过 Docker 内部网络)
  • 后端 API 需要访问所有中间件服务 (PostgreSQL、Redis、RabbitMQ、EMQX)

外网通信

  • 机器人设备: 需要通过 MQTT (端口 1883) 连接到 EMQX 服务
  • 客户端浏览器: 需要访问前端 (端口 8080) 和后端 API (端口 5000)
  • 第三方系统集成: 蓝印系统 WebSocket 连接 (ws://172.16.41.30:9990)

防火墙规则

入站规则 (需要开放):

允许 TCP 5000  (后端 API)
允许 TCP 8080  (前端 Web)
允许 TCP 1883  (MQTT)
允许 TCP 8083  (MQTT WebSocket)

出站规则:

允许所有出站连接 (用于访问外部服务)

4.3 网络带宽要求

场景 带宽要求
单机器人实时通信 ~10 Kbps
10 台机器人并发 ~100 Kbps
50 台机器人并发 ~500 Kbps
前端用户访问 ~1 Mbps/用户
推荐总带宽 10 Mbps 或以上

五、中间件服务要求

5.1 PostgreSQL 数据库

配置项 要求
版本 PostgreSQL 15
字符集 UTF-8
扩展 PostGIS (地理空间数据支持)
最大连接数 100 (默认)
内存分配 建议 2-4 GB
数据库名称 hah_rcs
默认用户 sa_user
默认密码 hu@Heng_!

性能调优参数 (生产环境建议):

shared_buffers = 2GB
effective_cache_size = 6GB
maintenance_work_mem = 512MB
checkpoint_completion_target = 0.9
wal_buffers = 16MB
default_statistics_target = 100
random_page_cost = 1.1
effective_io_concurrency = 200
work_mem = 10MB
min_wal_size = 1GB
max_wal_size = 4GB

5.2 Redis 缓存

配置项 要求
版本 Redis 7.2
内存分配 建议 1-2 GB
持久化 RDB + AOF (推荐)
最大内存策略 allkeys-lru
默认密码 hu@Heng_!

配置参数:

maxmemory 2gb
maxmemory-policy allkeys-lru
save 900 1
save 300 10
save 60 10000
appendonly yes
appendfsync everysec

5.3 RabbitMQ 消息队列

配置项 要求
版本 RabbitMQ 4.1.3 (with MassTransit)
内存分配 建议 1 GB
磁盘空间 5 GB
虚拟主机 / (默认)
默认用户 guest
默认密码 guest

性能参数:

vm_memory_high_watermark.relative = 0.6
disk_free_limit.absolute = 2GB
heartbeat = 60
channel_max = 2047

5.4 EMQX MQTT Broker

配置项 要求
版本 EMQX 5.5
内存分配 建议 1 GB
最大连接数 10000 (可调整)
默认用户 hahrcs
默认密码 hu@Heng_!

MQTT 主题订阅:

v2/+/connection
v2/+/state
v2/+/factsheet
v2/+/visualization

六、应用程序配置参数

6.1 后端 API 配置

数据库连接

{
  "ConnSql": {
    "ConnectionString": "Host=localhost;Port=5432;Database=hah_rcs;Username=sa_user;Password=hu@Heng_!"
  }
}

Redis 配置

{
  "Redis": {
    "Host": "localhost",
    "Port": "7379",
    "Password": "hu@Heng_!"
  }
}

RabbitMQ 配置

{
  "RabbitMq": {
    "Host": "localhost",
    "Port": 5672,
    "VirtualHost": "/",
    "Username": "guest",
    "Password": "guest",
    "UseSSL": false,
    "Heartbeat": 60,
    "PrefetchCount": 16,
    "ConcurrentMessageLimit": 32,
    "RetryLimit": 3,
    "RetryInterval": 5
  }
}

MQTT 配置

{
  "Mqtt": {
    "Broker": "localhost",
    "Port": 1883,
    "ClientId": "hahrcs",
    "Username": "hahrcs",
    "Password": "hu@Heng_!",
    "UseTls": false,
    "CleanSession": true,
    "KeepAlivePeriodSeconds": 60,
    "ReconnectDelaySeconds": 5
  }
}

CORS 跨域配置

{
  "Cors": {
    "AllowedOrigins": ["http://localhost:8081"],
    "AllowedMethods": ["GET", "POST"],
    "AllowedHeaders": ["Content-Type", "Authorization"]
  }
}

机器人状态同步配置

{
  "RobotStatus": {
    "RedisTtlSeconds": 60,
    "EnableRedisCompression": false,
    "DbSyncIntervalMs": 30000,
    "DbSyncBatchSize": 100,
    "EnableSmartSync": true,
    "PositionChangeThreshold": 0.1,
    "BatteryChangeThreshold": 1.0,
    "EnableRedisPipeline": true,
    "PipelineBatchSize": 50,
    "PipelineFlushIntervalMs": 50
  }
}

6.2 前端配置

开发环境

# 开发服务器端口
PORT=8081
HOST=0.0.0.0

# 后端 API 地址
VITE_API_BASE_URL=http://localhost:5000

生产环境


七、安全要求

7.1 密码策略

默认密码清单 (生产环境必须修改):

服务 用户名 默认密码 修改位置
PostgreSQL sa_user hu@Heng_! appsettings.json
Redis - hu@Heng_! appsettings.json
RabbitMQ guest guest appsettings.json
EMQX hahrcs hu@Heng_! appsettings.json

7.2 网络安全

  • 生产环境建议:
    • 使用 HTTPS/TLS 加密通信
    • 启用 MQTT TLS 加密 (端口 8883)
    • 配置防火墙规则,仅开放必要端口
    • 使用 VPN 或专网进行机器人通信

7.3 数据安全

  • 数据库备份: 建议每日自动备份
  • 日志保留: 建议保留 30 天
  • 敏感信息: 使用环境变量或密钥管理服务存储

八、性能与容量规划

8.1 系统容量

指标 容量
最大机器人数量 100 台 (可扩展)
并发任务数 500 个
地图数量 50 个
并发用户数 20 个
MQTT 消息吞吐 1000 msg/s

8.2 性能指标

指标 目标值
API 响应时间 < 200ms (P95)
MQTT 消息延迟 < 100ms
数据库查询 < 50ms (P95)
Redis 缓存命中率 > 90%
系统可用性 > 99.5%

8.3 资源监控

建议监控指标:

  • CPU 使用率 (< 70%)
  • 内存使用率 (< 80%)
  • 磁盘使用率 (< 80%)
  • 网络带宽使用率
  • 数据库连接数
  • Redis 内存使用
  • RabbitMQ 队列长度
  • MQTT 连接数

九、部署环境检查清单

9.1 部署前检查

  • 操作系统版本符合要求
  • Docker Desktop 已安装并正常运行
  • 所需端口未被占用
  • 硬盘空间充足 (至少 50 GB)
  • 内存充足 (至少 8 GB)
  • 网络连通性正常
  • 防火墙规则已配置
  • 时间同步服务已启用 (NTP)

9.2 配置检查

  • 数据库连接字符串已配置
  • Redis 连接参数已配置
  • RabbitMQ 连接参数已配置
  • MQTT Broker 地址已配置
  • CORS 跨域配置已设置
  • 生产环境密码已修改
  • 外部系统集成地址已配置 (如蓝印系统)

9.3 部署后验证

  • 所有 Docker 容器正常运行
  • 前端页面可正常访问
  • 后端 API 健康检查通过
  • 数据库连接正常
  • Redis 缓存可用
  • RabbitMQ 消息队列正常
  • MQTT Broker 可连接
  • 机器人可正常连接并通信
  • 日志输出正常

十、故障排查与日志

10.1 日志位置

组件 日志位置
后端 API docker logs hahrcs-api
Nginx docker logs hahrcs-nginx
PostgreSQL docker logs hahrcs-postgres
Redis docker logs hahrcs-redis
RabbitMQ docker logs hahrcs-rabbitmq
EMQX docker logs hahrcs-emqx

10.2 常见问题

问题 1: 端口被占用

# 检查端口占用
netstat -ano | findstr :8080

# 解决方案: 修改 docker-compose.yml 中的端口映射

问题 2: 数据库连接失败

# 检查 PostgreSQL 容器状态
docker-compose ps postgres

# 查看数据库日志
docker-compose logs postgres

# 解决方案: 确保数据库已完全启动 (约需 10-30 秒)

问题 3: 内存不足

# 检查 Docker 内存限制
docker stats

# 解决方案: 增加 Docker Desktop 内存分配 (设置 > Resources > Memory)

问题 4: MQTT 连接失败

# 检查 EMQX 状态
docker-compose logs emqx

# 测试 MQTT 连接
# 使用 MQTT 客户端工具连接 localhost:1883

10.3 性能调优建议

  1. 数据库优化

    • 定期执行 VACUUM 和 ANALYZE
    • 为常用查询添加索引
    • 调整连接池大小
  2. Redis 优化

    • 监控内存使用,避免 OOM
    • 合理设置 TTL
    • 使用 Redis Pipeline 批量操作
  3. 应用优化

    • 启用 Redis 缓存
    • 使用异步处理长时间任务
    • 优化数据库查询

十一、升级与维护

11.1 版本升级

  1. 备份数据库和配置文件
  2. 停止所有服务: docker-compose down
  3. 更新镜像: docker load -i hahrcs-images-new.tar
  4. 启动服务: docker-compose up -d
  5. 验证系统功能

11.2 数据备份

数据库备份:

# 备份数据库
docker exec hahrcs-postgres pg_dump -U sa_user hah_rcs > backup_$(date +%Y%m%d).sql

# 恢复数据库
docker exec -i hahrcs-postgres psql -U sa_user hah_rcs < backup_20260119.sql

Redis 备份:

# 触发 RDB 快照
docker exec hahrcs-redis redis-cli -a "hu@Heng_!" BGSAVE

# 复制 RDB 文件
docker cp hahrcs-redis:/data/dump.rdb ./backup/

11.3 定期维护任务

任务 频率 说明
数据库备份 每日 自动备份并异地存储
日志清理 每周 清理 30 天前的日志
磁盘空间检查 每周 确保可用空间 > 20%
系统更新 每月 安全补丁和功能更新
性能分析 每月 分析系统瓶颈并优化

十二、技术支持

12.1 联系方式

  • 项目名称: HaHRCS (华航机器人控制系统)
  • 技术栈: .NET 8.0 + Vue 3 + PostgreSQL + Redis + RabbitMQ + EMQX
  • 文档版本: 1.0
  • 最后更新: 2026-01-19

12.2 相关文档

12.3 开源组件许可

组件 许可证
.NET 8.0 MIT
Vue 3 MIT
PostgreSQL PostgreSQL License
Redis BSD 3-Clause
RabbitMQ MPL 2.0
EMQX Apache 2.0

附录 A: Docker Compose 服务清单

services:
  - rabbitmq:4.1.3        # 消息队列
  - redis:7.2-alpine      # 缓存服务
  - postgres:15           # 数据库
  - emqx:5.5              # MQTT Broker
  - hahrcs/api:latest     # 后端 API
  - nginx:1.25-alpine     # 前端 + 反向代理

附录 B: 系统架构图

┌─────────────────────────────────────────────────────────────┐
│                        客户端层                              │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐      │
│  │  Web 浏览器  │  │  移动设备    │  │  AGV 机器人  │      │
│  └──────┬───────┘  └──────┬───────┘  └──────┬───────┘      │
└─────────┼──────────────────┼──────────────────┼─────────────┘
          │                  │                  │
          │ HTTP:8080        │ HTTP:5000        │ MQTT:1883
          │                  │                  │
┌─────────┼──────────────────┼──────────────────┼─────────────┐
│         ▼                  ▼                  ▼              │
│  ┌──────────────┐   ┌─────────────────────────────┐        │
│  │    Nginx     │   │      后端 API (ASP.NET)     │        │
│  │  (前端静态)   │   │    - REST API               │        │
│  └──────────────┘   │    - MQTT Client            │        │
│                     │    - SignalR Hub            │        │
│                     └─────────────┬───────────────┘        │
│                                   │                         │
│                     应用层 & 基础设施层                      │
└───────────────────────────────────┼─────────────────────────┘
                                    │
          ┌─────────────────────────┼─────────────────────────┐
          │                         ▼                         │
          │  ┌──────────┐  ┌──────────┐  ┌──────────┐       │
          │  │PostgreSQL│  │  Redis   │  │ RabbitMQ │       │
          │  │  (主库)  │  │  (缓存)  │  │ (消息队列)│       │
          │  └──────────┘  └──────────┘  └──────────┘       │
          │                                                   │
          │  ┌──────────────────────────────────────┐        │
          │  │         EMQX (MQTT Broker)           │        │
          │  │    - VDA5050 协议支持                │        │
          │  │    - 机器人实时通信                  │        │
          │  └──────────────────────────────────────┘        │
          │                                                   │
          │                 中间件层                          │
          └───────────────────────────────────────────────────┘

附录 C: 环境变量配置模板

生产环境配置 (.env):

# 数据库配置
DB_HOST=localhost
DB_PORT=5432
DB_NAME=hah_rcs
DB_USER=sa_user
DB_PASSWORD=your_secure_password_here

# Redis 配置
REDIS_HOST=localhost
REDIS_PORT=7379
REDIS_PASSWORD=your_secure_password_here

# RabbitMQ 配置
RABBITMQ_HOST=localhost
RABBITMQ_PORT=5672
RABBITMQ_USER=admin
RABBITMQ_PASSWORD=your_secure_password_here

# MQTT 配置
MQTT_BROKER=localhost
MQTT_PORT=1883
MQTT_USER=hahrcs
MQTT_PASSWORD=your_secure_password_here

# 应用配置
API_BASE_URL=http://your-server-ip:5000
WEB_BASE_URL=http://your-server-ip:8080

文档结束

注意: 本文档基于系统当前配置生成,实际部署时请根据具体环境调整参数。生产环境部署前,请务必修改所有默认密码并进行安全加固。