1. 集群结构图

官方给出的Nacos集群图:

image-20210409210621117

其中包含3个nacos节点,然后一个负载均衡器代理3个Nacos。这里负载均衡器可以使用nginx。

我们计划的集群结构:

image-20210409211355037

三个nacos节点的地址:

节点 ip port
nacos1 127.0.0.1 8840
nacos2 127.0.0.1 8850
nacos3 127.0.0.1 8860

注意!!

nacos2.X 版本中,每个节点会占用两个端口,即配置的端口和下一个端口

所以 集群之间的端口号不要连着,至少间隔一个端口(如8840,8842,8844)

2.搭建集群

搭建集群的基本步骤:

  1. 下载nacos安装包

  2. 搭建数据库,初始化数据库表结构

  3. 配置nacos

  4. 启动nacos集群

  5. 配置nginx反向代理


2.1. 下载nacos

nacos在GitHub上有下载地址:https://github.com/alibaba/nacos/tags,可以选择任意版本下载。

本例中使用1.4.1版本:

image-20210409212119411

2.1.初始化数据库

Nacos默认数据存储在内嵌数据库Derby中,不属于生产可用的数据库。

官方推荐的最佳实践是使用带有主从的高可用数据库集群,但是在接下来的案例中,我们以单点的数据库为例来讲解。

首先新建一个数据库,命名为nacos,而后执行nacos目录中的 conf/mysql-schema.sql,构造nacos需要的数据结构和基本数据。

需要注意,不同版本的nacos中,sql也是不同的,所以切换版本时,可能需要重新构造

2.3.配置Nacos

将这个包解压到任意非中文目录下,如图:

image-20210402161843337

目录说明:

  • bin:启动脚本
  • conf:配置文件

进入nacos的conf目录,首先备份配置文件cluster.conf.example,然后将原文件重命名为cluster.conf

image-20210409212459292

然后添加内容:

127.0.0.1:8840
127.0.0.1:8850
127.0.0.1:8860

注意:此处的IP一定要与下面application.properties中的nacos.inetutils.ip-address保持一致。

然后修改application.properties文件,添加数据库配置

# 这个ip就是节点注册到nacos中的ip,需要与cluster.conf中保持一致
nacos.inetutils.ip-address=127.0.0.1
# 数据存储到mysql
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=123

这里的数据库地址、用户名、密码请根据实际情况配置。

2.4.启动

将nacos文件夹复制三份,分别命名为:nacos1、nacos2、nacos3

image-20210409213335538

然后分别修改三个文件夹中的application.properties,

nacos1:

server.port=8840

nacos2:

server.port=8850

nacos3:

server.port=8860

然后分别启动三个nacos节点,直接双击运行bin/startup.cmd

查看集群的节点信息:

image-20230305115755790

2.5.nginx反向代理

修改nginx目录下的conf/nginx.conf文件,配置如下:

upstream nacos-cluster {
    server 127.0.0.1:8845;
    server 127.0.0.1:8846;
    server 127.0.0.1:8847;
}

server {
    listen       80;
    server_name  localhost;

    location /nacos {
        proxy_pass http://nacos-cluster;
    }
}

而后在浏览器访问:http://localhost/nacos即可。

代码中application.yml文件配置如下:

spring:
  cloud:
    nacos:
      config:
        server-addr: localhost:80 # 配置中心Nacos地址
      discovery:
        server-addr: localhost:80 # 注册中心Nacos地址

2.6.优化

  • 实际部署时,需要给做反向代理的nginx服务器设置一个域名,这样后续如果有服务器迁移nacos的客户端也无需更改配置.

  • Nacos的各个节点应该部署到多个不同服务器,做好容灾和隔离

如人饮水,冷暖自知。
最后更新于 2023-08-03