Skip to content

物理架构设计

文档编号: SYS-DES-ARCH-PHYSICAL-001
版本: 1.0
创建日期: 2026-03-08
作者: 架构师
状态: ✅ 已审核通过


1. 概述

1.1 目的

本文档定义System平台的物理架构设计,明确系统的部署拓扑、服务器规划、网络架构和基础设施配置,为系统部署实施提供指导。

1.2 范围

本文档涵盖:

  • 部署环境规划(开发/测试/生产)
  • 服务器规划与配置
  • 网络架构设计
  • 容器化部署方案
  • 高可用架构设计

1.3 参考文档


2. 部署环境规划

2.1 环境划分

System平台规划以下部署环境:

环境用途网络区域数据保留策略
开发环境 (DEV)开发调试内网不保留
测试环境 (TEST)功能/集成测试内网定期清理
预发布环境 (STAGING)生产验证DMZ保留最近3个月
生产环境 (PROD)正式运行DMZ长期保留

2.2 环境资源配置

2.2.1 开发环境 (DEV)

资源类型配置数量说明
应用服务器4C8G1所有服务单实例部署
数据库服务器4C8G1MySQL单实例
缓存服务器2C4G1Redis单实例
存储100GB1共享存储

2.2.2 测试环境 (TEST)

资源类型配置数量说明
应用服务器4C8G2核心服务双实例
数据库服务器4C8G2MySQL主从
缓存服务器2C4G2Redis主从
存储200GB1共享存储

2.2.3 生产环境 (PROD)

资源类型配置数量说明
应用服务器8C16G4服务多实例部署
数据库服务器8C16G3MySQL主从+仲裁
缓存服务器4C8G3Redis集群
搜索服务器4C8G3ES集群
存储服务器4C8G3MinIO集群
消息服务器4C8G3Kafka集群
负载均衡-2Nginx主备

3. 生产环境部署架构

3.1 总体部署拓扑

                              互联网


┌─────────────────────────────────────────────────────────────────────┐
│                           DMZ 区域                                   │
│  ┌─────────────────────────────────────────────────────────────┐   │
│  │                     负载均衡层 (Nginx)                       │   │
│  │  ┌─────────────┐         ┌─────────────┐                   │   │
│  │  │  Nginx主    │◄───────►│  Nginx备    │                   │   │
│  │  │  (Master)   │  VRRP   │  (Backup)   │                   │   │
│  │  └──────┬──────┘         └─────────────┘                   │   │
│  └─────────┼───────────────────────────────────────────────────┘   │
└────────────┼────────────────────────────────────────────────────────┘


┌─────────────────────────────────────────────────────────────────────┐
│                          应用服务区域                                │
│  ┌─────────────────────────────────────────────────────────────┐   │
│  │                   Kubernetes集群                             │   │
│  │                                                              │   │
│  │  ┌─────────────┐ ┌─────────────┐ ┌─────────────┐           │   │
│  │  │   Node 1    │ │   Node 2    │ │   Node 3    │           │   │
│  │  │  (Master)   │ │  (Worker)   │ │  (Worker)   │           │   │
│  │  │             │ │             │ │             │           │   │
│  │  │ • Gateway   │ │ • User      │ │ • Auth      │           │   │
│  │  │ • Web UI    │ │ • Org       │ │ • Config    │           │   │
│  │  └─────────────┘ └─────────────┘ └─────────────┘           │   │
│  │                                                              │   │
│  │  ┌─────────────┐ ┌─────────────┐                           │   │
│  │  │   Node 4    │ │   Node 5    │                           │   │
│  │  │  (Worker)   │ │  (Worker)   │                           │   │
│  │  │             │ │             │                           │   │
│  │  │ • Audit     │ │ • Notify    │                           │   │
│  │  │ • File      │ │ • Message   │                           │   │
│  │  └─────────────┘ └─────────────┘                           │   │
│  └─────────────────────────────────────────────────────────────┘   │
└─────────────────────────────────────────────────────────────────────┘


