在阿里云上部署Spring Cloud项目需要综合考虑计算资源、网络配置、中间件服务以及高可用性等因素。以下是详细的配置指南:
1. 计算资源配置
ECS实例
- 规格选择:
- 开发/测试环境:2核4GB(如
ecs.n4.large) - 生产环境:4核8GB或更高(如
ecs.c6.xlarge),根据微服务数量和负载调整。
- 开发/测试环境:2核4GB(如
- 镜像:推荐使用Alibaba Cloud Linux 3/2(兼容CentOS)或Ubuntu 20.04 LTS。
- 数量:至少2台ECS以实现高可用,关键服务(如注册中心)建议3节点。
弹性伸缩(ESS)
- 适用场景:应对流量波动(如电商大促)。
- 配置:设置CPU利用率(如>70%触发扩容)、定时策略(如工作日高峰时段扩容)。
2. 网络与安全
专有网络(VPC)
- 子网划分:
- 按功能划分(如
10.0.1.0/24给前端服务,10.0.2.0/24给后端微服务)。
- 按功能划分(如
- 安全组:
- 最小化开放端口:如注册中心(Nacos/Eureka)开放8848、8761,Gateway开放80/443。
- 内网隔离:仅允许同VPC内服务通信,禁止公网暴露非必要端口。
SLB(负载均衡)
- 公网入口:配置HTTPS监听器,绑定SSL证书(可从阿里云免费申请)。
- 内网SLB:用于微服务间内部流量分发(如Ribbon调用)。
3. 中间件服务
注册中心
- Nacos:
- 托管版:直接使用阿里云MSE(微服务引擎),免运维。
- 自建:ECS部署时需配置集群模式(3节点+MySQL持久化)。
- Eureka:生产环境需禁用自保护模式,调整心跳时间。
配置中心
- Nacos Config:与注册中心共用Nacos,通过
bootstrap.yml指定配置。 - Spring Cloud Config:需自建Git仓库(如Codeup)或使用阿里云ACM。
消息队列
- RocketMQ:阿里云版提供全托管服务,适合异步解耦。
- Kafka:自建时需搭配ECS和云盘(建议SSD)。
数据库与缓存
- RDS MySQL:
- 生产环境建议高可用版(主备架构)。
- 连接池配置(如HikariCP:
maxPoolSize=20)。
- Redis:
- 选择社区版或Tair,启用持久化。
- 缓存雪崩防护:设置随机过期时间。
4. 存储与文件服务
- OSS:
- 存储静态资源(如图片、文档)。
- 通过SDK集成(
aliyun-sdk-oss)。
- NAS:多个ECS共享日志或配置文件(如
/var/log挂载点)。
5. 监控与运维
日志服务(SLS)
- 采集配置:
- 通过Logtail收集应用日志(如Spring Boot的
/var/log/app.log)。 - 设置日志索引(如按
level、serviceName过滤)。
- 通过Logtail收集应用日志(如Spring Boot的
- 告警:基于错误日志频率触发短信/邮件通知。
应用监控
- ARMS:
- 集成Spring Boot Actuator,监控JVM、GC、接口耗时。
- 配置自定义业务指标(如订单创建成功率)。
- Prometheus+Grafana:
- 自建时需ECS部署,暴露
/actuator/prometheus端点。
- 自建时需ECS部署,暴露
6. 部署与CI/CD
容器化部署(可选)
- ACK(Kubernetes):
- 使用
Deployment部署微服务,Service暴露内部访问。 - 配置HPA(Horizontal Pod Autoscaler)自动扩缩容。
- 使用
- 镜像仓库:阿里云ACR托管Docker镜像。
自动化流水线
- Jenkins:
- 触发器:Git代码提交(如GitLab Webhook)。
- 构建步骤:
mvn package→docker build→kubectl apply。
- 云效(阿里云DevOps):内置模板支持Java项目一键部署。
7. 安全加固
- RAM权限:
- 为运维人员分配最小权限(如仅限ECS重启、SLB配置)。
- 使用STS临时令牌替代AK/SK。
- WAF:
- 防护SQL注入、XSS攻击(尤其对Gateway暴露的API)。
- 证书管理:
- 通过阿里云SSL证书服务自动续签Let’s Encrypt证书。
8. 成本优化
- 抢占式实例:用于非核心服务(如定时任务),降低成本60%以上。
- 资源包:预先购买ECS、RDS资源包(适合长期稳定业务)。
示例配置(生产环境)
# Spring Cloud Alibaba Nacos配置
spring:
cloud:
nacos:
discovery:
server-addr: mse-xxxx.nacos.aliyuncs.com:8848
config:
file-extension: yaml
group: PROD_GROUP
# 阿里云OSS配置
aliyun:
oss:
endpoint: https://oss-cn-hangzhou.aliyuncs.com
access-key-id: ${RAM_AK}
access-key-secret: ${RAM_SK}
通过以上配置,可以构建一个高可用、易扩展的Spring Cloud生产环境。建议初期使用阿里云托管服务(如MSE、ACK)降低运维复杂度,后期根据业务需求逐步优化。
云服务器