SpringCloud-Nacos集群搭建

本文详细介绍了如何在SpringCloud环境中搭建Nacos集群。通过清晰的步骤和详尽的说明,帮助读者在SpringCloud中成功搭建Nacos集群。文章详细介绍了安装和配置的每个步骤,确保了高可用性和可伸缩性。通过清晰的说明和示例,读者能够轻松理解复杂的集群搭建过程,实现微服务体系的稳固运行。这篇文章是搭建Nacos集群的理想参考,为构建可靠的分布式系统提供了关键信息。

一、Nacos集群示意图

Nacos(Naming and Configuration Service)是一个用于服务发现、动态配置管理以及可视化服务管理的开源平台。Nacos支持构建弹性的、动态的、易于维护的微服务架构,并为大规模微服务体系的管理提供了完整的解决方案。在Nacos的集群视图中,Nacos可以通过横向扩展的方式构建多个节点,形成一个高可用的集群,以确保系统的稳定性和可靠性。

3@BRYW 78F5R7FHHK8D - SpringCloud-Nacos集群搭建

Nacos集群特点:

特点

特点详述

节点同步

集群中的各个节点能够相互同步数据,确保配置信息和服务实例的一致性。

负载均衡

Nacos集群可以通过负载均衡机制,将服务请求合理分发到各个节点,提高系统的整体性能和吞吐量。

高可用性

Nacos集群通过多节点的部署,实现高可用性,即使某个节点发生故障,集群仍能保持正常运行。

水平扩展

集群中的节点可以随着需求的增加而动态扩展,实现系统的横向扩展,以适应不断增长的服务规模。

故障转移

集群中的节点能够感知其他节点的状态,当某个节点发生故障时,其他节点可以接管其工作,确保系统的连续性。

通过Nacos的集群视图,可以更好地管理和维护微服务架构,提供了一个稳定、高效、可靠的服务治理平台。


二、Nacos集群搭建

1、安装Nacos

首先,我们需要从 Nacos 的官方网站下载发布版本。下载地址:Releases · alibaba/nacos · GitHub

001 3 1024x392 - SpringCloud-Nacos集群搭建

选择合适的版本并下载,解压缩得到 Nacos 的安装包。

在解压后的 Nacos 目录中,找到 bin 文件夹。

002 4 - SpringCloud-Nacos集群搭建

用写字板编辑 startup.cmd,将 set MODE= “cluster” 修改为:

代码语言:javascript
复制
set MODE="standalone"

这将在启动 Nacos Server 时,默认使用 standalone 模式运行。

修改完成后,切换 cmd 到 bin 目录下启动 Nacos Server:

代码语言:javascript
复制
C:\Users\Damon.Liu>d:
D:\>cd D:\Tools\Nacos\bin
D:\Tools\Nacos\bin>startup.cmd -m standalone
003 2 - SpringCloud-Nacos集群搭建

这里提醒我需要配一个 java8以上 的 JAVA_HOME 环境变量。

简单配一下:

004 2 - SpringCloud-Nacos集群搭建

再次尝试启动 Nacos,这次成功了!

005 2 1024x581 - SpringCloud-Nacos集群搭建

2、复制客户端

复制两份Nacos的客户端,用端口号命名做区分。

注意端口号需要最少间隔一位,原因是 Nacos 2.0 之后,启动 Nacos 时会占用 +1000/1001 两个端口,如果相邻,会导致启动了一个 Nacos 之后,启动不了相同端口的另一个 Nacos。

官方文档说明如下:

image 62 - SpringCloud-Nacos集群搭建

所以,我们命名为 Nacos_8844、Nacos_8846,间隔两位,同时和默认的 8848 端口的 Nacos 区分开来,方便我们辨认。

002 12 - SpringCloud-Nacos集群搭建

下面,对三个客户端分别进行修改。


3、创建Nacos数据库

MySQL 创建名为 Nacos 的数据库。

将 conf 文件夹下的 mysql-schema.sql 导入到这个库里。

007 6 - SpringCloud-Nacos集群搭建

4、修改每个客户端application.properties

① 修改端口号

首先,修改三个客户端为不同的端口号。

端口在 conf 目录下的 application.properties 下修改: ​

image 66 - SpringCloud-Nacos集群搭建

② 修改数据库连接信息

放开数据库的三处注释。

009 5 1024x522 - SpringCloud-Nacos集群搭建

这里有个数据库连接数,我们就一个数据库所以填1;

下面的 jdbc 连接信息,改为我们数据库的账号密码,连接的就是我们刚刚创建的 Nacos 数据库。


5、修改每个客户端集群配置

再对每个客户端 conf 目录下的 cluster.conf.example 文件复制一份,改名为 cluster.conf。

7C0J5J679@C5UP56YRCL - SpringCloud-Nacos集群搭建

修改复制出来的 cluster.conf 文件,把三个 nacos 服务端地址都添加到里面:

代码语言:javascript
复制
192.168.0.107:8844
192.168.0.107:8846
192.168.0.107:8848
005 7 - SpringCloud-Nacos集群搭建

启动三个nacos服务端,如果之前是单机模式运行的,修改过启动器的代码,则需要改回来。

