微服务架构拆分服务器部署:微服务架构拆分后如何部署到多台服务

为什么拆分了微服务还需要单独部署?

微服务架构把单体应用拆成多个独立服务(比如用户服务、订单服务、支付服务),每个服务可以独立开发、测试和上线。
但拆分后,这些服务必须部署到不同的服务器(或容器)上才能发挥优势——否则一台机器扛不住所有服务的压力,也失去了独立扩缩容的能力。
本文就手把手教你如何把拆分后的微服务部署到多台服务器上。

前置准备:你需要的东西

  • 至少两台云服务器(推荐 2核4G 以上,系统 CentOS 7.9 或 Ubuntu 20.04)
  • 一台用于 Nginx 反向代理 + 注册中心(可选,小型项目可合并)
  • 一台用于部署业务微服务(数量按服务数增加)
  • 已拆分好的微服务代码(以 Spring Boot 项目为例)
  • 域名(可选,建议先用公网IP测试)

在正式开始前,请先在每台服务器上执行以下基础环境安装:

# 更新系统包
sudo yum update -y   # CentOS
sudo apt update && sudo apt upgrade -y   # Ubuntu

# 安装 Docker(推荐用容器隔离服务)
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo systemctl enable docker && sudo systemctl start docker

# 安装 JDK 11(非 Docker 方式部署需要)
sudo yum install java-11-openjdk -y   # CentOS

分步操作:把微服务部署到不同服务器

1. 打包并上传微服务 JAR 包

在每个 Spring Boot 微服务项目根目录执行:

mvn clean package -DskipTests

target 目录下生成 xxx.jar,用 scp 上传到对应目标服务器:

scp target/user-service.jar root@192.168.1.101:/opt/app/
scp target/order-service.jar root@192.168.1.102:/opt/app/

2. 在每台服务器上启动服务(以 Docker 为例)

进入服务器,创建 Dockerfile:

FROM openjdk:11-jre-slim
WORKDIR /app
COPY user-service.jar app.jar
EXPOSE 8080
CMD ["java", "-jar", "app.jar"]

构建并启动:

docker build -t user-service .
docker run -d --name user-service -p 8080:8080 user-service

注意:如果多个服务部署在不同服务器,端口可以相同(例如 8080),因为 IP 不同。
如果部署在同一台服务器,必须改端口。

3. 配置注册中心与发现(以 Nacos 为例)

在注册中心服务器(例如 192.168.1.100)上启动 Nacos:

docker run -d --name nacos -p 8848:8848 nacos/nacos-server

在每个微服务的 application.yml 中配置注册地址:

spring:
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.1.100:8848

重启服务,打开 http://192.168.1.100:8848/nacos 可以看到所有服务实例已注册。

4. 用 Nginx 做统一入口和负载均衡

在网关服务器(比如 192.168.1.200)安装 Nginx:

sudo yum install nginx -y   # CentOS

编辑 /etc/nginx/conf.d/microservices.conf

upstream user_servers {
    server 192.168.1.101:8080;
}
upstream order_servers {
    server 192.168.1.102:8080;
}
server {
    listen 80;
    server_name api.example.com;
    location /user/ {
        proxy_pass http://user_servers/;
        proxy_set_header Host $host;
    }
    location /order/ {
        proxy_pass http://order_servers/;
        proxy_set_header Host $host;
    }
}

测试并重载:

sudo nginx -t
sudo systemctl reload nginx

高频问题解答与避坑指南

问题1:跨服务调用失败(Feign/OpenFeign 报错)

排查步骤

  • 检查各微服务是否成功注册到 Nacos(看 Nacos 控制台)
  • 检查 服务名是否拼写正确(区分大小写)
  • 检查防火墙是否放行端口:systemctl stop firewalld(测试用)
  • 在服务提供者的服务器上用 curl http://localhost:8080/actuator/health 确认服务正常

问题2:端口冲突

同一台机器部署多个微服务时,Docker 映射宿主端口不能重复。
建议:

  • 服务 A 用 8080 → 宿主机 8080
  • 服务 B 用 8080 → 宿主机 8081

运行容器时加 -p 8081:8080

避坑提醒

  1. 配置统一管理:微服务数量增多后,建议使用配置中心(Nacos Config 或 Apollo),避免每台服务器单独修改。
  2. 健康检查:为每个服务添加 Spring Boot Actuator,并在 Nginx upstream 中配置 max_fails=2 fail_timeout=30s,自动剔除故障节点。
  3. 日志集中:使用 ELK 或 Loki 将各服务器日志收集到一起,排查问题更快。
  4. 首次部署先用内网 IP 测试连通性,确认无误后再绑定域名。

效果验证:如何确认部署成功?

  1. 调用注册中心:访问 http://Nacos服务器IP:8848/nacos,确认所有服务状态为 UP
  2. 通过 Nginx 访问:在浏览器输入 http://api.example.com/user/health,返回 {"status":"UP"}
  3. 模拟负载:使用 Apache Bench 测试并发:
ab -n 1000 -c 100 http://api.example.com/user/list

观察 Nginx 日志和 Nacos 控制台,确认请求被正确转发到多台后端服务器。

---

如果你正在处理微服务架构拆分后的服务器部署,建议先按本文步骤在你的测试环境完整过一遍,再根据实际项目调整注册中心、服务数量和域名配置。
遇到异常时,优先回顾避坑指南中的常见排查点,基本能解决 90% 的问题。

分享到:
上一篇
K8s节点扩容集群升级教程,零基础也能全流程掌握
下一篇
Serverless无服务架构应用搭建
1
系统公告

高考专属福利来袭|凭准考证免费领香港 CN2 云服务器

值高考落幕之际,泽御云开启考生专属回馈 + 产品限时特惠双重活动,助力学子暑期学习建站 高考 考生专属福利 全体应届高考生,凭高考准考证即可免费申领【香港 CN2 轻量云服务器,4 核 4G AMD 处理器】,免费使用周期 30 天,可用于搭建个人站点、编程实操、技术实训,祝各位考生金榜题名,前程似锦! 泽御云资质齐全合规自营机房,线路覆盖香港 CN2、国内 BGP、内蒙电信、美国精品线路,售后全天候技术支持。 官方网站:www.zeyuyun.com,活动限时有效,优惠逾期不再保留。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意