Spring Cloud 分布式服务部署实战:从 0 到 1 实现微服务上线
在微服务开发中,我们习惯在本地 IDE 运行服务,但真正上线必须经过分布式多服务器部署。这篇文章基于 Spring Cloud 实战,手把手带你完成 MySQL、Nacos、网关、商品服务、订单服务的分布式部署,可直接用于学习与生产环境参考。
一、部署前规划
本次部署采用4 台 Linux 服务器(CentOS/Ubuntu 均可),服务拆分如下:
| 服务器 | 部署内容 |
|---|---|
| 服务器 1 | MySQL + Nacos |
| 服务器 2 | 商品服务实例 1、订单服务实例 1 |
| 服务器 3 | 商品服务实例 2、订单服务实例 2 |
| 服务器 4 | 网关服务(Gateway) |
核心原则
-
MySQL、Nacos、网关:单例部署(学习环境简化)
-
商品服务、订单服务:多实例部署(实现负载均衡)
-
最少 1 台服务器可演示,建议 3 台以上效果最佳
二、MySQL 部署与远程授权
微服务必须依赖统一数据库,MySQL 需开启远程访问。
1. 安装与初始化
先完成 MySQL 安装与项目库表初始化,这里不再赘述。
2. 创建远程用户并授权
sql
-- 创建用户
CREATE USER 'bite'@'%' IDENTIFIED BY 'BITE@yyds.666';
-- 授权所有库所有表,允许任意IP访问
GRANT ALL ON *.* TO 'bite'@'%';
-- 刷新权限
FLUSH PRIVILEGES;
3. 修改绑定地址
bash
# 编辑配置
vim /etc/mysql/mysql.conf.d/mysqld.cnf
将
Plain
bind-address = 127.0.0.1
改为
Plain
bind-address = 0.0.0.0
4. 重启与开放端口
bash
sudo systemctl restart mysql
# 开放 3306 端口
5. 远程连接测试
bash
mysql -h[服务器IP] -P3306 -ubite -pBITE@yyds.666
出现 MySQL 命令行即成功。
三、Nacos 注册中心部署
Nacos 是微服务的注册中心 + 配置中心,所有服务必须注册到同一 Nacos。
-
先安装 JDK(建议 1.8+ 或 17)
-
下载、解压、启动 Nacos
-
访问:
http://\[IP\]:8848/nacos -
确保所有服务能连通此 Nacos
注意:服务器防火墙必须开放 8848 端口。
四、商品服务 & 订单服务(多实例部署)
商品、订单服务步骤完全一致,这里统一说明。
1. 环境准备
-
安装 JDK 17
-
上传打好的 Jar 包:
-
product-service-1.0-SNAPSHOT.jar
-
order-service-1.0-SNAPSHOT.jar
-
2. 后台启动(关键)
跨服务器部署时,必须指定注册 IP,否则 Nacos 会注册内网 IP 导致调用失败。
bash
# 启动商品服务
nohup java -jar product-service-1.0-SNAPSHOT.jar \
--spring.cloud.nacos.discovery.ip=[当前服务器外网IP] \
> logs/product.log &
# 启动订单服务
nohup java -jar order-service-1.0-SNAPSHOT.jar \
--spring.cloud.nacos.discovery.ip=[当前服务器外网IP] \
> logs/order.log &
3. 开放端口
-
商品服务:默认 10030
-
订单服务:默认 10040
4. 接口测试
Plain
# 商品
http://[IP]:10030/product/1001
# 订单
http://[IP]:10040/order/1
返回 JSON 数据即部署成功。
五、网关服务(Gateway)部署
网关统一入口、路由转发、负载均衡。
1. 上传 Jar 包
gateway-1.0-SNAPSHOT.jar
2. 后台启动
bash
nohup java -jar gateway-1.0-SNAPSHOT.jar \
--server.port=8080 \
> logs/gateway.log &
3. 开放 8080 端口
4. 网关路由测试
Plain
# 商品(网关转发)
http://[网关IP]:8080/product/1001
# 订单(网关转发)
http://[网关IP]:8080/order/1
能正常访问说明网关 + 服务发现 + 负载均衡全部生效。
六、部署成功的关键要点
-
MySQL 必须授权远程访问
-
Nacos 必须所有服务器互通
-
微服务跨公网部署:必须指定 spring.cloud.nacos.discovery.ip
-
服务器防火墙 / 安全组:开放 3306、8848、8080、10030、10040
-
使用 nohup 后台运行,日志输出便于排查
七、总结
这套流程是标准 Spring Cloud 分布式上线模板:
-
注册中心统一管理
-
数据服务统一存储
-
网关统一入口
-
核心服务多实例扩容
按照本文步骤,你可以快速把本地微服务搬到多服务器分布式环境,为高可用、负载均衡、熔断降级打下基础。