24小时在线平台

当前位置: 24小时在线平台 > 部署教程大全 > 文章页

Nacos2.1.1在Linux中的集群部署详解

时间:2025-05-12 04:18来源: 作者:admin 点击: 18 次
文章浏览阅读6.7k次,点赞2次,收藏4次。详解Nacos最新版集群架构和集群搭建方式_linux 安装nacos-2.1.1

在微服务项目中,只部署一个Nacos, 就会面临一个问题。

那就是单点故障。

一旦发送单点故障,会导致整个微服务崩坏。

所以在生产环境中,是一定要搭建Nacos集群的。

一、集群结构图

Nacos原始集群结构(官网提供):

在这里插入图片描述

DNS:域名,其实指代的是一个Nacos客户端,在项目中就是任何一个使用Nacos的微服务。

SLB:负载均衡器,作用和SpringCloud中的Ribbon差不多。不过这里的SLB是对各个Nacos节点做负载均衡。

AZ:第三层的AZ就代表一个Nacos集群中的Nacos节点。

经由原始架构的启发,可以有如下的Nacos集群架构的具体实现:

在这里插入图片描述

架构解释:

Nacos客户端:使用Nacos作配置中心或者注册中心的微服务项目。

Nginx:利用Nginx的反向代理和负载均衡完美实现原始架构图中的SLB(负载均衡器)。

Mysql集群:Nacos各个节点之间并不能直接通讯,所以可以把Nacos数据存储在Mysql中, 让所有节点从Mysql集群当中存取共享数据。之所以使用集群,是为了保证Mysql的高可用。

二、搭建集群 1) 明确目标需要的3个Nacos节点情况 节点部署ipport
Nacos1   192.168.137.129   8841  
Nacos2   192.168.137.129   8843  
Nacos3   192.168.137.129   8844  

这里为了更方便的修改配置,三个Nacos节点都在Windows上配置好。

再使用finalShell(一种ssh工具),把已经配置好的三个Nacos节点分别上传到三台服务器上运行即可。

注意:

这里没有使用连续端口,因为Nacos2.0以后启动一个Nacos就会占用连续的两个端口。

如果使用连续的端口,当启动第二个Nacos集群节点时,会报如下错误:

Address already in use: bind

而Nacos1.0到Nacos2.0之间的版本,则可以使用连续的端口号。

2) 下载和解压Nacos https://github.com/alibaba/nacos/releases

在releases页面往下拖一点,每个发布版本的最后就有对应Linux和Windows的对应安装包。

这里就以2022年8月8号发布的最新版2.11版本为例子。

在这里插入图片描述

下载完成后解压安装包:

​ 虽然是Linux环境下的安装包。但是在Windows下仍然可以解压。

​ 并且Linux环境下的安装包和Windows环境下的安装包目录结构完全一致。

​ 其实也很容易理解,就像在Linux和Windows下运行同一个SpringBoot项目。

​ SpringBoot项目的结构是一样的。

在这里插入图片描述

小技巧:

​ 基于上面的特点,我们可以使用任意安装包,在Windows下完成配置,再上传到Linux下运行。

3) 按官方建表文件搭建Nacos数据库

3.1 线上Nacos建表文件地址:

https://github.com/alibaba/nacos/blob/master/distribution/conf/nacos-mysql.sql

直接打开这个地址(此地址就是官方地址),里面是官方提供的Nacos数据库的建表语句。

3.2 本地Nacos建表文件位置:

如果地址打不开或者没网络,刚才下载的安装包里也有nacos-mysql.sql这个文件

在这里插入图片描述

如上图所示,在nacos/conf目录下,就有nacos-mysql.sql这个文件。

注意:

最好是使用Mysql,要不然可能建表会出现各种意外。

这个文件中也明显带了-mysql标识。

3.2 开始搭建Nacos数据库

由于搭建Mysql集群比较复杂,这里不做缀述。

这里就用本地单体Mysql来演示。

使用本地还是集群最终使用都是一样的。只是Mysql集群搭建比较复杂。

3.2.1 创建数据库,库名就叫nacos

在这里插入图片描述

3.2.2 执行nacos-mysql.sql

使用nacos-mysql.sql和去官方提供的线上建表文件里复制建表语句都是一样的。

但是建议使用本地的nacos-mysql.sql,因为这个文件一定是完全适配所下载的Nacos的版本的。

在这里插入图片描述

执行成功后数据库表如下:

在这里插入图片描述

注意点:

执行这个文件可能会报如下错误:

Invalid default value for 'gmt_create'

有以下解决方法:

将datetime类型改为timestamp类型。

去掉DEFAULT CURRENT_TIMESTAMP。

将Mysql数据库版本升级至5.6.5以上。

我不建议修改官方提供的文件,语句那么多也不好改,而且官网这么写说不定有特定作用。

所有出现这个问题,只要提升我们自己数据库的版本就行。

建议就用Mysql 5.7版本。

4) 配置单个Nacos

先不要着急一下搞三个Nacos节点,可以先配完一个,再复制三份。

