Nacos 2.0 集群使用 Nginx 做代理

Nacos 集群节点配置

Nacos 2.xNacos 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

启动Nacos

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

端口偏移

Nacos 2.x 新增了 gRPC 协议的通讯端口,一般来说这不需要我们去做任何配置。
Nacos 2.x 在启动时会自动在原有端口 port 的基础上根据偏移量 10001001 再打开另外两个端口。
其中 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;
  }
}

项目配置

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

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

Nacos 2.x 相对复杂一些。我们需要用到 nginxstream 模块代理偏移之后的 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;
    }
}

项目配置

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
以下是Nacos 2.0集群详细部署方式,包含安装脚本: 1. 准备工作 - 安装 Java 环境(JDK 1.8 或以上) - 安装 MySQL 数据库(5.6.5 或以上) 2. 下载 Nacos 从官网下载最新版本的 Nacos Server(https://github.com/alibaba/nacos/releases),解压后进入 bin 目录。 3. 创建数据库 使用 MySQL 命令行或者 MySQL 客户端工具创建一个新的数据库及用户,并授权该用户访问该数据库的所有权限。例如: ``` CREATE DATABASE nacos DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; CREATE USER 'nacos'@'%' IDENTIFIED BY 'nacos'; GRANT ALL PRIVILEGES ON nacos.* TO 'nacos'@'%'; FLUSH PRIVILEGES; ``` 4. 修改配置 进入 Nacos Server 的 conf 目录,复制 cluster.conf.example 文件为 cluster.conf,并修改其中的数据库连接信息及其他配置参数。 ``` db.num=1 db.url.0=jdbc:mysql://localhost:3306/nacos?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&serverTimezone=Asia/Shanghai db.user=nacos db.password=nacos ``` 5. 启动 Nacos Server 在 bin 目录下执行启动脚本: - Linux/Mac:sh startup.sh -m standalone 或者 sh startup.sh -m cluster - Windows:cmd startup.cmd -m standalone 或者 cmd startup.cmd -m cluster 其中,-m 参数指定 Nacos Server 的启动模式,standalone 为单机模式,cluster 为集群模式。 6. 部署 Nacos 集群 在不同的服务器上分别部署 Nacos Server,并将它们加入到同一个集群中。 (1)修改配置 将各个服务器上的 cluster.conf 文件修改为如下格式: ``` 192.168.1.1:8848 192.168.1.2:8848 192.168.1.3:8848 ``` 其中,每行一个服务器的 IP 地址及端口号。 (2)启动 Nacos Server 在各个服务器上分别执行启动脚本,启动 Nacos Server。 (3)检查集群状态 在任意一台服务器上执行命令: ``` curl -X GET http://localhost:8848/nacos/v1/ns/operator/raft/peer ``` 如果返回的结果中包含了所有服务器的 IP 地址及端口号,则表示集群已经成功组建。 参考脚本: - 单机部署脚本:https://github.com/nacos-group/nacos-docker/blob/master/nacos-server-standalone/startup.sh - 集群部署脚本:https://github.com/nacos-group/nacos-docker/blob/master/nacos-server-cluster/startup.sh
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mingvvv

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值