当前位置: 首页 > news >正文

高可用微服务架构实战:Nacos集群+Nginx负载均衡,Spring Cloud无缝对接

"当你的注册中心挂了,整个微服务就变成了无头苍蝇。" 这是我在生产环境踩坑后最痛的领悟。今天,我将分享如何用Nacos集群+Nginx搭建坚如磐石的注册中心,让你的微服务永不迷路!

在 Windows 环境下配置 Nacos 集群,核心步骤与 Linux 类似,主要是配置持久化数据库(推荐 MySQL)、设置集群节点列表、修改配置文件并分别启动各个 Nacos 实例。

为什么你的微服务需要这个方案?

在分布式系统中,注册中心就是微服务的地图导航。一旦它宕机:

  • 服务发现机制崩溃 😱

  • 配置更新全面停滞 ⚠️

  • 整个系统陷入瘫痪 💥

传统单点部署的Nacos就像走钢丝,而我们的方案提供:

  • ✅ 99.99%高可用性 - 集群自动故障转移

  • ✅ 动态扩展能力 - 随时添加新节点

  • ✅ 零感知升级 - 逐个节点滚动更新

  • ✅ 智能流量分配 - Nginx负载均衡策略

前置准备

  1. 安装 JDK 8+

    • 下载 Oracle JDK 或 OpenJDK

    • 安装并配置环境变量:

      • JAVA_HOME = JDK 安装路径(如 C:\Program Files\Java\jdk-17

      • 在 Path 中添加 %JAVA_HOME%\bin

    • 验证:打开 CMD,执行 java -version,输出版本信息即成功。

  2. 下载 Nacos Server

    • 访问 Nacos GitHub Releases

    • 下载最新稳定版 nacos-server-x.x.x.zip(如 nacos-server-2.2.3.zip

    • 解压到 三个独立目录(模拟三节点集群):

      • D:\nacos-cluster\node1

      • D:\nacos-cluster\node2

      • D:\nacos-cluster\node3

  3. 安装 MySQL 数据库

    • 下载 MySQL Installer

    • 安装 MySQL Server 5.7+(推荐 8.0)

    • 记住设置的 root 密码

    • 创建 Nacos 专用数据库

      CREATE DATABASE nacos_config CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    • 执行初始化脚本

      • 找到 Nacos 目录下的 conf/nacos-mysql.sql

      • 在 MySQL 命令行或工具中执行:

        mysql -u root -p nacos_config < D:\nacos-cluster\node1\conf\nacos-mysql.sql

配置 Nacos 集群节点

1. 配置数据库连接(每个节点)
  • 打开 node1/conf/application.properties

  • 修改以下配置(取消注释并填写真实信息):

# 启用 MySQL 数据源
spring.datasource.platform=mysql# 数据库数量(单库填1)
db.num=1# 数据库连接(重点修改以下三行!)
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=your_mysql_password  # 替换为你的密码
  • 重复操作:对 node2node3 的 application.properties 做相同修改。

2. 配置集群节点列表(每个节点)
  • 在 node1/conf/ 目录下 新建文件 cluster.conf(若存在则编辑)

  • 添加以下内容(单机模拟需用不同端口,生产环境用不同IP):

  • # 格式:真实IP:端口(同一机器必须不同端口)
    127.0.0.1:8848
    127.0.0.1:8849
    127.0.0.1:8850
  • 复制文件:将 cluster.conf 复制到 node2/conf/ 和 node3/conf/ 目录(确保三节点内容完全一致)。

3. 修改节点端口(单机模拟必做)
  • Node1 端口
    打开 node1/conf/application.properties,修改:

    server.port=8848
  • Node2 端口
    打开 node2/conf/application.properties,修改:

    server.port=8849
  • Node3 端口
    打开 node3/conf/application.properties,修改:

    server.port=8850

    启动 Nacos 集群

    1. 启动命令(每个节点独立窗口)
  • Node1 启动

    cd D:\nacos-cluster\node1\bin startup.cmd -m cluster
  • Node2 启动

    cd D:\nacos-cluster\node2\bin
    startup.cmd -m cluster
  • Node3 启动

    cd D:\nacos-cluster\node3\bin
    startup.cmd -m cluster
2. 验证启动日志
  • 观察每个 CMD 窗口输出:

    • 出现 Nacos started successfully in cluster mode 表示启动成功。

 访问Nacos

1. 安装 Nginx
  1. 下载 Windows 版 Nginx: nginx.org/en/download.html

  2. 解压到目录(如 D:\nginx

  3. 验证安装:CMD 执行 D:\nginx\nginx.exe,访问 http://localhost 看到欢迎页

2. 配置 Nginx 负载均衡

编辑 D:\nginx\conf\nginx.conf,在 http {} 块内添加: 

# 配置 Nacos 集群负载均衡
upstream nacos-cluster {# 负载均衡策略(可选:weight轮询/IP_hash/least_conn)least_conn;  # 使用最少连接数策略# Nacos 集群节点(IP:端口)server 127.0.0.1:8848 max_fails=3 fail_timeout=30s; # 节点1server 127.0.0.1:8849 max_fails=3 fail_timeout=30s; # 节点2server 127.0.0.1:8850 max_fails=3 fail_timeout=30s; # 节点3# 健康检查(需安装额外模块,或使用商业版)# keepalive 32;  # 保持连接数
}server {listen       80;       # 监听端口server_name  nacos.lb; # 域名(本地需配hosts)# Nacos API 路由location / {proxy_pass http://nacos-cluster; # 指向上游proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;# 重要:超时设置proxy_connect_timeout 5s;proxy_read_timeout 60s;proxy_send_timeout 30s;}# Nacos 控制台路由location /nacos/ {proxy_pass http://nacos-cluster/nacos/;# 保持相同配置...}
}
3. 本地域名解析(可选)

编辑 C:\Windows\System32\drivers\etc\hosts 添加:

127.0.0.1 nacos.lb
4. 启动 Nginx

cd D:\nginx
nginx.exe -t         # 验证配置
nginx.exe -s reload  # 重新加载配置
5. 验证负载均衡

访问 http://nacos.lb/nacos 应能轮询访问到不同 Nacos 节点(查看节点列表中的访问 IP)

二、Spring Cloud 配置通过 Nginx 访问 

1. 修改 Spring Cloud 配置文件

在 application.yml 或 bootstrap.yml 中配置:

spring:cloud:nacos:# 统一使用 Nginx 入口地址discovery:server-addr: nacos.lb:80  # 服务发现地址config:server-addr: nacos.lb:80  # 配置中心地址file-extension: yaml      # 配置文件格式# 高级配置(可选)username: nacospassword: nacosnamespace: public           # 命名空间group: DEFAULT_GROUP        # 配置组

2. 关键参数说明
参数说明
server-addrNginx 地址(域名/IP + 端口)
file-extension配置文件后缀(yaml/properties)
namespace对应 Nacos 的命名空间 ID
group配置分组名
3. 添加 Maven 依赖

确保包含最新 Nacos 客户端:

<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId><version>2022.0.0.0</version>
</dependency>
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId><version>2022.0.0.0</version>
</dependency>

三、全流程验证

1. 启动顺序

  1. 启动 MySQL 数据库

  2. 启动 Nacos 集群(三个节点)

  3. 启动 Nginx

  4. 启动 Spring Cloud 应用

http://www.dtcms.com/a/315983.html

相关文章:

  • qt窗口--01
  • 2025金九银十Java后端面试攻略
  • MoonBit 月兔 - 云和边缘计算 AI云原生编程语言及开发平台
  • 【51单片机 用定时器计时,按键控制LED灯亮(按键按下多少秒,亮几个LED灯,按键松开,LED保持)】2022-10-18
  • Linux驱动24 --- RkMedia 视频 API 使用
  • 基于 Spring Boot 的小区人脸识别与出入记录管理系统实现
  • Bean 标签有哪些属性
  • CPU内存管理:MMU SMMU
  • 【arXiv2025】计算机视觉|即插即用|LWGA:即插即用!LWGA模块,视觉性能炸裂!
  • 深圳AI大会前瞻:千企集结,“模驱具身”加速AI硬件革命
  • PAT 1039 Course List for Student
  • 注意点:Git 从安装到分支协作、冲突解决的完整步骤 ---待修改,没看这个步骤,需要重新整理步骤
  • Orange的运维学习日记--28.Linux逻辑卷详解
  • MATLAB实现的基于压缩感知的图像处理
  • 分布式选举算法:Bully、Raft、ZAB
  • Spring Boot与Redis连接池配置终极指南:从版本差异到生产实践
  • 【Mysql】业务视角下,SQL字段处理专题
  • VR眼动追踪技术帮助医生更快速确认大脑神经损伤与疾病
  • MySQL索引底层原理与性能优化实践
  • JavaScript性能优化实战:从核心指标分析
  • “命令行过长“?一键解决 IntelliJ IDEA 中 Java/Spring Boot 启动失败问题
  • 武汉火影数字:VR大空间在文旅产业的创新应用
  • 7、Redis队列Stream和单线程及多线程模型
  • 二手房翻新时怎样装修省钱?
  • STM32H7+FreeRTOS+LwIP移植EtherCAT开源主站SOEM
  • 【AI论文】iLRM:一种迭代式大型3D重建模型
  • 3D 材质与纹理:让虚拟模型 “以假乱真” 的核心密码
  • Linux内核C语言代码规范
  • 解决IntelliJ IDEA 项目名称后带中括号问题(模块名不一致)
  • OpenGL状态机与对象管理:优化图形渲染的高效方法