我们来学nacos -- 切换UAT,搭建集群nacos

搭建集群nacos

题记

  • 在连续两个月的加班工作强度下,项目开发进度完成60%
  • 着手准备UAT环境,推送可测试模块
  • 此时甲方IT要求,nacos要部署集群,问你需要多少台服务器
  • 稍作思考,回复:三台即可,和业务服务器复用
  • 白日任务缠身忙,夜间无人话凄凉
  • 借这夜色,这月光"厂"景,开干...

大话Nacos

  • 长夜漫漫,想必很多人无心睡眠,有朋促膝长谈,亦不乐乎!
  • 从CAP定理角度来看nacos提供的两项服务:配置管理、服务发现
  • Eric Brewer大叔说:在网络分区(P)不可避免的前提下,一致性(C)和可用性(A)只能二选一
    • 网络分区,也就是分布式环境
  • 开过大货车的都知道,不像私家车,货车每侧有较多的轮子
  • 在货车平衡性测试中,未安装所有轮子的场景下,货车仍然可行驶:是可用性
  • 在货物运输中,为了货物和他人安全,安装上所有车轮,上路才安全:是一致性
  • Nacos的两项服务同样对应这两个场景
    • 针对服务发现 ,需要可用性 ,业务服务α注册到节点C,还未同步到B、D、F节点,每个节点正常对外提供发现服务,不等待同步完成
      • 1、节点A收到文件服务β注册请求,nacso不会暂停所有节点同步服务β
      • 2、如果服务‌δ需要上传附件,请求节点B,则获取不到β文件服务地址
    • 对于配置管理 ,需要一致性,修改的配置,只有在所有节点上都同步了,才允许推送到各个业务服务

安装

架构图

  • 一览架构可见是经典的负载模模型

部署图

  • 按照官方指导,设计图纸落地
  • 服务器信息
节点 ip port
nacos1 192.168.150.101 8848
nacos2 192.168.150.102 8848
nacos3 192.168.150.103 8848

安装包准备

  • 再次选择的是2.5.1版本

解压

  • 分别解压到三个服务器的指定路径

  • 解压后目录

    复制代码
    nacos/
    ├── bin/                 # 启动/停止脚本目录
    ├── conf/                # 核心配置文件目录
    ├── target/              # Nacos 服务端 JAR 包和依赖
    ├── logs/                # 运行时日志目录
    ├── data/                # 运行时数据( Derby 数据库、Raft 日志等)
    ├── plugins/             # 插件目录(3.0+版本引入)
    ├── LICENSE 和 NOTICE    # 开源协议文件
    └── README.md
  • 关注conf目录

初始化数据库

  • mysql中创建nacos数据库
  • 使用脚本mysql-schema.sql初始化数据表

配置

  • cluster.conf

    • 所有节点的 cluster.conf 内容必须完全一致,如下

    • 必须写 IP 或 hostname,不能用 127.0.0.1 或 localhost

    • 端口号必须和 application.properties 里的 server.port 一致

      ip:port

      192.168.150.101:8848
      192.168.150.102:8848
      192.168.150.103:8848

  • application.properties.example

    • 配置端口
    • 配置数据库
    • JRaft 和 Distro 协议采用默认值

集群启动

复制代码
startup.sh -m cluster(集群模式)

nginx配置

复制代码
- 避免单几点故障出现,需要手动切换其他节点地址
- 避免将节点地址暴露出来
  • HTTP代理(控制台/API)

    http {
    upstream nacos_cluster {
    server 192.168.150.101:8848 weight=1 max_fails=2 fail_timeout=10s;
    server 192.168.150.102:8848 weight=1 max_fails=2 fail_timeout=10s;
    server 192.168.150.103:8848 weight=1 max_fails=2 fail_timeout=10s;

    复制代码
          # 会话保持策略,避免控制台登录状态乱跳
          ip_hash;
      }
    
      server {
          listen 80;
          server_name nacos.example.com;
    
          location / {
              proxy_pass http://nacos_cluster;
              
              # 关键Header设置,否则Nacos控制台会出现登录异常
              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_set_header X-Forwarded-Proto $scheme;
              
              # WebSocket支持(Nacos 2.x控制台需要)
              proxy_http_version 1.1;
              proxy_set_header Upgrade $http_upgrade;
              proxy_set_header Connection "upgrade";
              
              # 超时设置
              proxy_connect_timeout 5s;
              proxy_send_timeout 60s;
              proxy_read_timeout 60s;
          }
    
          # 健康检查接口(可选,用于监控)
          location /nacos/health {
              access_log off;
              proxy_pass http://nacos_cluster;
          }
      }

    }

  • gRPC TCP代理(核心,Nacos 2.x必须)

    stream {
    upstream nacos_grpc {
    server 192.168.150.101:9848 weight=1;
    server 192.168.150.102:9848 weight=1;
    server 192.168.150.103:9848 weight=1;

    复制代码
          # gRPC长连接,不需要ip_hash
      }
    
      server {
          listen 9848;  # 监听9848端口,客户端连接此端口
          proxy_pass nacos_grpc;
          
          # TCP代理超时设置
          proxy_timeout 600s;
          proxy_connect_timeout 5s;
      }

    }

浏览器访问

相关推荐
全靠bug跑2 天前
Nacos 入门实战:部署、服务注册与发现全指南
java·spring cloud·docker·nacos
梵得儿SHI4 天前
SpringCloud - 核心组件精讲:Nacos 深度解析(服务注册 + 配置中心一站式实现)
java·spring boot·spring cloud·nacos·微服务架构的核心组件·服务注册发现与配置管理·nacos的核心原理与实战应用
刘一说9 天前
Nacos 权限控制详解:从开源版 v2.2+ 到企业级安全实践
spring boot·安全·spring cloud·微服务·nacos·架构·开源
kong790692816 天前
微服务项目开发环境
微服务·nacos·rabbitmq·开发环境
whltaoin19 天前
【 Java微服务 】Spring Cloud Alibaba :Nacos 注册中心与配置中心全攻略(含服务发现、负载均衡与动态配置)
java·微服务·nacos·springcloud·注册中心·配置中心
小坏讲微服务1 个月前
Spring Cloud Alibaba 2025.0.0 与 Nacos 3.1.0 集群整合
分布式·nacos·架构·springcloud·nacos集群·springalibaba
没有bug.的程序员1 个月前
Spring Cloud Gateway 性能优化与限流设计
java·spring boot·spring·nacos·性能优化·gateway·springcloud
小道仙971 个月前
Dubbo如何使用Nacos做注册中心的
java·nacos·dubbo·服务注册
三口吃掉你1 个月前
微服务之Nacos(注册中心、配置中心)
微服务·nacos·架构