码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Nacos 2.0 集群使用 Nginx 做代理


    文章目录

      • Nacos 集群节点配置
        • application.properties
        • cluster.conf
        • 启动Nacos
        • 端口偏移
        • 版本兼容
      • Spingcloud Alibaba Nacos 组件版本对应关系
      • Nacos 1.x 客户端实现 Nginx 代理配置
        • Nginx 配置
        • 项目配置
      • Nacos 2.x 客户端实现 Nginx 代理配置
        • Nginx 配置
        • 项目配置

    Nacos 集群节点配置

    Nacos 2.x 和 Nacos 1.x 在节点配置的方式上是一样的,基本上没什么区别。

    application.properties

    Nacos 集群的 application 配置和单节点模式的 application 配置方式是一样的,简单配置一下端口和数据库链接就 OK 了
    nacos 配置

    cluster.conf

    Nacos 启动集群模式时,要配置一下 cluster.conf 文件。如下,最好使用真实的 IP 地址,否则可能会出问题。

    #2022-10-08T16:12:31.902944700
    192.168.10.A:8848
    192.168.10.B:8848
    192.168.10.C:8848
    
    • 1
    • 2
    • 3
    • 4

    启动Nacos

    如果是 windows 系统使用 startup.cmd 文件启动时,先查看一下文件内的启动模式是不是 cluster
    在这里插入图片描述
    或者使用命令行启动时添加启动参数:
    startup -m cluster

    端口偏移

    Nacos 2.x 新增了 gRPC 协议的通讯端口,一般来说这不需要我们去做任何配置。
    Nacos 2.x 在启动时会自动在原有端口 port 的基础上根据偏移量 1000 和 1001 再打开另外两个端口。
    其中 port + 1000 的端口用于客户端与服务端之间通信
    port + 1001 的端口用于集群服务端之间同步

    版本兼容

    1.x 的客户端可以连接 2.x 的服务端,但是 2.x 的客户端不能连接 1.x 服务端

    因为 1.x 的客户端通过基础端口 port 使用 UDP 协议链接服务端,而 2.x 的客户端是通过 port + 1000 端口使用 gRPC 协议链接服务端。1.x 的服务端不会开启 port + 1000 这个端口。

    Spingcloud Alibaba Nacos 组件版本对应关系

    官方链接
    在这里插入图片描述

    Nacos 1.x 客户端实现 Nginx 代理配置

    如果使用的 Spring Cloud Alibaba 版本中的 Nacos 组件是 1.x 版本的。配置比较简单,如下。

    Nginx 配置

    upstream nacos-cluster{
    	server 192.168.10.A:8848;
    	server 192.168.10.B:8848;
    	server 192.168.10.C:8848;
    }
    server{
      listen 8002;
      server_name localhost;
      location /nacos {
        proxy_pass http://nacos-cluster;
      }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    项目配置

    server:
      port: 8090
    spring:
      application:
        name: gateway-service
      cloud:
        nacos:
          config:
            server-addr: nginx_host:8002
            file-extension: yaml
            namespace: public
            username: nacos
            password: nacos
          discovery:
            namespace: public
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    Nacos 2.x 客户端实现 Nginx 代理配置

    Nacos 2.x 相对复杂一些。我们需要用到 nginx 的 stream 模块代理偏移之后的 gRPC 协议的端口。
    stream 模块和 http 模块同级

    有个地方需要注意一下,如果没开启用户名密码的话,只代理偏移之后的端口即可,如果你开启了 Nacos 用户名登录认证,虽然 Nacos 2.x 的客户端链接服务端请求数据时使用的是偏移之后的端口,但是他登陆认证时请求的端口却是没有偏移的端口。。。不知道是不是和 Nacos 客户端版本有关系,所以我们最好还是把这两组端口都代理一下。

    Nginx 配置

    http {
    	upstream nacos-cluster{
    		server 192.168.10.A:8848;
    		server 192.168.10.B:8848;
    		server 192.168.10.C:8848;
    	}
    	server{
    	  listen 8002;
    	  server_name localhost;
    	  location /nacos {
    	    proxy_pass http://nacos-cluster;
    	  }
    	}
    }
    stream {
        upstream nacosGrpc {
            server 192.168.10.A:9848; //这里配置的是偏移之后的端口
    		server 192.168.10.B:9848; //这里配置的是偏移之后的端口
    		server 192.168.10.C:9848; //这里配置的是偏移之后的端口
        }
        server {
            listen 9002; //nginx监听偏移1000的端口,因为nacos客户端会链接 8002+1000 这个端口,代理的是nacos服务端偏移后的端口
            proxy_pass nacosGrpc;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    项目配置

    spring:
      application:
        name: gateway-service
      cloud:
        nacos:
          config:
            server-addr: nginx_host:8002
            file-extension: yaml
            namespace: public
            username: nacos
            password: nacos
          discovery:
            namespace: public
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
  • 相关阅读:
    Linux高级IO ------ poll ,epoll(重要)
    架构基本概念和架构本质
    【Docker】ubuntu20.04 X86机器搭建NVIDIA ARM64 TX2的Docker镜像
    计算机网络-传输层(TCP协议特点和TCP报文段格式,TCP连接管理)
    LeetCode 2652. 倍数求和【数学,容斥原理】简单
    可视化学习:使用WebGL绘制圆形,实现色盘
    vue-router(基本使用、路由重定向、多级路由、路由命名、路由的query和params参数、路由的props配置)(十一)
    Android——m3u8视频文件下载
    编辑任何场景! 3DitScene:通过语言引导的解耦 Gaussian Splatting开源来袭!
    mysql基本语句学习(基本)
  • 原文地址:https://blog.csdn.net/qq_40096897/article/details/127229294
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号