diff --git a/docs/design/00_Management/01_Project_Progress.md b/docs/design/00_Management/01_Project_Progress.md index 0f2fd38..42ca61d 100644 --- a/docs/design/00_Management/01_Project_Progress.md +++ b/docs/design/00_Management/01_Project_Progress.md @@ -117,6 +117,7 @@ > 说明:本表中的历史记录按当时原始表述保留;当前正式数据库口径统一以“达梦数据库 8.0+”为准。 | 2026-03-26 | 方案二整体部署方案独立成文 | 1)新增 `docs/design/03_Technical_Design/08_Integrated_Deployment_Design_PlanB.md`,将已采纳 PostgreSQL 16 方案二后的整体部署方案独立成文;2)结合当前前后端分层部署形态,补齐应用、数据库、中间件、静态存储的一体化部署结构;3)新增软件拓扑图、网络拓扑图、主机角色划分、资源配置建议、网络需求和端口访问建议;4)在 `07_PostgreSQL16_DR_Resource_Application.md` 增加独立文档引用说明,在技术专项目录增加入口。 | 用户明确要求不要仅在 `07` 文档内保留方案二内容,而是需要形成独立文件,并作为已采纳数据库方案后的整体部署方案提交评审。 | 正面影响,数据库资源申请专题与整体部署方案实现职责分离;后续甲方可分别评审“数据库容灾资源申请”和“系统整体部署方案”,减少口径混杂并提升部署审批的可读性。 | +| 2026-04-02 | 方案二整体部署文档按网络图口径对齐 | 1)将 `docs/design/03_Technical_Design/08_Integrated_Deployment_Design_PlanB.md` 的网络分区口径统一为“办公区 / 公网区域 / 互联网区DMZ / 内网区”;2)将 `Nginx` 入口、业务应用节点、`SFTP/FTP` 文件交换服务器的部署区域说明统一调整为与评审图一致;3)同步修正网络拓扑图、访问链路、带宽/端口、资源角色及结论段落中的命名与边界表述。 | 用户提供最新部署图,要求正式文档向图片口径靠拢,消除 `内网 Nginx`、应用区/DMZ、办公区等描述不一致问题。 | 正面影响,整体部署方案的图文一致性显著提升,便于甲方按统一网络边界和主机分区口径开展安全评审与资源审批。 | | 2026-03-18 | REV-005 统计模板补齐 | 1)在 `specs/002-rev005-invoice-flow/verification.md` 为 `T055`、`T060`、`T061`、`T062`、`T063` 新增可直接填写的样本记录模板;2)将 SC-001 ~ SC-004 的建议统计口径细化为表格字段与待补说明,避免后续只剩抽象待办;3)保持“模板已补齐但实际统计结果仍待联调/测试环境补录”的真实状态,不虚构样本结果。 | 用户继续推进 REV-005,希望把剩余统计类待办进一步收敛成可执行模板,便于后续直接补录真实样本而不是重新设计统计格式。 | 正面影响,REV-005 当前已具备统一的统计与日志抽样记录模板;后续补 `T055`、`T060 ~ T063` 时可直接按模板填充真实环境数据,减少再次整理验证文档结构的成本。 | | 2026-03-18 | REV-005 verify 执行入口补齐 | 1)在 `specs/002-rev005-invoice-flow/verification.md` 补齐 `/business/invoice/apply`、`/query`、`/query/compensate`、`/write-back`、`/customer/query`、`/customer/download`、`/customer/push`、`/invalidate`、`/red-ink` 的最小请求模板;2)继续补齐 `T055`、`T060 ~ T063` 的执行命令草稿与样本采集顺序,明确仅作为测试/联调环境占位模板,真实地址、鉴权信息、业务主键与统计结果均待后续替换和回填;3)同步 `03_Task_Checklist.md`,将 verify 阶段推进到“替换真实环境参数即可执行”的状态。 | 用户继续推进 REV-005,希望不要停留在抽象验证建议,而是把剩余 verify 工作推进到可直接执行、可直接补样本的程度。 | 正面影响,REV-005 当前已具备统一的验证入口、请求模板、命令草稿与采样顺序;后续在测试或联调环境中可直接替换参数发起请求并回填 `T055`、`T060 ~ T063` 的真实结果,减少重复梳理接口和命令的成本。 | diff --git a/docs/design/03_Technical_Design/08_Integrated_Deployment_Design_PlanB.md b/docs/design/03_Technical_Design/08_Integrated_Deployment_Design_PlanB.md index f4addb5..45f6681 100644 --- a/docs/design/03_Technical_Design/08_Integrated_Deployment_Design_PlanB.md +++ b/docs/design/03_Technical_Design/08_Integrated_Deployment_Design_PlanB.md @@ -53,15 +53,15 @@ retrieval_priority: P1 1. 数据库部署方案已采纳 `docs/design/03_Technical_Design/07_PostgreSQL16_DR_Resource_Application.md` 中的方案二,即“同城双可用区主备容灾方案”。 2. 前端继续采用 `Nginx + Vue3` 的静态部署模式。 3. 对外访问经甲方或第三方管理的公网入口进行薄转发,不纳入本方案主机资源范围。 -4. 内网 `Nginx` 单独部署,负责将开放 API 端点负载到两台业务应用节点。 -5. 两台业务应用节点内均部署 `Spring Boot Gateway`,作为微服务集群统一接入入口,并同时承载业务服务。 +4. `Nginx` 入口单独部署在互联网区 `DMZ`,负责承接办公网、公网入口和外部授权链路转发,并将开放 API 端点负载到两台业务应用节点。 +5. 两台业务应用节点部署在互联网区 `DMZ`,节点内均部署 `Spring Boot Gateway`,作为微服务集群统一接入入口,并同时承载业务服务。 6. 中间件集中部署在 1 台主机上。 7. 数据库控制组件与中间件部署在同一台主机上。 8. `RustFS` 作为静态存储与对象存储统一入口,与中间件同机部署。 9. 一期口径下,原“数据与中间件节点”和“文件存储节点”合并为 1 台综合节点。 -10. 银行文件交换采用独立 `SFTP/FTP` 文件交换服务器,作为银行送盘、回盘、对账文件交换专用前置机。 +10. 银行文件交换采用独立 `SFTP/FTP` 文件交换服务器,并部署在互联网区 `DMZ`,作为银行送盘、回盘、对账文件交换专用前置机。 11. 当前已知可用于本方案的业务与基础设施主机资源如下: - - 内网 Nginx 入口节点:8 核 CPU / 16 GB 内存 / 300 GB 存储,共 1 台 + - DMZ Nginx 入口节点:8 核 CPU / 16 GB 内存 / 300 GB 存储,共 1 台 - 业务应用节点(主):32 核 CPU / 64 GB 内存 / 300 GB 存储,共 2 台 - 数据、中间件与文件存储综合节点:16 核 CPU / 32 GB 内存 / 2300 GB 存储,共 1 台 - 银行文件交换服务器:2 核 CPU / 8 GB 内存 / 200 GB 存储,共 1 台 @@ -75,8 +75,8 @@ retrieval_priority: P1 2. 中间件集中部署,降低主机数量和运维复杂度。 3. 数据库主备分离部署,避免与中间件、应用节点混部。 4. 数据库控制组件集中部署,通过统一代理地址屏蔽主备切换细节。 -5. 网络按公网接入区、内网接入区、应用区、中间件与文件存储区、银行文件交换区、数据区分层隔离。 -6. 在现有主机数量约束下,优先复用现有业务应用节点、内网入口节点及综合节点资源。 +5. 网络按办公区、公网区域、互联网区 `DMZ`、内网区分层隔离;其中数据库、中间件控制与备份归档均落在内网区。 +6. 在现有主机数量约束下,优先复用现有业务应用节点、DMZ Nginx 入口节点及综合节点资源。 ## 软件拓扑图 @@ -87,67 +87,71 @@ flowchart LR classDef source fill:#ecfeff,stroke:#0891b2,stroke-width:1.2px,color:#083344; classDef access fill:#fff7ed,stroke:#ea580c,stroke-width:1.4px,color:#7c2d12; classDef app fill:#eff6ff,stroke:#2563eb,stroke-width:1.4px,color:#1e3a8a; + classDef zone fill:#f8fafc,stroke:#94a3b8,stroke-width:1.2px,color:#0f172a; - subgraph OUTER[公网域] + subgraph OFFICE[办公区] + direction TB + U1[PC 端用户
办公网段]:::source + end + + subgraph PUBLIC[公网区域] direction TB U2[移动端用户]:::source U3[第三方系统]:::source - G1[公网接入代理]:::access + G1[公网授权入口]:::access end - subgraph INNER[内部网络域] + subgraph DMZ[互联网区 / DMZ] direction TB - U1[PC 端用户]:::source - G2[内网 Nginx]:::access + G2[Nginx 入口]:::access + A1[业务应用节点 1
Spring Boot Gateway + 业务服务]:::app + A2[业务应用节点 2
Spring Boot Gateway + 业务服务]:::app end - subgraph APP1[业务应用节点 1] - direction TB - A1G[Spring Boot Gateway]:::app - A1B[业务服务]:::app - end + class OFFICE,PUBLIC,DMZ zone; - subgraph APP2[业务应用节点 2] - direction TB - A2G[Spring Boot Gateway]:::app - A2B[业务服务]:::app - end - - U1 -->|内网访问| G2 + U1 -->|办公网访问,内网 IP| G2 U2 -->|HTTPS 443| G1 - U3 -->|接口访问| G1 - G1 -->|跨公网/内网边界转发| G2 - G2 -->|负载到节点 1| A1G - G2 -->|负载到节点 2| A2G - A1G --> A1B - A2G --> A2B + U3 -->|HTTPS / API| G1 + G1 -->|授权转发| G2 + G2 -->|API 转发| A1 + G2 -->|API 转发| A2 ``` 图说明: -1. 图中已明确区分公网域与内部网络域。 -2. PC 端用户通过内网直接访问内部网络域中的内网 Nginx。 -3. 移动端用户和第三方系统位于公网域,先经公网接入代理,再跨边界转发到内部网络域中的内网 Nginx。 -4. 内网 Nginx 将开放 API 端点负载到两台业务应用节点。 -5. 两台业务应用节点内均部署 Spring Boot Gateway,作为微服务集群统一接入入口。 -6. 每台业务应用节点内的 Gateway 再向本节点业务服务转发请求。 +1. 图中已明确区分办公区、公网区域和互联网区 `DMZ`。 +2. PC 端用户位于办公区,经办公网使用内网 IP 直接访问 `DMZ` 内的 `Nginx` 入口。 +3. 移动端用户和第三方系统位于公网区域,先经公网授权入口,再跨边界进入 `DMZ` 内的 `Nginx` 入口。 +4. `Nginx` 入口位于互联网区 `DMZ`,负责将开放 API 端点负载到两台业务应用节点。 +5. 两台业务应用节点位于互联网区 `DMZ`,节点内均部署 `Spring Boot Gateway`,作为微服务集群统一接入入口。 +6. 公网入口后侧涉及的边界路由与 `NAT` 转换属于甲方网络侧能力,本图不展开网络设备细节。 **图 4-2 综合服务软件拓扑图** ```mermaid flowchart TB + classDef zone fill:#f8fafc,stroke:#94a3b8,stroke-width:1.2px,color:#0f172a; classDef app fill:#eff6ff,stroke:#2563eb,stroke-width:1.4px,color:#1e3a8a; classDef service fill:#f5f3ff,stroke:#7c3aed,stroke-width:1.4px,color:#4c1d95; - A1[业务应用节点 1
Gateway + Biz]:::app - A2[业务应用节点 2
Gateway + Biz]:::app - - subgraph M[综合节点] - direction TB - M2[Redis / Nacos / RustFS]:::service - M3[HAProxy / PgBouncer / Patroni]:::service + subgraph DMZ[互联网区 / DMZ] + direction LR + A1[业务应用节点 1
Gateway + Biz]:::app + A2[业务应用节点 2
Gateway + Biz]:::app end + subgraph INTRA[内网区] + direction TB + subgraph M[综合节点] + direction TB + M2[Redis / Nacos / RustFS]:::service + M3[HAProxy / PgBouncer / Patroni]:::service + end + end + + class DMZ,INTRA zone; + A1 -->|缓存 配置 文件访问| M2 A2 -->|缓存 配置 文件访问| M2 A1 -->|数据库代理访问| M3 @@ -156,31 +160,43 @@ flowchart TB 图说明: -1. 综合节点承接缓存、配置、对象存储及数据库控制组件。 -2. 两台业务应用节点统一访问综合节点,不直接连接数据库。 +1. 综合节点位于内网区,承接缓存、配置、对象存储及数据库控制组件。 +2. 两台 `DMZ` 业务应用节点统一访问内网区综合节点,不直接连接数据库。 **图 4-3 数据与备份软件拓扑图** ```mermaid flowchart LR + classDef zone fill:#f8fafc,stroke:#94a3b8,stroke-width:1.2px,color:#0f172a; classDef service fill:#f5f3ff,stroke:#7c3aed,stroke-width:1.4px,color:#4c1d95; classDef data fill:#ecfdf5,stroke:#059669,stroke-width:1.4px,color:#064e3b; classDef backup fill:#fffbeb,stroke:#d97706,stroke-width:1.4px,color:#78350f; classDef bank fill:#fef2f2,stroke:#dc2626,stroke-width:1.4px,color:#7f1d1d; - M2[RustFS / 文件归档]:::service - M3[HAProxy / PgBouncer / Patroni]:::service - F1[SFTP / FTP 文件交换服务器]:::bank - D1[(PostgreSQL 主库)]:::data - D2[(PostgreSQL 热备)]:::data - B1[备份归档存储]:::backup + subgraph DMZ[互联网区 / DMZ] + F1[SFTP / FTP 文件交换服务器]:::bank + end - M3 -->|数据库访问| D1 - M3 -->|状态感知| D2 - D1 -->|同步复制| D2 - D1 -->|基础备份 WAL 归档| B1 + subgraph INTRA[内网区] + direction LR + subgraph M[综合节点] + direction TB + M1[数据库管理控件 / 中间件]:::service + M2[对象存储 / RustFS]:::service + end + D1[(PostgreSQL 主库)]:::data + D2[(PostgreSQL 热备)]:::data + B1[备份归档存储]:::backup + end + + class DMZ,INTRA zone; + + M1 -->|5432 数据库访问| D1 + M1 -.->|5432 状态探测| D2 + D1 -->|主备同步| D2 + D1 -->|备份 / WAL 归档| B1 D2 -->|备份副本| B1 - M2 -->|对象存储归档| B1 + M2 -->|文件归档| B1 F1 -->|银行文件归档| B1 ``` @@ -188,7 +204,7 @@ flowchart LR 1. 数据库控制组件经由主库提供数据库访问能力。 2. 主库与热备之间通过同步复制保持一致性。 -3. 银行文件交换服务器承接送盘、回盘、对账文件交换能力。 +3. 银行文件交换服务器位于互联网区 `DMZ`,承接送盘、回盘、对账文件交换能力。 4. RustFS 与银行文件交换服务器分别将各自数据归档到备份归档存储。 ## 主机部署图 @@ -201,14 +217,15 @@ flowchart LR classDef app fill:#eff6ff,stroke:#2563eb,stroke-width:1.2px,color:#1e3a8a; classDef middle fill:#f5f3ff,stroke:#7c3aed,stroke-width:1.2px,color:#4c1d95; classDef data fill:#ecfdf5,stroke:#059669,stroke-width:1.2px,color:#064e3b; - - GW[内网 Nginx 入口节点]:::gateway + classDef backup fill:#fffbeb,stroke:#d97706,stroke-width:1.2px,color:#78350f; + GW[DMZ Nginx 入口节点]:::gateway APP1[业务应用节点 1
内含 Gateway]:::app APP2[业务应用节点 2
内含 Gateway]:::app - MID[综合节点]:::middle FTP[SFTP / FTP 文件交换服务器]:::middle + MID[综合节点]:::middle DB1[(数据库主库服务器)]:::data DB2[(数据库热备服务器)]:::data + BK[备份归档存储]:::backup GW --> APP1 GW --> APP2 @@ -219,23 +236,26 @@ flowchart LR MID --> DB1 MID --> DB2 DB1 --> DB2 + DB1 --> BK + DB2 --> BK + MID --> BK ``` 图说明: -1. 内网 Nginx 入口节点作为我方统一接入入口,承接 API 转发与内部负载均衡能力。 -2. 业务应用节点 1 和业务应用节点 2 组成应用主机集群,节点内同时部署 Spring Boot Gateway 与核心业务服务。 -3. 综合节点集中承载 Redis、Nacos、RustFS、HAProxy、PgBouncer、Patroni,并同时访问数据库主库与热备服务器。 -4. 独立的 SFTP/FTP 文件交换服务器承接银行送盘、回盘、对账文件交换,并由业务应用节点直接访问。 -5. 数据库主库服务器与数据库热备服务器独立部署,满足数据库高可用要求。 +1. 本图仅表达主机与主机之间的部署关系,不重复展开办公区、公网区域和跨边界访问链路。 +2. `Nginx` 入口节点、业务应用节点和 `SFTP/FTP` 文件交换服务器部署在互联网区 `DMZ`。 +3. 综合节点、数据库主库服务器、数据库热备服务器和备份归档存储部署在内网区。 +4. 业务应用节点经 `DMZ Nginx` 接入,并访问综合节点与 `SFTP/FTP` 文件交换服务器。 +5. 综合节点统一访问 PostgreSQL 主库与热备;主库、热备和综合节点均向备份归档存储输出数据。 主机部署细化说明: -1. 内网 Nginx 入口节点部署 `Nginx`,负责开放 API 转发和内部负载均衡。 -2. 两台业务应用节点分别部署 `Spring Boot Gateway` 与业务服务实例。 -3. 综合节点部署 `Redis`、`Nacos`、`RustFS`、`HAProxy`、`PgBouncer`、`Patroni`,并负责访问数据库主库与热备服务器。 -4. SFTP/FTP 文件交换服务器部署银行文件交换服务及送盘、回盘、对账目录,由业务应用节点直接访问。 -5. 数据库主库服务器部署 PostgreSQL 主库实例,数据库热备服务器部署 PostgreSQL 热备实例。 +1. 互联网区 `DMZ` 的 `Nginx` 入口节点部署 `Nginx`,负责开放 API 转发和内部负载均衡。 +2. 两台互联网区 `DMZ` 业务应用节点分别部署 `Spring Boot Gateway` 与业务服务实例。 +3. 内网区综合节点部署 `Redis`、`Nacos`、`RustFS`、`HAProxy`、`PgBouncer`、`Patroni`,并负责访问数据库主库与热备服务器。 +4. 互联网区 `DMZ` 的 `SFTP/FTP` 文件交换服务器部署银行文件交换服务及送盘、回盘、对账目录,由业务应用节点直接访问。 +5. 内网区数据库主库服务器部署 PostgreSQL 主库实例,数据库热备服务器部署 PostgreSQL 热备实例。 ## 数据库访问链路图 @@ -288,7 +308,7 @@ flowchart LR ## 网络拓扑图 -> 说明:如需生成正式网络分区图与网络连接图,统一以 `scripts/generate_planb_diagrams.py` 生成的产物为准;其他脚本仅用于布局试验,不作为正式交付依据。 +> 说明:如需生成正式网络分区图,统一以 `scripts/generate_planb_diagrams.py` 生成的产物为准;其他脚本仅用于布局试验,不作为正式交付依据。 **图 4-7 网络分区图** @@ -302,50 +322,47 @@ flowchart LR classDef bank fill:#fef2f2,stroke:#dc2626,stroke-width:1.2px,color:#7f1d1d; classDef backup fill:#fffbeb,stroke:#d97706,stroke-width:1.2px,color:#78350f; - U[用户与外部系统]:::user - PGW[公网接入代理]:::edge - - subgraph Z1[内网接入区] - IGW[内网 Nginx] + subgraph Z1[办公区] + PC[PC 端用户] end - subgraph Z2[应用区] + subgraph Z2[公网区域] + PUB[移动端用户 / 第三方系统] + EDGE[公网入口 / 边界路由 / NAT] + BANK[银行系统] + end + + subgraph Z3[互联网区 / DMZ] + IGW[Nginx 入口] APP[业务应用集群] - end - - subgraph Z3[综合服务区] - MID[综合节点] - end - - subgraph Z4[数据区] - DBM[(PostgreSQL 主库)] - DBS[(PostgreSQL 热备)] - end - - subgraph Z6[互联网银行交换区] FX[SFTP / FTP 文件交换服务器] end - subgraph Z5[机房接入区] + subgraph Z4[内网区] + MID[综合节点] + DBM[(PostgreSQL 主库)] + DBS[(PostgreSQL 热备)] BK[备份归档存储] end - class Z1,Z2,Z3,Z4,Z5,Z6 zone; - class IGW edge; - class APP svc; - class MID svc; + class Z1,Z2,Z3,Z4 zone; + class PC,PUB user; + class EDGE,IGW edge; + class APP,MID svc; class DBM,DBS data; class FX bank; class BK backup; - U --> PGW - U --> IGW - PGW --> IGW + PC --> IGW + PUB --> EDGE + BANK --> IGW + BANK --> FX + EDGE --> IGW IGW --> APP APP --> FX APP --> MID MID --> DBM - MID --> DBS + MID -.-> DBS DBM --> BK DBS --> BK MID --> BK @@ -353,94 +370,17 @@ flowchart LR 图说明: -1. 公网接入代理不纳入我方主机资源,但作为公网访问进入内网的前置接入层予以保留。 -2. 网络分区图按服务器和服务器集群粒度表达,不展开单机内部软件组件。 -3. PC 端用户可直接通过内网访问内网 Nginx;移动端和第三方系统经公网接入代理后进入内网 Nginx。 -4. 业务应用集群、综合服务区、数据区、机房接入区、互联网银行交换区相互隔离,通过授权链路互通。 - -**图 4-8 网络连接图** - -```mermaid -flowchart TB - classDef user fill:#ecfeff,stroke:#0891b2,stroke-width:1.2px,color:#083344; - classDef access fill:#fff7ed,stroke:#ea580c,stroke-width:1.2px,color:#7c2d12; - classDef app fill:#eff6ff,stroke:#2563eb,stroke-width:1.2px,color:#1e3a8a; - classDef middle fill:#f5f3ff,stroke:#7c3aed,stroke-width:1.2px,color:#4c1d95; - classDef data fill:#ecfdf5,stroke:#059669,stroke-width:1.2px,color:#064e3b; - classDef backup fill:#fffbeb,stroke:#d97706,stroke-width:1.2px,color:#78350f; - classDef bank fill:#fef2f2,stroke:#dc2626,stroke-width:1.2px,color:#7f1d1d; - - subgraph OUTER[公网域] - direction LR - M[移动端用户]:::user - T[第三方系统]:::user - FX[SFTP/FTP文件交换服务器]:::bank - end - - subgraph INNER[内部网络域] - direction TB - subgraph CLIENT[客户端] - PC[PC 端用户]:::user - end - - subgraph ACCESS[接入层] - PGW[公网接入代理]:::access - IGW[内网 Nginx]:::access - end - - subgraph SVC[应用与中间件层] - APP[业务应用集群
Spring Boot Gateway + Biz]:::app - CACHE[Redis / Nacos / RustFS]:::middle - CTRL[HAProxy / PgBouncer / Patroni]:::middle - end - - subgraph DATA[数据层] - DBM[(PostgreSQL 主库)]:::data - DBS[(PostgreSQL 热备)]:::data - end - - subgraph STORAGE[存储层] - STORE[备份归档存储]:::backup - end - end - - %% 公网访问链路 - M -->|HTTPS 443| PGW - T -->|HTTPS 443 / 接口| PGW - PGW -->|请求转发| IGW - - %% 内网访问链路 - PC -->|内网访问| IGW - IGW -->|网关/应用端口| APP - - %% 应用层依赖 - APP -->|6379 / 8848 / 9000| CACHE - APP -->|文件传输| FX - APP -->|6432 / 5000| CTRL - CTRL -->|5432| DBM - CTRL -.->|5432 状态探测| DBS - DBM -->|主备同步| DBS - - %% 数据备份与归档 - CACHE -->|归档文件| STORE - DBM -->|备份 / WAL 归档| STORE - DBS -.->|备份副本| STORE - -``` - -图说明: - -1. 图中已明确区分公网域与内部网络域,公网访问通过公网接入代理跨边界进入内部网络。 -2. PC 端用户位于内部网络域,直接访问内网 Nginx;移动端和第三方系统位于公网域。 -3. 内网 Nginx 统一将 API / Gateway 请求负载到业务应用集群。 -4. 业务应用集群分别访问综合服务、银行文件交换服务器和数据库控制组件。 -5. 综合服务中的数据库控制组件同时访问 PostgreSQL 主库与热备;数据库与综合服务均向备份归档存储输出归档数据。 +1. 公网入口、边界路由和 `NAT` 转发不纳入我方主机资源,但作为公网访问进入 `DMZ` 的前置接入层予以保留。 +2. 网络分区图按办公区、公网区域、互联网区 `DMZ`、内网区四区模型表达,不展开单机内部软件组件。 +3. PC 端用户可直接通过办公网访问 `DMZ` 中的 `Nginx` 入口;移动端和第三方系统经公网入口、边界路由或 `NAT` 转发后进入 `DMZ`。 +4. `DMZ` 中的 `Nginx` 入口、业务应用集群、银行文件交换服务器与内网区综合节点、数据库、备份归档存储通过授权链路互通。 +5. 银行系统除通过 `SFTP/FTP` 目录交换文件外,还可按授权专线或外联链路访问 `DMZ Nginx` 暴露的 API 入口,网络分区图已同步表达这两类授权链路。 ## 主机角色与部署内容 | 层级 | 主机角色 | 数量 | 主要部署内容 | 说明 | |---|---|---:|---|---| -| 接入层 | 内网 Nginx 入口节点 | 1 台 | Nginx、API 转发、内部负载均衡 | 作为我方统一内网接入入口,承接开放 API 转发 | +| 接入层 | DMZ Nginx 入口节点 | 1 台 | Nginx、API 转发、内部负载均衡 | 作为我方统一 DMZ 接入入口,承接办公网访问、公网转发与开放 API 转发 | | 应用层 | 业务应用节点(主) | 2 台 | Spring Boot Gateway、Spring Boot 业务服务 | 承载微服务集群接入与表务、抄表、收费、账务、发票、报表等核心应用服务 | | 综合支撑层 | 数据、中间件与文件存储综合节点 | 1 台 | Redis、Nacos、RustFS、HAProxy、PgBouncer、Patroni | 中间件、数据库控制与文件存储同机部署 | | 银行交换层 | SFTP/FTP 文件交换服务器 | 1 台 | SFTP/FTP 服务、送盘目录、回盘目录、对账目录、归档目录 | 作为银行文件交换专用前置机 | @@ -452,7 +392,7 @@ flowchart TB | 主机角色 | 数量 | 建议配置 | 备注 | |---|---:|---|---| -| 内网 Nginx 入口节点 | 1 台 | 8 核 CPU / 16 GB 内存 / 300 GB 存储 | 承载内网 Nginx、API 转发和内部负载均衡 | +| DMZ Nginx 入口节点 | 1 台 | 8 核 CPU / 16 GB 内存 / 300 GB 存储 | 承载 DMZ Nginx、API 转发和内部负载均衡 | | 业务应用节点(主) | 2 台 | 32 核 CPU / 64 GB 内存 / 300 GB 存储 | 承载 Spring Boot Gateway 及表务、抄表、收费、账务、发票、报表等核心应用服务 | | 数据、中间件与文件存储综合节点 | 1 台 | 16 核 CPU / 32 GB 内存 / 2300 GB 存储 | 承载缓存、配置治理、数据库控制、图片、附件等非结构化数据 | | SFTP/FTP 文件交换服务器 | 1 台 | 2 核 CPU / 8 GB 内存 / 200 GB 存储 | 承载银行送盘、回盘、对账、归档文件交换,建议独立部署 | @@ -483,7 +423,7 @@ flowchart TB | 序号 | 资源名称 | 数量 | 规格 | 部署内容 | 用途说明 | 建议口径 | |---|---:|---:|---|---|---|---| -| 1 | 内网 Nginx 入口节点 | 1 台 | 8 核 CPU / 16 GB 内存 / 300 GB 存储 | Nginx、API 转发、内部负载均衡 | 我方统一内网接入入口 | 可利旧优先 | +| 1 | DMZ Nginx 入口节点 | 1 台 | 8 核 CPU / 16 GB 内存 / 300 GB 存储 | Nginx、API 转发、内部负载均衡 | 我方统一 DMZ 接入入口 | 可利旧优先 | | 2 | 业务应用节点(主) | 2 台 | 32 核 CPU / 64 GB 内存 / 300 GB 存储 | Spring Boot Gateway、Spring Boot 核心业务服务 | 承载微服务接入与核心业务服务 | 现有资源纳入正式方案 | | 3 | 数据、中间件与文件存储综合节点 | 1 台 | 16 核 CPU / 32 GB 内存 / 2300 GB 存储 | Redis、Nacos、RustFS、HAProxy、PgBouncer、Patroni | 承载缓存、配置治理、数据库控制、图片、附件、导出文件等能力 | 现有资源纳入正式方案 | | 4 | SFTP/FTP 文件交换服务器 | 1 台 | 2 核 CPU / 8 GB 内存 / 200 GB 存储 | SFTP/FTP 服务、送盘/回盘/对账目录、归档目录 | 承载银行文件交换与目录隔离 | 按最节约一期规划建议新增或单独利旧 | @@ -493,7 +433,7 @@ flowchart TB ### 审批建议 -1. 业务应用节点、综合节点、内网 Nginx 入口节点可优先按现有资源纳入实施范围。 +1. 业务应用节点、综合节点、DMZ Nginx 入口节点可优先按现有资源纳入实施范围。 2. SFTP/FTP 文件交换服务器建议单独审批,以满足银行文件交换隔离和安全要求。 3. PostgreSQL 主库与热备库建议作为单独审批项,避免与现有业务节点混部。 4. 备份归档存储建议作为单独资源项审批,避免后期因备份空间不足影响正式上线。 @@ -504,7 +444,7 @@ flowchart TB |---|---|---|---|---| | 操作系统 | Linux 发行版 | 银河麒麟(Kylin V10)X86 | 全部服务器 | 按甲方当前基础环境标准选定 | | 运行环境 | JDK | 17 | 业务应用节点 | Spring Boot 运行环境 | -| 接入层 | Nginx | 1.20+ | 内网 Nginx 入口节点 | 内网 API 转发、内部负载均衡 | +| 接入层 | Nginx | 1.20+ | DMZ Nginx 入口节点 | 办公网、公网入口转发与内部负载均衡 | | 网关服务 | Spring Boot Gateway | 3.x | 业务应用节点 | 微服务集群统一接入 | | 业务服务 | Spring Boot | 3.x | 业务应用节点 | 核心业务服务框架 | | 银行文件交换 | SFTP/FTP 服务 | 稳定版 | SFTP/FTP 文件交换服务器 | 银行送盘、回盘、对账文件交换 | @@ -531,7 +471,7 @@ flowchart TB | 组件 | 部署节点 | 建议部署方式 | 是否建议 `host` 模式 | 说明 | |---|---|---|---|---| -| 内网 Nginx | 内网 Nginx 入口节点 | Docker 部署 | 是,优先建议 | 作为我方统一接入入口,便于端口管理与转发 | +| DMZ Nginx | DMZ Nginx 入口节点 | Docker 部署 | 是,优先建议 | 作为我方统一 DMZ 接入入口,便于端口管理与转发 | | Spring Boot Gateway | 业务应用节点(主) | Docker 部署 | 否 | 作为微服务统一接入入口,建议与业务服务同节点部署 | | Spring Boot 应用 | 业务应用节点(主) | Docker 部署 | 否 | 便于发布、回滚、扩容,保留容器网络隔离 | | SFTP/FTP 服务 | SFTP/FTP 文件交换服务器 | 物理机/虚拟机直接部署 | 否 | 作为银行文件交换专用服务,建议独立部署并做目录隔离 | @@ -548,7 +488,7 @@ flowchart TB 结合当前资源结构,建议优先采用 `Docker + host` 模式的组件如下: -1. `内网 Nginx` +1. `DMZ Nginx` 2. `HAProxy` 3. `PgBouncer` @@ -573,18 +513,18 @@ flowchart TB | 网络分区 | 部署对象 | 访问要求 | |---|---|---| -| 公网接入区 | 公网入口薄转发 | 对外提供 HTTPS 访问,不纳入我方主机资源 | -| 应用区 | 业务应用节点 | 仅允许内网接入区与运维区访问 | -| 中间件与文件存储区 | Redis、Nacos、RustFS、数据库控制组件 | 仅允许业务应用节点与运维区访问 | -| 银行文件交换区 | SFTP/FTP 文件交换服务器 | 仅允许业务应用节点、银行专线或授权外联链路访问 | -| 数据区 | PostgreSQL 主库、热备库、备份存储 | 严格限制,仅允许中间件控制主机和运维区访问 | +| 办公区 | PC 端用户办公网段 | 仅允许通过办公网访问 `DMZ Nginx` 入口 | +| 公网区域 | 移动端用户、第三方系统、公网入口薄转发、边界路由 / NAT | 对外提供 HTTPS 访问,不纳入我方主机资源 | +| 互联网区 DMZ | `DMZ Nginx`、业务应用节点、`SFTP/FTP` 文件交换服务器 | 作为对外与跨边界服务区,仅允许按授权链路访问内网区 | +| 内网区 | Redis、Nacos、RustFS、数据库控制组件、PostgreSQL 主库/热备、备份归档存储 | 严格限制,仅允许 `DMZ` 业务应用节点、综合节点控制链路和运维区访问 | ### 2. 带宽与时延要求 | 网络链路 | 建议要求 | 说明 | |---|---|---| -| 公网入口薄转发到内网 Nginx | 千兆网络 | 满足公网入口转发 | -| 内网 Nginx 到业务应用 | 千兆网络 | 满足开放 API 转发与网关接入 | +| 公网入口薄转发到 DMZ Nginx | 千兆网络 | 满足公网入口转发 | +| 办公网到 DMZ Nginx | 千兆网络 | 满足办公网通过内网 IP 访问 | +| DMZ Nginx 到业务应用 | 千兆网络 | 满足开放 API 转发与网关接入 | | 业务应用到综合节点 | 千兆网络 | 满足缓存、配置治理、文件访问与数据库代理访问 | | 业务应用到 SFTP/FTP 服务器 | 千兆网络 | 满足送盘、回盘、对账文件交换 | | 银行链路到 SFTP/FTP 服务器 | 千兆网络或专线 | 满足银行文件交换与目录投递 | @@ -599,9 +539,11 @@ flowchart TB | 类别 | 开通要求 | 说明 | |---|---|---| | 对外访问 | 开通 443 端口 | 提供统一 HTTPS 入口 | -| 公网入口薄转发访问内网 Nginx | 开通公网入口到内网 Nginx 的转发端口 | 仅授权链路访问 | -| 内网 Nginx 访问应用 | 开通内网 Nginx 到业务应用的 API / 网关端口 | 仅内网访问 | -| 应用访问综合节点 | 开通 Redis、Nacos、RustFS、PgBouncer 相关端口 | 仅应用区访问 | +| 公网入口薄转发访问 DMZ Nginx | 开通公网入口到 DMZ Nginx 的转发端口 | 仅授权链路访问 | +| 办公网访问 DMZ Nginx | 开通办公网到 DMZ Nginx 的内网访问端口 | 仅办公网访问 | +| 银行专线或授权外联链路访问 DMZ Nginx | 开通银行链路到 DMZ Nginx 的 HTTPS/API 端口 | 仅银行授权链路访问 | +| DMZ Nginx 访问应用 | 开通 DMZ Nginx 到业务应用的 API / 网关端口 | 仅 DMZ 内部访问 | +| 应用访问综合节点 | 开通 Redis、Nacos、RustFS(9000/9001)、PgBouncer 相关端口 | 仅 DMZ 业务应用节点访问 | | 业务应用访问 SFTP/FTP 服务器 | 开通 SFTP/FTP 相关端口 | 用于银行文件送盘、回盘、对账交换 | | 银行链路访问 SFTP/FTP 服务器 | 开通 FTP/SFTP 服务端口 | 仅银行授权链路访问 | | 综合节点访问数据库 | 开通 PostgreSQL 5432 及健康检查相关端口 | 仅综合节点访问 | @@ -612,12 +554,14 @@ flowchart TB | 源区域/源主机 | 目标区域/目标主机 | 协议/端口 | 用途 | 开通要求 | |---|---|---|---|---| | 外部用户 | 公网入口薄转发 | HTTPS/443 | 页面访问、接口入口 | 对外开放 | -| 公网入口薄转发 | 内网 Nginx 入口节点 | HTTP/HTTPS/转发端口 | 公网访问转入内网入口 | 授权链路放通 | -| 内网 Nginx 入口节点 | 业务应用节点(主) | HTTP/HTTPS/网关端口 | 内网 API 转发与微服务接入 | 内网放通 | +| 公网入口薄转发 | DMZ Nginx 入口节点 | HTTP/HTTPS/转发端口 | 公网访问转入 DMZ 入口 | 授权链路放通 | +| 办公网段 | DMZ Nginx 入口节点 | HTTP/HTTPS/内网访问端口 | 办公网用户访问系统入口 | 仅办公网放通 | +| 银行专线或授权外联链路 | DMZ Nginx 入口节点 | HTTPS/API 端口 | 银行系统访问 DMZ API 入口 | 仅授权链路放通 | +| DMZ Nginx 入口节点 | 业务应用节点(主) | HTTP/HTTPS/网关端口 | DMZ API 转发与微服务接入 | DMZ 内部放通 | | 业务应用节点(主) | 综合节点 | TCP/6379 | Redis 访问 | 内网放通 | | 业务应用节点(主) | 综合节点 | TCP/8848 | Nacos 访问 | 内网放通 | | 业务应用节点(主) | 综合节点 | TCP/6432 | PgBouncer 访问 | 内网放通 | -| 业务应用节点(主) | 综合节点 | RustFS 对象存储端口 | RustFS 文件访问 | 内网放通 | +| 业务应用节点(主) | 综合节点 | TCP/9000、9001 | RustFS 文件访问与控制台访问 | 内网放通 | | 业务应用节点(主) | SFTP/FTP 文件交换服务器 | TCP/21 或 22 | 银行送盘、回盘、对账文件交换 | 内网放通 | | 银行专线或授权外联链路 | SFTP/FTP 文件交换服务器 | TCP/21 或 22 | 银行文件目录投递与回收 | 仅授权链路放通 | | 综合节点 | PostgreSQL 主库服务器 | TCP/5432 | 数据库代理与控制访问 | 内网放通 | @@ -631,11 +575,11 @@ flowchart TB | 服务 | 典型端口 | 访问范围 | |---|---|---| -| Nginx/HTTPS | 443 | 对外开放 | -| Spring Boot Gateway / 业务应用端口 | 项目自定义端口 | 仅内网 Nginx 与内网调用 | +| Nginx/HTTPS | 443 | 对外开放、办公网授权访问及银行授权链路访问 | +| Spring Boot Gateway / 业务应用端口 | 项目自定义端口 | 仅 DMZ Nginx 与 DMZ/内网授权调用 | | Redis | 6379 | 仅业务应用与运维可访问 | | Nacos | 8848 | 仅业务应用与运维可访问 | -| RustFS | 按 RustFS 实际部署端口 | 仅业务应用与运维可访问 | +| RustFS | 9000(S3 API)、9001(Console) | 仅业务应用与运维可访问 | | SFTP/FTP 服务 | 21 或 22 | 仅业务应用节点、运维和银行授权链路可访问 | | PgBouncer | 6432 | 仅业务应用可访问 | | HAProxy | 5000 或项目定义端口 | 仅 PgBouncer 与运维可访问 | @@ -645,7 +589,7 @@ flowchart TB ### 1. 基础资源准备 -1. 确认内网 Nginx 入口节点、业务应用节点、综合节点是否为利旧资源。 +1. 确认 `DMZ Nginx` 入口节点、业务应用节点、综合节点是否为利旧资源。 2. 完成 SFTP/FTP 文件交换服务器、PostgreSQL 主库服务器、热备服务器及备份归档存储审批。 3. 完成各网络分区、IP、域名、SSL 证书、路由及防火墙策略准备。 @@ -653,7 +597,7 @@ flowchart TB 1. 安装操作系统并完成安全基线加固。 2. 在业务应用节点安装 JDK、部署业务运行环境。 -3. 在内网 Nginx 入口节点安装 Nginx。 +3. 在 `DMZ Nginx` 入口节点安装 Nginx。 4. 在综合节点安装 Redis、Nacos、RustFS、HAProxy、PgBouncer、Patroni。 5. 在 SFTP/FTP 文件交换服务器安装 SFTP/FTP 服务并配置目录结构。 6. 在数据库主备节点安装 PostgreSQL 16。 @@ -669,7 +613,7 @@ flowchart TB ### 4. 应用与存储部署 1. 在业务应用节点部署 Spring Boot Gateway 和业务应用服务。 -2. 在内网 Nginx 入口节点配置 API 转发和内部负载均衡规则。 +2. 在 `DMZ Nginx` 入口节点配置 API 转发和内部负载均衡规则。 3. 在综合节点初始化 RustFS 存储桶和访问策略。 4. 在 SFTP/FTP 文件交换服务器配置送盘、回盘、对账、归档目录。 5. 配置业务应用到 Redis、Nacos、RustFS、PgBouncer 的连接参数。 @@ -693,7 +637,7 @@ flowchart TB | 验收项 | 验收标准 | 说明 | |---|---|---| -| 对外访问 | 用户可通过统一域名正常访问系统 | 公网入口薄转发与内网 Nginx 链路正常 | +| 对外访问 | 用户可通过统一域名正常访问系统 | 公网入口薄转发与 DMZ Nginx 链路正常 | | 业务应用可用性 | 表务、抄表、收费、账务、发票、报表等核心服务正常 | 业务主流程可执行 | | Redis 可用性 | 缓存读写正常 | 中间件能力正常 | | Nacos 可用性 | 配置下发正常 | 配置治理能力正常 | @@ -711,9 +655,9 @@ flowchart TB 本方案的最终结论如下: -1. 公网入口薄转发不纳入我方主机资源;我方实际部署的统一接入入口为内网 Nginx 入口节点。 -2. 2 台业务应用节点作为核心业务集群,节点内同时部署 Spring Boot Gateway 和业务服务,承接微服务统一接入与核心业务处理。 -3. 综合节点集中承载 Redis、Nacos、RustFS 及数据库控制组件,进一步压缩一期主机数量并降低部署复杂度。 +1. 公网入口薄转发、边界路由和 `NAT` 不纳入我方主机资源;我方实际部署的统一接入入口为互联网区 `DMZ` 的 `Nginx` 入口节点。 +2. 2 台业务应用节点部署在互联网区 `DMZ`,节点内同时部署 `Spring Boot Gateway` 和业务服务,承接微服务统一接入与核心业务处理。 +3. 综合节点集中承载 `Redis`、`Nacos`、`RustFS` 及数据库控制组件,并部署在内网区,进一步压缩一期主机数量并降低部署复杂度。 ## RustFS 产品介绍与选型说明 @@ -725,6 +669,6 @@ RustFS 是一款支持私有化部署的 S3 兼容对象存储方案,可用于 2. RustFS 支持私有化部署,适合甲方对自主可控和本地化部署的要求。 3. RustFS 可作为独立对象存储组件部署在综合节点中,与缓存、配置治理和数据库控制能力协同运行。 4. 当前方案中,银行文件交换仍由独立的 SFTP/FTP 文件交换服务器承接,RustFS 不承担银行送盘、回盘和对账文件交换职责。 -4. 新增 1 台 SFTP/FTP 文件交换服务器,作为银行送盘、回盘、对账文件交换专用前置机。 -5. PostgreSQL 16 采用同城双可用区 1 主 1 热备部署,满足高可用要求。 -6. 网络采用公网接入区、内网接入区、应用区、中间件与文件存储区、银行文件交换区、数据区分层隔离模式,以满足安全性、可维护性和资源审批要求。 +5. 新增 1 台 SFTP/FTP 文件交换服务器,作为银行送盘、回盘、对账文件交换专用前置机。 +6. PostgreSQL 16 采用同城双可用区 1 主 1 热备部署,满足高可用要求。 +7. 网络采用办公区、公网区域、互联网区 `DMZ`、内网区分层隔离模式,以满足安全性、可维护性和资源审批要求。