在阿里云 ECS 上搭建 Spring Boot 微服务集群是一个系统工程,涉及基础设施、网络配置、应用部署、服务治理和运维监控等多个层面。以下是一份完整、可落地的实操指南,分为 基础架构设计 → 环境准备 → 应用部署 → 服务治理 → 高可用与监控 五大阶段。
🎯 一、整体架构设计(推荐)
[用户]
↓
[SLB 负载均衡器] ←→ [Nginx/Ingress Controller]
↓
[Web 服务器集群 (ECS)] ←→ [Spring Boot API 网关]
↓
[微服务集群 (ECS/K8s)]
├── user-service
├── order-service
├── payment-service
└── ...
↓
[中间件层]
├── Redis (缓存)
├── MySQL (主从/集群)
├── RabbitMQ/Kafka (消息队列)
└── Nacos/Eureka (注册中心 + 配置中心)
↓
[存储层]
├── OSS (对象存储)
└── RDS (关系型数据库)
✅ 建议:初期可使用 ECS + Nacos + SLB + Redis + RDS 组合;后期可迁移至 ACK(容器服务) 实现更灵活的编排。
🛠️ 二、环境准备(阿里云控制台操作)
1. 创建 VPC 网络
- 登录阿里云控制台 → VPC → 创建专有网络(建议 CIDR:
10.0.0.0/16) - 创建交换机(至少两个可用区,用于高可用)
2. 创建安全组
- 开放必要端口:
80/443(前端访问)8080~8090(微服务端口)8848(Nacos 默认端口)3306(MySQL,仅限内网)6379(Redis,仅限内网)5672/15672(RabbitMQ)
3. 购买 ECS 实例
| 角色 | 数量 | 规格建议 | 系统盘 |
|---|---|---|---|
| Nacos 注册/配置中心 | 2台(高可用) | 2C4G 或更高 | 40GB SSD |
| API 网关 | 2台 | 2C4G | 40GB SSD |
| 微服务节点 | ≥3台 | 2C4G 或更高 | 40GB SSD |
| Redis/MQ/DB | 使用云产品(推荐) | — | — |
💡 提示:建议使用同一可用区降低延迟;关键组件启用多可用区部署。
4. 配置域名与 DNS
- 购买域名并备案
- 在阿里云 DNS 解析 中添加 A 记录指向 SLB 公网 IP
5. 创建 SLB 负载均衡
- 类型:TCP 或 HTTP(根据协议选择)
- 监听规则:将流量转发到后端微服务 ECS 实例
- 健康检查:确保只分发请求给健康节点
☕ 三、Spring Boot 微服务部署步骤
1. 打包应用
mvn clean package -DskipTests
# 生成 target/*.jar
2. 上传至 ECS
使用 scp 或 rsync 上传 jar 包到各微服务节点:
scp my-service.jar root@<ECS_IP>:/opt/apps/
3. 安装 JDK & 运行服务
# SSH 登录 ECS
sudo yum install java-11-openjdk-devel -y # CentOS/RHEL
# 或 apt install openjdk-11-jdk -y # Ubuntu/Debian
# 启动服务(后台运行)
nohup java -jar /opt/apps/my-service.jar
--spring.profiles.active=prod
--server.port=8081
--nacos.server.addr=nacos-cluster.local:8848 > /var/log/my-service.log 2>&1 &
4. 编写 systemd 服务(推荐)
创建 /etc/systemd/system/my-service.service:
[Unit]
Description=My Spring Boot Service
After=network.target
[Service]
Type=simple
User=root
ExecStart=/usr/bin/java -jar /opt/apps/my-service.jar --spring.profiles.active=prod
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
启用并启动:
systemctl daemon-reload
systemctl enable my-service
systemctl start my-service
🔄 四、服务注册与发现(Nacos 示例)
1. 部署 Nacos 集群
- 下载 Nacos Server:https://github.com/alibaba/nacos/releases
- 解压后修改
conf/application.properties,配置集群模式(至少3节点) - 启动 Nacos:
sh startup.sh -m cluster
2. 微服务接入 Nacos
在 application.yml 中配置:
spring:
cloud:
nacos:
discovery:
server-addr: 10.0.0.10:8848,10.0.0.11:8848,10.0.0.12:8848
config:
server-addr: 10.0.0.10:8848,10.0.0.11:8848,10.0.0.12:8848
file-extension: yml
添加依赖(以 Spring Cloud Alibaba 为例):
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
🔁 五、高可用与弹性伸缩
1. 使用 SLB 实现负载均衡
- 将多个微服务 ECS 实例加入 SLB 后端服务器组
- 配置健康检查路径(如
/actuator/health)
2. 自动伸缩(可选)
- 使用 弹性伸缩 ESS 根据 CPU/内存负载自动增减 ECS 实例
- 结合 SLB 自动注册/注销实例
3. 数据库高可用
- 使用 RDS MySQL 高可用版(主备自动切换)
- 或使用 PolarDB(兼容 MySQL,性能更强)
4. 缓存高可用
- 使用 Redis 集群版 或 Tair
- 避免单点故障
📊 六、监控与日志
1. 应用监控
- 集成 Spring Boot Actuator 暴露健康端点
- 使用 Prometheus + Grafana 采集指标
- 或使用阿里云 ARMS(应用实时监控服务)
2. 日志收集
- 使用 Filebeat 收集日志 → 发送到 Logstash 或 SLS(日志服务)
- 在阿里云控制台查看和分析日志
3. 链路追踪(可选)
- 集成 SkyWalking 或 Zipkin
- 便于排查跨服务调用问题
🧪 七、测试验证
- 单机测试:本地运行所有服务,确认功能正常
- 集群测试:
- 启动多个微服务实例
- 通过 SLB 访问,验证负载均衡生效
- 模拟某节点宕机,验证其他节点接管
- 压力测试:使用 JMeter 或 wrk 进行压测,观察响应时间和错误率
🚀 八、进阶建议(生产环境)
| 需求 | 推荐方案 |
|---|---|
| 容器化部署 | 迁移至 ACK(Kubernetes) + Helm 管理 |
| CI/CD 自动化 | GitLab CI / Jenkins + Docker Registry |
| 配置中心加密 | Nacos 支持配置加密,或使用 KMS |
| 安全加固 | WAF 防火墙 + SSL 证书 + 最小权限 IAM |
| 成本优化 | 使用抢占式实例 + 弹性伸缩 + 预留实例券 |
✅ 总结 checklist
- [ ] VPC + 子网 + 安全组配置完成
- [ ] ECS 实例创建并绑定安全组
- [ ] SLB 负载均衡配置完毕
- [ ] Nacos 集群部署并测试连通性
- [ ] Spring Boot 应用打包、上传、启动
- [ ] 服务成功注册到 Nacos
- [ ] SLB 健康检查通过,流量分发正常
- [ ] 日志、监控、告警配置完成
- [ ] 故障恢复演练(模拟宕机)
如需,我可以提供:
- 完整的
application.yml模板 - Nacos 集群部署脚本
- Terraform 自动化部署代码
- Kubernetes 版本架构图
欢迎告诉我你当前所处的阶段,我可以进一步细化!
云知识CLOUD