┌─────────────────────────────────────────────────────────────────────┐
│                          数据存储区域                                │
│  ┌─────────────┐ ┌─────────────┐ ┌─────────────┐                   │
│  │   MySQL     │ │   Redis     │ │     ES      │                   │
│  │   集群      │ │   集群      │ │   集群      │                   │
│  │             │ │             │ │             │                   │
│  │ • Master    │ │ • Node 1    │ │ • Master    │                   │
│  │ • Slave 1   │ │ • Node 2    │ │ • Data 1    │                   │
│  │ • Slave 2   │ │ • Node 3    │ │ • Data 2    │                   │
│  └─────────────┘ └─────────────┘ └─────────────┘                   │
│  ┌─────────────┐ ┌─────────────┐                                   │
│  │   MinIO     │ │   Kafka     │                                   │
│  │   集群      │ │   集群      │                                   │
│  │             │ │             │                                   │
│  │ • Node 1    │ │ • Broker 1  │                                   │
│  │ • Node 2    │ │ • Broker 2  │                                   │
│  │ • Node 3    │ │ • Broker 3  │                                   │
│  └─────────────┘ └─────────────┘                                   │
└─────────────────────────────────────────────────────────────────────┘

3.2 服务器规划

3.2.1 负载均衡服务器

服务器IP地址配置部署组件
nginx-01192.168.1.104C8GNginx Master + Keepalived
nginx-02192.168.1.114C8GNginx Backup + Keepalived

虚拟IP: 192.168.1.100 (VIP)

3.2.2 K8s Master节点

服务器IP地址配置部署组件
k8s-master-01192.168.2.108C16Gkube-apiserver, kube-controller, kube-scheduler, etcd
k8s-master-02192.168.2.118C16Gkube-apiserver, kube-controller, kube-scheduler, etcd
k8s-master-03192.168.2.128C16Gkube-apiserver, kube-controller, kube-scheduler, etcd

3.2.3 K8s Worker节点

服务器IP地址配置部署服务
k8s-worker-01192.168.2.208C16GGateway, Web UI, System服务
k8s-worker-02192.168.2.218C16GConfig服务, Audit服务
k8s-worker-03192.168.2.228C16GFile服务, Message服务
k8s-worker-04192.168.2.238C16G弹性扩容预留
k8s-worker-05192.168.2.248C16G弹性扩容预留

3.2.4 数据库服务器

服务器IP地址配置部署组件
mysql-master192.168.3.108C16GMySQL Master
mysql-slave-01192.168.3.118C16GMySQL Slave 1
mysql-slave-02192.168.3.128C16GMySQL Slave 2

3.2.5 缓存服务器

服务器IP地址配置部署组件
redis-01192.168.3.204C8GRedis Master
redis-02192.168.3.214C8GRedis Master
redis-03192.168.3.224C8GRedis Master

3.2.6 搜索服务器

服务器IP地址配置部署组件
es-master192.168.3.304C8GES Master
es-data-01192.168.3.314C8GES Data
es-data-02192.168.3.324C8GES Data

3.2.7 存储服务器

服务器IP地址配置部署组件
minio-01192.168.3.404C8GMinIO Node
minio-02192.168.3.414C8GMinIO Node
minio-03192.168.3.424C8GMinIO Node

3.2.8 消息服务器

服务器IP地址配置部署组件
kafka-01192.168.3.504C8GKafka Broker + Zookeeper
kafka-02192.168.3.514C8GKafka Broker + Zookeeper
kafka-03192.168.3.524C8GKafka Broker + Zookeeper

4. 网络架构设计

4.1 网络拓扑

┌─────────────────────────────────────────────────────────────────────┐
│                              互联网                                   │
└─────────────────────────────────────────────────────────────────────┘


┌─────────────────────────────────────────────────────────────────────┐
│                         企业防火墙 (Firewall)                        │
│                    端口开放: 80, 443, 22(限IP)                       │
└─────────────────────────────────────────────────────────────────────┘

                    ┌───────────────┼───────────────┐
                    │               │               │
                    ▼               ▼               ▼
┌───────────────────────┐ ┌───────────────────┐ ┌───────────────────┐
│      DMZ区域          │ │     内网区域       │ │    管理区域        │
│  192.168.1.0/24      │ │  192.168.2.0/24   │ │  192.168.4.0/24   │
│                       │ │                   │ │                   │
│  ┌───────────────┐   │ │  ┌───────────┐   │ │  ┌───────────┐   │
│  │  负载均衡      │   │ │  │ K8s集群   │   │ │  │  监控平台  │   │
│  │  192.168.1.x  │   │ │  │192.168.2.x│   │ │  │192.168.4.x│   │
│  └───────────────┘   │ │  └───────────┘   │ │  └───────────┘   │
└───────────────────────┘ └───────────────────┘ └───────────────────┘


