阿里云ECS搭建springboot微服务集群?

在阿里云 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
  • 便于排查跨服务调用问题

🧪 七、测试验证

  1. 单机测试:本地运行所有服务,确认功能正常
  2. 集群测试:
    • 启动多个微服务实例
    • 通过 SLB 访问,验证负载均衡生效
    • 模拟某节点宕机,验证其他节点接管
  3. 压力测试:使用 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 » 阿里云ECS搭建springboot微服务集群?