Nginx + Nacos2.x(集群)部署防踩坑指南

最近学习Nacos,目前很多教程都是基于Nacos1.x版本的,但其实Nacos2.x对比1.x变化较大,导致很多操作如果还是照着教程就会出错。这里总结一下。

Nacos2.x的变化

Nacos2.x最主要的变化就是新增了几个端口

一个是Nacos主端口+1000(比如9848),该端口用于客户端gRPC请求服务端,另外两个分别是主端口+1001和-1000,都是用于服务端之间的请求

详细参考官方文档:Nacos 2.0.0 兼容性文档

需要注意的点

根据上面的点,总共有这么几个需要注意的点。

  • Nacos服务端部署时,端口至少大于1000
  • Nacos集群部署时,假设是在同一网段内,端口不能连续。

    比如在本机连续部署三个Nacos服务端, 端口不能为8848、8849、8850,因为服务端需要额外开启两个端口。比如第一个Nacos服务器端口为8848,它将还会占用7848和8849,这将导致第二个Nacos服务端无法启动因为8849被占用。

  • 如果是要做VIP/Nginx的话,Nginx还要额外监听源端口+1000,因为客户端还需要源端口+1000用于与服务端进行gRPC请求。下面会给出详细的Nginx配置。

关于Nginx配置

假设我们现在有三个Nacos服务器,端口分别为8810、8820、8830,准备建立集群。然后希望使用Nginx做统一的转发,Nginx负责监听80端口,那么我们不仅要监听80端口,还要监听1080端口。另外根据上面给出的官方文档提到的,用于进行gRPC请求的端口应该进行TCP转发,不能使用HTTP2转发

这一点其实也决定了无法使用Spring Cloud Gateway去做端口转发了,因为其只能做HTTP转发。

需要注意的是,Nginx做TCP转发的话,需要将版本升级到1.9.0以上。

下载链接:http://nginx.org/download/

http{
    upstream nacos-cluster {
        server localhost:8810;
        server localhost:8820;
        server localhost:8830;
    }
    server{
        listen 80;
        location / {
            proxy_pass http://nacos-cluster;
        }
    }
}
# stream块用于做TCP转发
stream{
    upstream nacos-cluster {
        server localhost:9810;
        server localhost:9820;
        server localhost:9830;
    }
    server{
        listen 1080;
        proxy_connect_timeout 20s;
        proxy_timeout 5m;
        proxy_pass nacos-cluster;
    }
}

你可能感兴趣的:(nginx,服务器,运维,spring,cloud)