Spring Cloud Alibaba--Nacos集群配置

文章目录

  • 一、Nacos持久化配置
  • 二、Nacos集群配置
  • 三、避坑指南
    • 集群端口号冲突问题
    • 内存不足,无法启动的问题

一、Nacos持久化配置

Nacos默认自带的是嵌入式数据库derby,Nacos采用了集中式存储的方式来支持集群化部署,目前只支持MySQL的存储。

为了更好的管理和配置,需要从derby迁移到mysql,操作步骤如下:

1、在Mysql数据库上新建nacos_config数据库,执行nacos\conf\mysql-schema.sql文件,生成表结构。

Spring Cloud Alibaba--Nacos集群配置_第1张图片
2、nacos\conf目录下,找到application.properties,修改配置

Spring Cloud Alibaba--Nacos集群配置_第2张图片
重新启动Nacos,新的配置记录会保存在Mysql数据库中。

二、Nacos集群配置

Nacos官方集群配置

Linux版Nacos+MySQL生产环境配置

Spring Cloud Alibaba--Nacos集群配置_第3张图片
集群架构如图所示:
Spring Cloud Alibaba--Nacos集群配置_第4张图片

第一步,先搭建三个Nacos,复制出nacos/conf下的的集群配置文件cluster.conf,

Spring Cloud Alibaba--Nacos集群配置_第5张图片
修改内容:

172.17.209.37:8846
172.17.209.37:8848
172.17.209.37:8850

第二步,启动三个不同端口的伪集群,有两种做法。

方法①是:编辑Nacos的启动脚本startup.sh,使它能够接受不同的启动端口;调用命令 ./startup.sh -p 8846./startup.sh -p 8848./startup.sh -p 8850的方式启动,:

Spring Cloud Alibaba--Nacos集群配置_第6张图片

但博主测试了Nacos 2.1.1 和 2.2.2 两个版本,都不支持此种方式。

方法②:复制nacos文件夹分别为nacos_8846、nacos_8848、nacos_8850,分别修改conf/application.properties的端口号,分别启动Nacos,测试搭建成功。如果是生产环境集群,一台服务器上部署一台nacos实例,不需要这么操作。

Spring Cloud Alibaba--Nacos集群配置_第7张图片
第三步,在安装好的nginx中,配置Nacos信息,修改nginx.conf

#gzip  on;
    upstream cluster{
       server 172.17.209.37:8846;
       server 172.17.209.37:8848;
       server 172.17.209.37:8850;
    }

    server {
        listen       1111;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
        #    root   html;
         #      index  index.html index.htm;
         proxy_pass http://cluster;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }     
    }

启动nginx,访问http://182.92.122.196:1111/nacos/index.html,成功加载。

Spring Cloud Alibaba--Nacos集群配置_第8张图片

在项目cloud-alibaba-config-nacos-client中,配置nginx信息,启动测试,可以成功获取到配置信息。

server:
  port: 6088
spring:
  application:
    name: nacos-config-client
  cloud:
    nacos:
      discovery:
        server-addr: 182.92.122.196:1111
      config:
        server-addr: 182.92.122.196:1111
        file-extension: yaml
        group: SWC_GROUP

Spring Cloud Alibaba--Nacos集群配置_第9张图片

三、避坑指南

集群端口号冲突问题

端口不能是连续的。

如果我们部署三个nacos实例,端口号分别为:8848/8849/8850,在nacos2.0以上的版本是运行不起来的,为什么呢?因为这样会导致端口冲突。

nacos2.0之后,nacos会占用四个端口,如果伪集群采用的端口是连号方式,会导致端口被占用。

nacos端口:8848-nacos默认端口;
raft协议端口:7848-raft port,即raft协议端口;
grpc协议两个端口:9848-grpc协议端口(nacos端口+1000),9849-grpc协议端口(nacos+1001)

连号的情况下,上一个端口号对应的grpc协议的端口之一(+1001)就会和下一个端口号对应的grpc协议(+1000)端口冲突。

内存不足,无法启动的问题

如果服务器内存比较小的话,启动nacos实例的时候可能会出现内存不足或无法分配内存的情况,

下面是我遇到的情况,这是Nacos启动默认jvm配置,参数设置比较大

Spring Cloud Alibaba--Nacos集群配置_第10张图片
我的阿里云服务器是2G内存,启动两个Nacos后,第三个就跑不起来了,所以要修改内存配置:

Spring Cloud Alibaba--Nacos集群配置_第11张图片

你可能感兴趣的:(Spring,Cloud,Alibab,Spring,Cloud,Java填坑工程,Nacos集群,Nacos集群搭建,Linux+Nacos集群)