┌─────────────────────────────────────────────────────────────────────┐
│                        数据存储区域                                  │
│                      192.168.3.0/24                                 │
│                                                                     │
│  ┌───────────┐ ┌───────────┐ ┌───────────┐ ┌───────────┐           │
│  │  MySQL    │ │  Redis    │ │    ES     │ │  MinIO    │           │
│  │192.168.3.x│ │192.168.3.x│ │192.168.3.x│ │192.168.3.x│           │
│  └───────────┘ └───────────┘ └───────────┘ └───────────┘           │
│  ┌───────────┐ ┌───────────┐                                       │
│  │  Kafka    │ │ Zookeeper │                                       │
│  │192.168.3.x│ │192.168.3.x│                                       │
│  └───────────┘ └───────────┘                                       │
└─────────────────────────────────────────────────────────────────────┘

4.2 网络安全策略

源区域目标区域端口协议说明
互联网DMZ80, 443TCPHTTP/HTTPS访问
DMZ内网8080-8090TCP服务调用
内网数据存储3306TCPMySQL访问
内网数据存储6379TCPRedis访问
内网数据存储9200TCPES访问
内网数据存储9000TCPMinIO访问
内网数据存储9092TCPKafka访问
管理区域所有区域22, 9100TCPSSH和监控

4.3 域名规划

环境域名说明
生产https://system.linsir.com主域名
生产https://api.system.linsir.comAPI域名
测试https://test-system.linsir.com测试环境
开发https://dev-system.linsir.com开发环境

5. 容器化部署方案

5.1 Kubernetes架构

┌─────────────────────────────────────────────────────────────────────┐
│                      Kubernetes集群架构                              │
├─────────────────────────────────────────────────────────────────────┤
│  控制平面 (Control Plane)                                          │
│  ┌─────────────┐ ┌─────────────┐ ┌─────────────┐                   │
│  │   Master    │ │   Master    │ │   Master    │                   │
│  │     01      │ │     02      │ │     03      │                   │
│  │             │ │             │ │             │                   │
│  │• API Server │ │• API Server │ │• API Server │                   │
│  │• Controller │ │• Controller │ │• Controller │                   │
│  │• Scheduler  │ │• Scheduler  │ │• Scheduler  │                   │
│  │• etcd       │ │• etcd       │ │• etcd       │                   │
│  └─────────────┘ └─────────────┘ └─────────────┘                   │
├─────────────────────────────────────────────────────────────────────┤
│  工作节点 (Worker Nodes)                                           │
│  ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐   │
│  │   Worker    │ │   Worker    │ │   Worker    │ │   Worker    │   │
│  │     01      │ │     02      │ │     03      │ │     04      │   │
│  │             │ │             │ │             │ │             │   │
│  │• kubelet   │ │• kubelet   │ │• kubelet   │ │• kubelet   │   │
│  │• kube-proxy│ │• kube-proxy│ │• kube-proxy│ │• kube-proxy│   │
│  │• Containerd│ │• Containerd│ │• Containerd│ │• Containerd│   │
│  └─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘   │
└─────────────────────────────────────────────────────────────────────┘

5.2 命名空间规划

命名空间用途部署组件
kube-systemK8s系统组件CoreDNS, kube-proxy等
ingress-nginx入口控制器Nginx Ingress Controller
monitoring监控组件Prometheus, Grafana
logging日志组件ELK Stack
system-platform业务应用System平台所有服务

5.3 服务部署配置

5.3.1 Gateway服务

yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: system-gateway
  namespace: system-platform
spec:
  replicas: 2
  selector:
    matchLabels:
      app: system-gateway
  template:
    metadata:
      labels:
        app: system-gateway
    spec:
      containers:
      - name: gateway
        image: registry.linsir.com/system/gateway:1.0.0
        ports:
        - containerPort: 8080
        resources:
          requests:
            memory: "512Mi"
            cpu: "500m"
          limits:
            memory: "1Gi"
            cpu: "1000m"
---
apiVersion: v1
kind: Service
metadata:
  name: system-gateway
  namespace: system-platform
