Nacos2.1.1集群和持久化配置以及Nginx负载均衡分发(重点)

Nacos集群和持久化配置(重点)

1、官网说明

官网文档地址:https://nacos.io/zh-cn/docs/cluster-mode-quick-start.html

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EEBssvgr-1668556332086)(image/128、nacos集群架构图.png)]

对如上图片进行翻译如下

根据下图,需要配置MySQL作为持久化保存Nacos的信息

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dh94uDuE-1668556332088)(image/129、架构图翻译.png)]

默认Nacos使用嵌入式数据库实现数据的存储。所以,如果启动多个默认配置下的Nacos节点,数据存储是存在一致性问题的。为了解决这个问题,Nacos采用了集中式存储的方式来支持集群化部署,目前只支持MySQL的存储

1.1、nacos三种部署环境

官网文档:https://nacos.io/zh-cn/docs/deployment.html

  • 单机模式 - 用于测试和单机试用。
  • 集群模式 - 用于生产环境,确保高可用。
  • 多集群模式 - 用于多数据中心场景。

单机模式支持mysql

在0.7版本之前,在单机模式时nacos使用嵌入式数据库实现数据的存储,不方便观察数据存储的基本情况。0.7版本增加了支持mysql数据源能力,具体的操作步骤:

  • 1.安装数据库,版本要求:5.6.5+
  • 2.初始化mysql数据库,数据库初始化文件:nacos-mysql.sql
  • 3.修改conf/application.properties文件,增加支持mysql数据源配置(目前只支持mysql),添加mysql数据源的url、用户名和密码。
spring.datasource.platform=mysql

db.num=1
db.url.0=jdbc:mysql://xxx.xxx.xxx.xxx:3306/nacos_devtest?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=nacos_devtest
db.password=youdontknow

再以单机模式启动nacos,nacos所有写嵌入式数据库的数据都写到了mysql

2、Win版Nacos持久化配置解释

2.1、Nacos默认自带的是嵌入式数据库derby

GitHub查看官网地址:https://github.com/alibaba/nacos/blob/develop/config/pom.xml

自身的pom.xml依赖文件有derby配置,同样的也具有mysql的依赖,通过后面的配置可以结合mysql实现配置持久化

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>
<!--自身携带的小型数据库-->
<dependency>
    <groupId>org.apache.derby</groupId>
    <artifactId>derby</artifactId>
</dependency>

2.2、derby到mysql切换配置步骤

在存放nacos\nacos-server-2.1.1\nacos\conf路径下可以看到mysql的脚本

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-djqDwNYj-1668556332088)(image/130、mysql数据库脚本.png)]

将上面的脚本在本地的mysql中创建一个新的数据库nacos_config,然后执行上面sql脚本生成数据库的具体内容

修改conf/application.properties文件

参考官网的手册【单机模式支持mysql】

在配置文件中添加如下的连接消息,改为自己的连接即可

spring.datasource.platform=mysql

db.num=1
db.url.0=jdbc:mysql://127.0.0.1:13306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=1234

重启Nacos

startup.cmd -m standalone

重新访问nacos可以看出之前的数据已经全部的清空的,是因为切换了数据库为mysql,下面通过新增一条配置列表数据,然后查看nacos_config数据库中是否持久化的保存

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7e63HNag-1668556332089)(image/131、持久化nacos数据到mysql.png)]

3、Linux版Nacos集群配置(2.1.1版本)+MySQL持久化配置+Nginx负载均衡

预计需要,1个Nginx+3个nacos注册中心+1个mysql

具体的单接节点的安装已经在第一篇的时候已经写过了,下面的就是编写集群的安装步骤

2.1、Linux版安装Nacos

2.2、集群配置步骤(重点)

1、Linux服务器上mysql数据库配置

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v0wuQeVp-1668556332089)(image/132、nacos的数据库脚本.png)]

将自带的sql脚本在自己的虚拟机Linux系统MySQL中运行,具体还是参考上面win版本的配置

2、application.properties 配置连接sql

位置:/nacos/conf/application.properties,在配置文件里面添加如下内容,指定自己虚拟机的数据库连接信息

spring.datasource.platform=mysql

db.num=1
db.url.0=jdbc:mysql://127.0.0.1:13306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=1234

启动项目sh startup.sh -m standalone测试是否可以正常的登录以及数据是否持久化的存储在MySQL数据库中,如上操作成功之后才进行下面的集群部署操作

对应新版本的nacos集群配置与之前的配置又有所不同了,需要查看具体的官网升级说明文档:https://nacos.io/zh-cn/docs/2.0.0-compatibility.html

如果启动日记出现Unable to start embedded Tomcat提示错误,基本都是配置连接mysql数据库的问题了,将项目的所有进程杀掉并重启虚拟机再运行查看

3、Linux服务器上nacos的集群配置cluster.conf