比如我的 startup.cmd 里之前指定了默认启动方式,这里需要修改这一行为:

代码语言:javascript
复制
set MODE= "cluster"
006 7 - SpringCloud-Nacos集群搭建

6、逐一启动Nacos服务

修改之后,我们双击 Stratup.cmd 启动 Nacos:

008 5 1024x654 - SpringCloud-Nacos集群搭建

启动成功之后,我们可以访问已经启动的 Nacos 控制台查看:localhost:8848/nacos

010 4 1024x487 - SpringCloud-Nacos集群搭建

三、Nginx反向代理

1、下载安装Nginx

访问 Nginx官网(nginx.org/en/download.html) 下载最新的稳定版本。

nginx 001 1024x630 - SpringCloud-Nacos集群搭建

2、修改Nginx默认端口

解压Nginx压缩包,修改默认端口。

Nginx的配置文件是conf目录下的nginx.conf,默认配置的nginx监听的端口为80,根据端口占用情况,我们可以修改位其他端口,这里我修改位40。

修改之前我们可以输入cmd指令,查询端口占用状态:

代码语言:javascript
复制
#查看80端口是否被占用的命令是:
netstat-ano | findstr 0.0.0.0:80 netstat-ano | findstr "80"

如果被占用了,我们可以修改 Nginx\conf\nginx.conf 文件里的监听端口号,来指定默认端口。

比如,我这里换为40端口。

nginx 002 1024x656 - SpringCloud-Nacos集群搭建

但建议大家还是给 Nginx 80端口,默认端口最终我还是用的默认80端口。


3、启动Nginx

启动Nginx,验证服务是否成功开启。

双击根目录下的nginx.exe,双击后一个黑色的弹窗一闪而过就消失了,启动就完成了。

然后我们访问80端口,看到Nginx服务已经成功运行了。

image 63 - SpringCloud-Nacos集群搭建

4、Nginx对Nacos负载均衡的配置

我们这里要配置 Nginx\conf\nginx.conf 文件。 listen:监听的端口; (监听端口需要避免占用,尤其是 win-server,需要关闭IIS在80端口的默认项目) server_name:监听的域名(填写 localhost 即为公网IP); location 里 proxy_pass:设置转发的目标地址; 默认端口我还是用的默认80端口。

代码语言:javascript
复制
upstream nacos-cluster {
    server 127.0.0.1:8844;
	server 127.0.0.1:8846;
	server 127.0.0.1:8848;
}

server {
listen 80;
server_name localhost;

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

}

这里给出的例子的意思是:当收到 /naocs 请求时,自动转发请求到 Nacos 集群,通过负载均衡指定具体哪个端口的 Nacos 响应。 ​

011 4 - SpringCloud-Nacos集群搭建

修改完配置后,我们要停止之前的 Nginx 服务,重启后配置才能刷新。

image 64 - SpringCloud-Nacos集群搭建

5、浏览器访问测试

访问 localhost/nacos,如果显示是 Nacos 的控制台页面,则说明配置成功。

image 65 1024x553 - SpringCloud-Nacos集群搭建

四、Nacos控制台新建配置

1、Nacos控制台新建配置

我们访问 Nacos 的控制台页面,因为我们刚刚用 Nginx 转达到集群,所以 Nacos 控制台地址变为 localhost/nacos,我们点击新建配置。

配置起名为:test-service.yaml,类型选为 YAML 类型,配置内容我们写一个时间格式:

代码语言:javascript
复制
pattern:
dateformat: yyyy-MM-dd HH:mm:ss
012 3 - SpringCloud-Nacos集群搭建

2、查看配置是否存入数据库

我们打开我们刚刚创建的 Nacos 数据库,查看 config-info 表:

013 5 - SpringCloud-Nacos集群搭建

可以看到配置已经写入表内了。

至此,我们的Nacos集群搭建成功!


五、Nacos集群的应用场景

Nacos集群在微服务架构中具有广泛的应用场景,其中一些关键的应用场景包括:

场景

场景下功能描述

服务注册服务发现

Nacos集群作为注册中心,可以用于服务的注册与发现。微服务在启动时将自身注册到Nacos集群,其他微服务通过Nacos发现和调用这些服务。

动态配置管理

Nacos提供了分布式配置管理功能,允许在运行时动态调整应用程序的配置。Nacos集群可以用于集中式管理配置信息,实现配置的动态更新和热加载。

健康检查故障恢复

Nacos集群通过定期的健康检查,能够检测服务的状态并及时发现故障节点。当某个微服务发生故障时,Nacos能够自动剔除不可用的节点,确保系统的高可用性。

动态路由

基于Nacos集群,可以实现动态路由策略,根据服务的状态和负载情况,动态调整请求的路由,实现流量的均衡和优化。

分布式锁与协调

Nacos提供了分布式锁和协调的功能,可以应用于分布式系统中的同步、协作和资源竞争场景,确保多个微服务之间的有序执行。

事件驱动架构

Nacos支持事件监听机制,可以通过订阅Nacos集群中的事件,实现微服务架构中的事件驱动,提高系统的解耦性和可维护性。

综上所述,Nacos集群不仅仅是服务注册中心,还在微服务架构中发挥着关键的角色,支持多种场景下的服务治理和协调。