• 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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    再以单机模式启动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>mysqlgroupId>
        <artifactId>mysql-connector-javaartifactId>
    dependency>
    
    <dependency>
        <groupId>org.apache.derbygroupId>
        <artifactId>derbyartifactId>
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    重启Nacos

    startup.cmd -m standalone
    
    • 1

    重新访问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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    启动项目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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

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

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

    Address already in use: bind
    
    • 1
    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
    
    • 1
    • 2

    当启动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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

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

    ps -ef|grep nacos|grep -v grep|wc -l
    
    • 1
    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
    
    • 1
    • 2
    • 3

    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
    
    • 1
    • 2

    修改后的内容

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(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
    
    • 1
    • 2
    • 3
    • 4
    • 5

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

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

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

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

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

    在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地址
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

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

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

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

    5、总结图

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

  • 相关阅读:
    空投:实现去中心化、建立DAO的必经之路
    Ant Design Pro从零到一(认识AntD)
    Talk预告 | FAIR研究科学家刘壮:高效和可扩展的视觉神经网络架构
    NetAssist使用
    intel 一些偏门汇编指令总结
    Python 正则表达式进阶与实战
    主流超融合多副本机制缺陷与 SmartX 的临时副本策略
    浏览器输入网址后发生了什么?
    AI小程序开放2个超级入口,还能分享朋友圈
    单核和多核中的多线程环境下,如何保证i++,++i执行的原子性。
  • 原文地址:https://blog.csdn.net/baidu_39378193/article/details/127877314