梳理出3台nacos集器的不同服务端口号,以及对nacos进行分组

  1. 复制cluster.conf保留原来的备份

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DeNSDsm7-1668556332090)(image/133、复制备份cluster.png)]

  1. 编写clister.conf文件端口

注释原来的内容,一定要使用自己虚拟机的网卡地址【ip addr查看】,如果不使用不同的端口,nacos都是8848导致集群启动失败

# 查看虚拟机的IP
hostname -I

#2022-09-27T19:20:05.572
192.168.26.131:8851
192.168.26.131:8861
192.168.26.131:8871

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

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

Address already in use: bind
  1. 复制两份内容修改启动端口号后再进行分别启动

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yvUlh1V9-1668556332090)(image/137、复制Nacos.png)]

【application.properties】下的nacos端口号需要对应,不需要再修改【cluster.conf】

  1. server.port=8851
  2. server.port=8861
  3. server.port=8871
执行的方式

根据官网给出的集群启动命令,需要进入到每一个/bin文件里面执行

# 集群启动,使用外置数据源
sh startup.sh

当启动nacos10秒后查看/nacos8851/logs/start.out启动配置文件的最后面出现如下命令即可视为集群启动成功

2022-09-27 20:18:53,465 INFO The server IP list of Nacos is [xxx.xxx.xxx.xxx:8851, xxx.xxx.xxx.xxx:8861, xxx.xxx.xxx.xxx:8871]
2022-09-27 20:15:39,892 INFO Nacos is starting...

2022-09-27 20:15:40,894 INFO Nacos is starting...

2022-09-27 20:15:41,897 INFO Nacos is starting...

2022-09-27 20:15:42,904 INFO Nacos is starting...

2022-09-27 20:15:43,914 INFO Nacos is starting...

2022-09-27 20:15:44,163 INFO Nacos started successfully in cluster mode. use external storage

8851/8861/8871启动完成后查看启动的nacos集群数据

ps -ef|grep nacos|grep -v grep|wc -l
  1. 通过指定的端口号访问Nacos查看是否正常的连接和登录进去

需要注意的是改为主机的虚拟机IP地址

http://xxx.xxx.xxx.xxx:8851/nacos/index.html
http://xxx.xxx.xxx.xxx:8861/nacos/index.html
http://xxx.xxx.xxx.xxx:8871/nacos/index.html

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wQSbycVg-1668556332091)(image/138、Nacos集群节点.png)]

  1. Nginx的配置,由它作为负载均衡器

虚拟机需要安装有Nagix环境,找到自己的配置文件/root/nginx-1.22.0/conf/nginx.conf备份并修改里面的内容实现负载均衡

# 备份配置文件
cp nginx.conf nginx.conf.bk

修改后的内容

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p4Hau8Mq-1668556332091)(image/134、修改nginx.png)]

后面指定配置nginx.conf配置文件的启动

  1. 截止到此处,1个Nginx+3个nacos注册中心+1个mysql

在上面已经启动了集群Nacos集群三个,这里就不再赘述了

  • 进入安装Nginx的目录,指定启动配置文件
# 启动Nginx,-c 指定启动配置文件
./nginx -c /opt/nginx/conf/nginx.conf

# 查看指定访问情况
ps -ef | grep nginx

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HelYd5zs-1668556332092)(image/136、启动nginx.png)]

4、通过Nginx负载均衡访问Nacos集群

根据上图修改nginx.conf配置文件可以得知拦截的是启动访问的80端口,如下

需要使用自己虚拟机的IP地址进行访问

http://xxx.xxx.xxx.xxx/nacos/#/login

在Nacos配置中心中添加配置查看Linux系统中的数据库是否出现添加的内容,如果说明Linux的Nacos持久化就完成了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GOyI5Fuw-1668556332092)(image/139、添加Nacos配置文件.png)]

查看数据库

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UAZPCLZH-1668556332093)(image/140、虚拟机nacos持久化.png)]

4、微服务cloudalibaba-provider-payment9002启动注册进nacos集群

4.1、修改9002服务提供者YAML配置文件

需要注意的是,下面的配置使用到了虚拟机的端口,一定需要配置成自己的虚拟机IP地址,否则会连接不上

spring:
  application:
    name: nacos-payment-provider
  cloud:
    nacos:
      discovery:
        server-addr: xxx.xxx.xxx.xxx:80 # 修改为Nginx访问地址,通过负载均衡分发到虚拟机的nacos
      # server-addr: localhost:8848 # win配置Nacos地址

4.2、启动9002访问提供者查看Nacos服务注册列表

启动项目后,后端没有出现错误就可以查看前端的nacos查看是否有注册到列表

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CZmC9uaU-1668556332093)(image/141、nginx注册服务实例.png)]

5、总结图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Cch7hlpN-1668556332094)(image/142、nacos总结图.png)]

猜你喜欢

转载自blog.csdn.net/baidu_39378193/article/details/127877314
今日推荐