spec:
  selector:
    app: system-gateway
  ports:
  - port: 8080
    targetPort: 8080
  type: ClusterIP

5.3.2 System服务

yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: system-service
  namespace: system-platform
spec:
  replicas: 2
  selector:
    matchLabels:
      app: system-service
  template:
    metadata:
      labels:
        app: system-service
    spec:
      containers:
      - name: system-service
        image: registry.linsir.com/system/system-service:1.0.0
        ports:
        - containerPort: 8081
        resources:
          requests:
            memory: "2Gi"
            cpu: "1000m"
          limits:
            memory: "4Gi"
            cpu: "2000m"
        env:
        - name: SPRING_PROFILES_ACTIVE
          value: "prod"
        - name: MYSQL_HOST
          value: "mysql-master"
        - name: REDIS_HOST
          value: "redis-cluster"

5.4 配置管理

5.4.1 ConfigMap

yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: system-config
  namespace: system-platform
data:
  application.yml: |
    server:
      port: 8080
    spring:
      datasource:
        url: jdbc:mysql://mysql-master:3306/system_db
        username: ${DB_USERNAME}
        password: ${DB_PASSWORD}
      redis:
        cluster:
          nodes: redis-01:6379,redis-02:6379,redis-03:6379

5.4.2 Secret

yaml
apiVersion: v1
kind: Secret
metadata:
  name: system-secrets
  namespace: system-platform
type: Opaque
data:
  DB_USERNAME: c3lzdGVtX3VzZXI=  # system_user (base64)
  DB_PASSWORD: c3lzdGVtX3Bhc3N3b3Jk  # system_password (base64)
  JWT_SECRET: eW91ci1qd3Qtc2VjcmV0LWtleQ==  # your-jwt-secret-key (base64)

6. 高可用架构设计

6.1 负载均衡高可用

┌─────────────────────────────────────────────────────────────┐
│                    负载均衡高可用架构                          │
│                                                              │
│  ┌─────────────┐                    ┌─────────────┐         │
│  │  Nginx主    │◄──────Keepalived──►│  Nginx备    │         │
│  │  192.168.   │     (VRRP协议)      │  192.168.   │         │
│  │  1.10       │                    │  1.11       │         │
│  │   (Master)  │                    │  (Backup)   │         │
│  └──────┬──────┘                    └─────────────┘         │
│         │                                                    │
│         │  VIP: 192.168.1.100                                │
│         │                                                    │
│         ▼                                                    │
│  ┌─────────────────────────────────────────────────────┐   │
│  │              K8s集群 (多Worker节点)                  │   │
│  └─────────────────────────────────────────────────────┘   │
└─────────────────────────────────────────────────────────────┘

故障切换

  • Keepalived检测Nginx主节点状态
  • 主节点故障时,VIP自动漂移到备节点
  • 切换时间 < 3秒

6.2 应用服务高可用

高可用策略实现方式说明
多实例部署K8s Deployment多副本至少2个实例
健康检查Liveness/Readiness Probe自动重启异常实例
自动扩缩容HPA (Horizontal Pod Autoscaler)CPU>70%自动扩容
优雅停机PreStop Hook保证请求处理完成

6.3 数据库高可用

6.3.1 MySQL高可用

┌─────────────────────────────────────────────────────────────┐
│                    MySQL高可用架构                            │
│                                                              │
│  ┌─────────────┐         ┌─────────────┐                   │
│  │   Master    │◄───────►│   Slave 1   │                   │
│  │  (写操作)   │  同步复制  │  (读操作)   │                   │
│  │             │         │             │                   │
│  │  192.168.   │         │  192.168.   │                   │
│  │  3.10       │         │  3.11       │                   │
│  └──────┬──────┘         └──────┬──────┘                   │
│         │                        │                          │
│         │    ┌─────────────┐     │                          │
│         └───►│   Slave 2   │◄────┘                          │
│              │  (读操作/备) │                                │
│              │  192.168.   │                                │
│              │  3.12       │                                │
│              └─────────────┘                                │
│                                                              │
│  故障切换: MHA (Master High Availability)                    │
│  自动选举新Master,切换时间 < 30秒                            │
└─────────────────────────────────────────────────────────────┘

6.3.2 Redis高可用