三个节点相同的配置,就没必要配三次。

4.1 修改conf目录下的application.properties文件,增加如下配置:

#数据平台 就是目前使用的哪种数据库 即mysql oracle等数据库 spring.datasource.platform=mysql #db.num 集群中有几台mysql #这里暂时只有一台,因为这里主要是Nacos集群的搭建,所以没有用较大篇幅演示mysql集群的搭建 db.num=1 # 数据库的url 用户名和密码 db.url.0=jdbc:mysql://192.168.137.129:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC db.user.0=root db.password.0=root

一开始的时候这些配置是被注释了的:

在这里插入图片描述

我们只要解开对应注释,改为自己的配置即可。

4.2 修改conf目录下的cluster.conf.example文件

首先把cluster.conf.example重命名为cluster.conf

然后打开文件,在里面添加Nacos各个节点的ip和端口号

# 为了方便查看集群效果,我把三个Nacos节点放在一个Linux上 # 实际生产环境,只需要在Windows下配置好,然后再分别上传到三台对应的Linux服务器上即可 192.168.137.129:8841 192.168.137.129:8843 192.168.137.129:8845

最终配置效果如下:

在这里插入图片描述

5 ) 配置三台Nacos的个性化配置

把上面配置好点的节点复制两份。

这时候三个Nacos节点都是一样的配置。

分别把三个Nacos节点重命名为nacos8841、nacos8843、nacos8845。

在这里插入图片描述

分别修改三个中Nacos节点的application.properties文件。

主要是为了修改三个节点的端口号:

nacos8841:

server.port=8841

nacos8843:

server.port=8843

nacos8845:

server.port=8845

6) 使用finallshell把三个Nacos节点上传到Linux上

6.1 在 /usr/local/下创建nacos-cluster来放三个Nacos节点

cd /usr/local/ # 进入/usr/local/目录 mkdir nacos-cluster # 创建nacos-cluster文件夹 cd nacos-cluster # 进入nacos-cluster目录

6.2 使用finallshell上传三个Nacos节点

在这里插入图片描述

再次声明:

为了方便查看集群效果,把三个Nacos节点放在一个Linux上 实际生产环境,只需要在Windows下配置好,然后再分别上传到三台对应的Linux服务器上即可 6) 使用启动所有Nacos节点并查看效果

6.1 分别启动这三个Nacos节点

# 集群启动命令 (集群启动也是nacos的默认启动方式) sh startup.sh -p embedded # 拓展一个单机启动命令(可以用作测试) sh startup.sh -m standalone

在这里插入图片描述

出现红框处的这两句,就代表其中一个Nacos集群节点启动成功!

按照相同的方式把所有节点都启动起来即可。

6.2 尝试不使用反向代理直接访问

# 开启三个Nacos节点的对外访问 端口 firewall-cmd --zone=public --add-port=8841/tcp --permanent firewall-cmd --zone=public --add-port=8843/tcp --permanent firewall-cmd --zone=public --add-port=8845/tcp --permanent #重启防火墙 firewall-cmd --reload

访问下面任意一个地址:

:8841/nacos :8843/nacos :8845/nacos

效果如下:

在这里插入图片描述

在节点列表中可以看到集群中各个节点的状态。

UP代表启动正常,DOWN代表该节点并不在线。

由此集群基本架构搭建完毕。

三、使用Nginx做集群的反向代理和负载均衡

修改 Nginx 配置文件conf目录下的nginx.conf:

# 定义一组需要反向代理的服务器 # 对它们的默认的负载均衡策略是轮询策略 upstream nacos-cluster { server 192.168.137.129:8841; server 192.168.137.129:8843; server 192.168.137.129:8845; } # 下述配置的含义为: # 当我们访问8999端口时 # 根据反向代理配置,会将请求转发到 对应的服务上。 server { listen 8999; server_name 192.168.137.129; location /nacos { #监听的请求路径为/nacos proxy_pass ; #反向代理配置 } }

配置完成后,开启需要监听的8999端口:

# 开启8999 端口 firewall-cmd --zone=public --add-port=8999/tcp --permanent #重启防火墙 firewall-cmd --reload

浏览器访问:

在这里插入图片描述

访问这个地址,Nginx会自动根据负载均衡策略帮我们完成堵在均衡!

SpringBoot中的Nacos配置改为如下配置:

spring: cloud: nacos: server-addr: 192.168.137.129:8999 # Nacos地址(ip + 端口号) 四、后记

4.1 关于集群节点部分

为了快速实现集群效果,这里把所有集群节点部署在一台Linux上。

实际部署的话,应该分别部署在三台Linux服务器上。

这样可以有效的做好容灾和隔离。

4.2 关于Nginx部分

想要具体了解Nginx怎么使用,可以看我Nginx专栏下的内容

(责任编辑:)
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:
发布者资料
查看详细资料 发送留言 加为好友 用户等级: 注册时间:2025-06-27 01:06 最后登录:2025-06-27 01:06
栏目列表
推荐内容