一、前期环境准备
1.1 软硬件配置要求
混合部署核心规则为核心涉密数据存私有云、非核心服务跑公有云,两端配置要求如下:
- 私有云(本地机房):CPU 16核、内存32G、系统盘100G SSD、数据盘2T SSD,操作系统CentOS7.9 64位,配置固定公网IP或与公有云打通IPsec专线,延迟≤20ms
- 公有云:通用型服务器CPU 8核、内存16G、系统盘80G SSD、带宽10M,操作系统CentOS7.9 64位,开放80、443端口对公网放行
1.2 前置依赖安装
公私云两端服务器均执行以下命令安装运行环境,全部执行完成后输入docker -v、docker-compose -v有版本输出即为成功:
```
替换系统源为阿里云镜像
yum install -y yum-utils
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装docker并设置开机自启
yum install -y docker-ce docker-ce-cli containerd.io
systemctl start docker && systemctl enable docker
安装docker-compose稳定版
curl -L https://github.com/docker/compose/releases/download/v2.20.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
```
二、核心组件拆分部署
2.1 私有云端核心组件部署
私有云仅部署涉密核心组件,避免敏感数据流出本地:元数据库、涉密文件存储、权限校验服务。将以下配置保存为/opt/archive-local/docker-compose.yml:
```
version: '3'
services:
meta-mysql:
image: mysql:8.0
restart: always
environment:
MYSQL_ROOT_PASSWORD: DAG@2024_meta
MYSQL_DATABASE: archive_meta
volumes:
- /data/archive/mysql:/var/lib/mysql
ports:
- "3306:3306"
command: --default-authentication-plugin=mysql_native_password
secret-minio:
image: minio/minio:RELEASE.2023-07-21T21-12-44Z
restart: always
environment:
MINIO_ROOT_USER: archive_secret
MINIO_ROOT_PASSWORD: Secret@2024_File
volumes:
- /data/archive/secret-file:/data
ports:
- "9000:9000"
- "9001:9001"
command: server /data --console-address ":9001"
auth-service:
image: registry.cn-hangzhou.aliyuncs.com/public-opensource/archive-auth:v1.0
restart: always
environment:
MYSQL_ADDR: 127.0.0.1:3306
MYSQL_USER: root
MYSQL_PWD: DAG@2024_meta
ports:
- "8080:8080"
```
执行命令部署:cd /opt/archive-local && docker-compose up -d,执行完成后输入docker ps确认3个服务状态均为Up。重点操作:私有云防火墙/安全组仅开放3306、9000、8080端口给公有云服务器IP,禁止其他公网IP访问。
2.2 公有云端非核心组件部署
公有云部署对外服务类组件,降低本地机房带宽压力:用户前端、检索服务、公开档案存储、日志服务。将以下配置保存为/opt/archive-cloud/docker-compose.yml,必须把配置内的「私有云IP」替换为实际的专线IP或公网固定IP:
```
version: '3'
services:
archive-web:
image: registry.cn-hangzhou.aliyuncs.com/public-opensource/archive-web:v1.0
restart: always
ports:
- "80:80"
- "443:443"
volumes:
- /opt/archive/nginx/conf.d:/etc/nginx/conf.d
- /opt/archive/cert:/cert
search-service:
image: registry.cn-hangzhou.aliyuncs.com/public-opensource/archive-search:v1.0
restart: always
environment:
META_MYSQL_ADDR: 私有云IP:3306
META_MYSQL_USER: root
META_MYSQL_PWD: DAG@2024_meta
AUTH_ADDR: http://私有云IP:8080
ports:
- "8081:8081"
public-minio:
image: minio/minio:RELEASE.2023-07-21T21-12-44Z
restart: always
environment:
MINIO_ROOT_USER: archive_public
MINIO_ROOT_PASSWORD: Public@2024_File
volumes:
- /data/archive/public-file:/data
ports:
- "9000:9000"
- "9001:9001"
command: server /data --console-address ":9001"
log-service:
image: registry.cn-hangzhou.aliyuncs.com/public-opensource/archive-log:v1.0
restart: always
ports:
- "8082:8082"
```

执行命令部署:cd /opt/archive-cloud && docker-compose up -d,执行完成后输入docker ps确认4个服务状态均为Up。
三、数据互通与权限配置
3.1 网络连通校验
登录公有云服务器,依次执行telnet 私有云IP 3306、telnet 私有云IP 8080、telnet 私有云IP 9000,全部能连通再进行后续配置,不通则检查私有云安全组、防火墙规则。
3.2 路由规则配置
将以下配置保存到公有云服务器的/opt/archive/nginx/conf.d/archive.conf,替换「你的档案系统域名」「私有云IP」为实际值:
```
server {
listen 80;
server_name 你的档案系统域名;
公开资源走公有云存储
location /public/file/ {
proxy_pass http://127.0.0.1:9000;
}
涉密请求、权限校验走私有云
location /secret/ {
proxy_pass http://私有云IP:8080;
}
location /auth/ {
proxy_pass http://私有云IP:8080;
}
检索请求走公有云服务
location /search/ {
proxy_pass http://127.0.0.1:8081;
}
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
}
```
配置完成后执行docker restart archive-web重启前端服务生效。
3.3 存储与权限初始化
- 访问http://私有云IP:9001,用账号archive_secret、密码Secret@2024_File登录,创建名为secret-archive的Bucket,权限设置为私有
- 访问http://公有云IP:9001,用账号archive_public、密码Public@2024_File登录,创建名为public-archive的Bucket,权限设置为公开读
- 访问你的档案系统域名,用默认管理员账号admin、密码Admin@2024登录,进入系统设置-存储配置,分别填入公私云MinIO地址、账号密码保存,系统会自动按档案涉密等级分配存储位置
四、可用性验证与故障排查
4.1 功能验证步骤
- 上传1份标注为公开的档案,查看存储路径是否为公有云public-archive Bucket
- 上传1份标注为涉密的档案,查看存储路径是否为私有云secret-archive Bucket
- 用普通用户账号登录,验证无权限时无法下载涉密档案
- 断开公有云网络,验证本地内网用户仍可正常访问私有云存储的涉密档案
4.2 常见问题排查
- 涉密档案上传失败:检查公有云到私有云9000端口连通性,确认MinIO账号密码配置正确
- 权限校验报错:检查私有云auth-service服务状态,确认MySQL连接配置无误
- 前端访问404:执行
docker exec -it archive-web nginx -t验证Nginx配置是否存在语法错误
日常运维规则:私有云数据每天凌晨2点自动全量备份到本地外接存储,备份保留周期30天;每季度开展1次公私云切换演练,确保私有云断网时本地业务可正常运行。