┌─────────────────────────────────────────────────────────────┐
│                    Redis集群架构                              │
│                                                              │
│  ┌─────────────┐         ┌─────────────┐                   │
│  │   Node 1    │◄───────►│   Node 2    │                   │
│  │  (Master)   │  Gossip  │  (Master)   │                   │
│  │  192.168.   │  协议    │  192.168.   │                   │
│  │  3.20       │         │  3.21       │                   │
│  └──────┬──────┘         └──────┬──────┘                   │
│         │                        │                          │
│         │    ┌─────────────┐     │                          │
│         └───►│   Node 3    │◄────┘                          │
│              │  (Master)   │                                │
│              │  192.168.   │                                │
│              │  3.22       │                                │
│              └─────────────┘                                │
│                                                              │
│  分片: 16384 slots均匀分布到3个节点                           │
│  故障转移: 自动选举,切换时间 < 10秒                          │
└─────────────────────────────────────────────────────────────┘

6.4 存储高可用

存储类型高可用方案数据保护
MySQL主从复制 + MHA每日全量备份 + Binlog增量
RedisCluster模式AOF持久化 + RDB快照
ES多节点 + 副本分片快照备份
MinIO分布式纠删码多副本冗余

7. 监控与运维

7.1 监控架构

┌─────────────────────────────────────────────────────────────┐
│                      监控体系架构                             │
│                                                              │
│  ┌─────────────┐    ┌─────────────┐    ┌─────────────┐     │
│  │ Prometheus  │◄───│  Grafana    │    │  Alertmanager│     │
│  │  (指标采集)  │    │  (可视化)   │    │  (告警通知)  │     │
│  └──────┬──────┘    └─────────────┘    └──────┬──────┘     │
│         │                                       │            │
│         │ 拉取指标                               │ 告警通知    │
│         ▼                                       ▼            │
│  ┌─────────────────────────────────────────────────────┐   │
│  │              被监控目标                               │   │
│  │  ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐   │   │
│  │  │ K8s节点 │ │ 应用Pod │ │ 数据库  │ │ 中间件  │   │   │
│  │  │(Node   │ │(App    │ │(MySQL  │ │(Redis  │   │   │
│  │  │Exporter)│ │Metrics) │ │Exporter)│ │Exporter)│   │   │
│  │  └─────────┘ └─────────┘ └─────────┘ └─────────┘   │   │
│  └─────────────────────────────────────────────────────┘   │
└─────────────────────────────────────────────────────────────┘

7.2 日志架构

┌─────────────────────────────────────────────────────────────┐
│                      日志收集架构                             │
│                                                              │
│  ┌─────────────┐    ┌─────────────┐    ┌─────────────┐     │
│  │ Filebeat    │───►│   Kafka     │───►│  Logstash   │     │
│  │ (日志收集)   │    │ (消息缓冲)   │    │ (日志处理)   │     │
│  └─────────────┘    └─────────────┘    └──────┬──────┘     │
│                                                │            │
│                                                ▼            │
│  ┌─────────────────────────────────────────────────────┐   │
│  │              Elasticsearch                          │   │
│  │              (日志存储/检索)                         │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                │            │
│                                                ▼            │
│  ┌─────────────────────────────────────────────────────┐   │
│  │              Kibana                                 │   │
│  │              (日志可视化)                            │   │
│  └─────────────────────────────────────────────────────┘   │
└─────────────────────────────────────────────────────────────┘

7.3 运维工具

工具用途部署方式
Prometheus指标监控K8s Deployment
Grafana监控可视化K8s Deployment
ELK Stack日志管理K8s Deployment
JenkinsCI/CD独立服务器
Harbor镜像仓库独立服务器
JumpServer运维跳板机独立服务器

8. 容量规划

8.1 初期容量(1-1000用户)

资源配置数量说明
应用服务器8C16G3支撑1000并发
数据库8C16G2主从架构
存储500GB-数据+日志

8.2 中期容量(1000-5000用户)

资源配置数量说明
应用服务器8C16G5水平扩容
数据库16C32G2升级配置
存储2TB-扩容存储

8.3 长期容量(5000+用户)

资源配置数量说明
应用服务器16C32G8+大规模集群
数据库分库分表-数据库拆分
存储分布式存储-对象存储

9. 相关文档


10. 修订记录

版本日期作者变更内容
1.02026-03-08架构师初始版本,定义物理部署架构

Released under the MIT License.