• 搭建Nacos集群


    nacos的默认端口是8848,但是他还占用了另外两个接口:98489849因此,在单机配置集群时,不可使用三个连续的端口,否则会导致 gRPC端口冲突。

    端口与主端口(8848)偏移量作用
    98481000客户端gRPC请求服务端口,用户客户端向服务端发起连接和请求
    98491001服务端gRPC请求服务端口,用于服务间同步等

    服务搭建

    构建nacos需要有三个及以上的节点组成集群。使用以下三个nacos构建集群:

    198.87.156.84:9100
    198.87.156.84:9200
    198.87.156.84:9300
    
    • 1
    • 2
    • 3

    对于每个nacos:

    1. cluster.conf.example 修改为 cluster.conf,并修改为:
    #2022-12-06T08:36:26.367
    198.87.156.84:9100
    198.87.156.84:9200
    198.87.156.84:9300
    
    • 1
    • 2
    • 3
    • 4
    1. 配置 application.properties 文件:
    ### 默认端口
    server.port=9300
    
    ### 配置数据源类型
    spring.datasource.platform=mysql
    
    ### 数据库集群中的节点数量
    db.num=1
    
    ### 数据源信息
    db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
    db.user.0=root
    db.password.0=123456
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    1. 复制 conf/mysql-schema.sql 文件,新建一个nacos的数据库,并执行该sql脚本。(不要复制网络上的脚本,可能会版本不一致导致字段缺失)

    2. 启动服务

    startup.cmd

    启动成功后可以看到:

    使用Nginx反向代理

    从客户端的角度,每个nacos都提供了两个端口供使用,默认是8848和9848。nacos2.0使用的gRPC端口使用的是9848端口,因此,对于这两个端口,我们需要分别做代理。这里提供已经配置好的nginx.conf,可直接复制使用。

    #user  nobody;
    worker_processes  1;
    
    events {
        worker_connections  1024;
    }
    
    # 提供给gRPC使用的端口
    stream{
        upstream nacos-cluster-grpc {
            server 127.0.0.1:10100;
            server 127.0.0.1:10200;
            server 127.0.0.1:10300;
        }
        
        server {
            listen 9848;
            proxy_pass nacos-cluster-grpc;
        }
    }
    
    
    http {
        include       mime.types;
        default_type  application/octet-stream;
        sendfile        on;
        keepalive_timeout  65;
    
        # nacos的主端口,可以直接在浏览器访问
        upstream nacos-cluster {
            server 127.0.0.1:9100;
            server 127.0.0.1:9200;
            server 127.0.0.1:9300;
        }
        
        server{
            listen       8848;
            server_name  localhost;
            location /nacos {
              #root   html;
              #index  index.html index.htm;
              proxy_pass http://nacos-cluster;
            }
        }
    }
    
    • 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
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45

    Java连接nacos集群

    在yml文件中添加如下配置即可:

    spring:
      profiles:
        active: test
      cloud:
        nacos:
          server-addr: 127.0.0.1:8848
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    但是nginx中配置了两个端口,我们要写入哪个呢。注意到我们在访问单个节点时,并没有区分所谓的gRPC端口和主端口,因为我们在代码中填写的是主端口,而客户端会自动添加上gRPC的偏移量,然后去访问 主端口 + 1000 的端口。因此,对于代理后的端口88489848,我们需要填入8848

    其实只配置一个 9848 就已经可以使用,当然java中依然要填写 8848

    端口被占用

    这是因为nacos开辟了额外的端口用于gRPC,所以不要使用连续的三个端口

    com.alibaba.nacos.api.exception.NacosException: Client not connected, current status:STARTING

    这是因为2.0的客户端会默认访问 主端口 + 1000 的gRPC端口,所以nginx中需要配置好gRPC端口

  • 相关阅读:
    window系统安装 NodeJS
    【云原生之Docker实战】使用Docker部署Piwigo图片管理服务器
    Two Permutations
    02 kafka 记录的获取
    Word转PDF怎么转?学会这个方法,一键轻松搞定
    2013年-2018年上市公司审计数据
    C进阶 - 指针进阶
    MogaFX—美元正在升值吗?价格什么时候下跌?
    LLVM Data Layout
    golang roadrunner中文文档(一)基础介绍
  • 原文地址:https://blog.csdn.net/twilight_karl/article/details/128199791