本地服务架构设计
一.前提概要
由于云服务器配置价格昂贵,且测试服环境不需要太大的带宽适配用户,那么把测试环境和开发环境放在本地服务器部署,可以节省大量的费用,增加本地云服务器部署,主要增对测试和开发内网使用,通过阿里云vps内网穿透对外少量用户开放使用。
目的:下云,且更便宜的本地服务器配置,省钱,有更高的操作空间
缺点:需要人手去维护
二.本地服务器配置
基础配置:
2台下面 minipc配置 2650*2=5300元
组件 | 型号 | 价格 | 购买渠道 | 配置 |
---|---|---|---|---|
准系统 | 极摩客M6 (R5-6600H) | ¥1300(1288) | 京东 | 6核12线程 |
内存 | DDR5 32GBx2(笔记本内存条) | ¥1000~1100 | 京东 | 64g |
SSD | ssd 1TB | ¥350~400 | 京东 | ssd 1TB |
总价 | ¥2650~2800 |
1台下面 minipc配置 2000*1=2000元
组件 | 型号 | 价格 | 购买渠道 | 配置 |
---|---|---|---|---|
准系统 | 极摩客M6 (R5-6600H) | ¥1300(1288) | 京东 | 6核12线程 |
内存 | DDR5 32GBx1(笔记本内存条) | ¥500 | 京东 | 32g |
SSD | ssd 500gb | ¥200 | 京东 | ssd 500g |
总价 | ¥2000 |
总配置:
18核36线程160G内存2.5TSSD 的服务器,总价约7300元
使用时长预估:5~7年
三.架构设计
3.1测试服环境架构图(本地物理服务+阿里云)
3.2关键设计
1.全内网闭环:代码仓库、CI/CD工具链均部署在内网,保障开发过程安全性
2.灰度策略:通过Harbor镜像版本控制实现渐进式发布
3.环境隔离:DEV/TEST环境通过K8s Namespace隔离
4.外网接入层:CDN加速静态资源,防火墙实现DDoS防护和WAF
5.穿透机制:FRP用于将公网流量安全引入内网物理服务器集群
6.统一入口:内外网流量最终汇聚到Spring Cloud Gateway实现路由鉴权
7.存储备份:存储对象minio备份集群配置和日志备份
8.监控告警:通过Prometheus对监控数据收集和管理,通过Grafana使数据可视化,并提供告警功能
3.3POD集群组成
核心组件说明:
1. Nacos:服务注册发现+配置中心,实现动态扩缩容
2. 日志体系:Filebeat采集容器日志 -> ES存储 -> Kibana可视化
3. 消息队列:RabbitMQ实现异步解耦(订单/通知)
4. 监控告警:Prometheus和Grafana 实现监控告警
5. 数据分层:
热数据:Redis缓存(秒杀/会话)
结构化数据:MySQL(交易/用户)
非结构化数据:MongoDB(日志/文件元数据)
3.4高可用设计
1.数据库集群:MySQL主从复制+Redis +MongoDB副本集
2.ES集群:3节点分片+1专用协调节点
3.服务熔断:Spring Cloud Gateway集成Sentinel限流降级
4.存储分离:MinIO对象存储与业务POD物理隔离
3.5网络拓扑
3.5.1内网用户访问路径
Client → SpringBoot Cloud Gateway → 业务服务
3.5.2外网用户访问路径
Client → CDN → 阿里云防火墙 → 阿里云VPS(Nginx) → frp内网穿透 → SpringBoot Cloud Gateway → 业务服务
四.K8S架构外围安全保护措施
4.1示意图
4.2服务器访问控制
跳板机访问:所有对服务器的远程访问均需通过跳板机进行。跳板机采用自建VPN+SSH访问方式,或者通过堡垒机账号密码+多因素认证(MFA)访问,确保访问过程的安全性。
办公室访问:仅限于办公室内网访问,避免外部直接访问带来的安全风险。
4.3 SSH端口防火墙设置
SSH端口设置为内网访问,仅允许内部网络中的合法用户进行访问。
仅暴露必要的对外访问端口,并严格监控和限制这些端口的访问权限。
4.4 K8S集群访问控制
K8S集群采用阿里云IDaaS登录访问,通过阿里云VPS的FRP服务端内网穿透到物理服务器的FRP客户端,实现安全访问。
利用Rancher多云容器管理平台进行K8S集群的管理和访问,提高管理效率和安全性。
4.5.远程连接到物理系统的安全措施
若存在远程连接到物理系统的需求,将采用多因素认证方式,确保连接过程的安全性,服务器部署有防火墙,用于拦截和过滤非法的网络访问。
防火墙规则:
禁止所有未经授权的外部访问。
允许内部网络中的合法用户通过特定端口进行访问。
对所有对外暴露的端口进行严格的访问控制和监控。
定期审查和更新防火墙规则,确保规则的有效性和安全性。
五.K8S访问控制
5.1角色权限设计
角色名称 | 权限范围 |
开发人员 | - 项目配置(测试环境) - 查看指定Namespace日志 |
运维工程师 | - 节点SSH访问 - Pod生命周期管理 |
审计员 | - 只读所有资源 |
部门经理 | - 读写所有资源 |
产品经理 | - 访问认证管理 |
5.2相关访问管理示意图
5.2.1身份认证入口:
位置:顶层,表示所有访问的起点。
内容:集成IDaas等认证方式,由产品经理配置。
连接:指向产品经理角色,表示认证策略的管理职责。
5.2.2角色与权限分配:
产品经理:管理RBAC策略,定义各角色权限。
部门经理:作为仲裁者,处理策略冲突并审批紧急变更。
开发/运维/审计员:通过RBAC策略引擎获得对应权限。
5.2.3操作与流程:
开发人员:通过修改K8s配置,手动触发CI/CD流水线。
运维工程师:提交防火墙规则变更计划,需部门经理审批后实施。
审计员:独立查看审计日志,无写入权限。