5、Nacos集群和持久化配置(重要)

5.1、官网说明

  • https://nacos.io/zh-cn/docs/cluster-mode-quick-start.html
  • 官网架构图(写的o(╥﹏╥)o)
  • 上图官网翻译,真实情况
  • 说明 https://nacos.io/zh-cn/docs/deployment.html默认Nacos使用嵌入式数据库实现数据的存储。所以,如果启动多个默认配置下的Nacos节点,数据存储是存在一致性问题的。 为了解决这个问题,Nacos采用了集中式存储的方式来支持集群化部署,目前只支持MySQL的存储。

nacos 内存数据库转为mysql 数据库 配置不想丢_nginx

5.2、Nacos持久化配置解释

  • Nacos默认自带的是嵌入式数据库derby https://github.com/alibaba/nacos/blob/develop/config/pom.xml
  • derby到mysql切换配置步骤
  • nacos\conf目录下找到sql脚本SQLyog执行nacos-mysql.sql
  • nacos\conf目录下找到application.properties末尾添加

spring.datasource.platform=mysql db.num=1 db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&serverTimezone=Asia/Shanghai db.user=root db.password=123

  • 启动Nacos,可以看到是个全新的空记录界面,以前是记录进derby

5.3、Linux版Nacos+MySQL生产环境配置

  • 预计需要,1个Nginx+3个nacos注册中心+1个mysql
  • Nacos下载Linux版
  • https://github.com/alibaba/nacos/releases
  • 解压后安装tar -zxvf nacos-server-2.0.1.tar.gz
  • 集群配置步骤(重点)
  • Linux服务器上mysql数据库配置
  • SQL脚本在哪里

conf目录下nacos-mysql.sql

  • 自己Linux机器上的Mysql数据库粘贴
  • application.properties 配置
  • 位置

  • 内容application.properties 文件打开后的最后面,配置如下内容:

spring.datasource.platform=mysql db.num=1 db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&serverTimezone=Asia/Shanghai db.user=root db.password=123

  • Linux服务器上nacos的集群配置cluster.conf
  • 梳理出3台nacos集器的不同服务端口号
  • 复制出cluster.conf

  • 内容

这个IP不能写127.0.0.1,必须是Linux命令hostname -i能够识别的IP

nacos 内存数据库转为mysql 数据库 配置不想丢_微服务_02

  • 编辑Nacos的启动脚本startup.sh,使它能够接受不同的启动端口
  • /mynacos/nacos/bin 目录下有startup.sh
  • 思考

/mynacos/nacos/bin 目录下有startup.sh

平时单机版的启动,都是./startup.sh即可。

但是

集群启动,我们希望可以类似其它软件的shell命令,传递不同的端口号启动不同的nacos实例。命令:./startup.sh -p 3333 表示启动端口号为3333的nacos服务器实例,和上一步的cluster.conf配置的一致。

  • 修改内容
修改前修改后

nacos 内存数据库转为mysql 数据库 配置不想丢_nginx_03

|

nacos 内存数据库转为mysql 数据库 配置不想丢_html_04

|

| | | |

nacos 内存数据库转为mysql 数据库 配置不想丢_微服务_05

|

nacos 内存数据库转为mysql 数据库 配置不想丢_mysql_06

|

  • 执行方式
  • Nginx的配置,由它作为负载均衡器
  • 修改nginx的配置文件
  • nginx.conf

upstream cluster{ server 127.0.0.1:3333; server 127.0.0.1:4444; server 127.0.0.1:5555; }server { listen 1111; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { #root html; #index index.html index.htm; proxy_pass http://cluster; }…省略

nacos 内存数据库转为mysql 数据库 配置不想丢_spring cloud alibaba_07

  • 按照指定启动
  • 截止到此处,1个Nginx+3个nacos注册中心+1个mysql
  • 测试通过nginx访问nacoshttp://192.168.111.144:1111/nacos/#/login
  • 新建一个配置测试
  • linux服务器的mysql插入一条记录
  • 测试微服务cloudalibaba-provider-payment9002启动注册进nacos集群
  • yml
server:
  port: 9002

spring:
  application:
    name: nacos-payment-provider
  cloud:
    nacos:
      discovery:
        #配置Nacos地址
        #server-addr: localhost:8848
        # 换成nginx的1111端口,做集群
        server-addr: 192.168.111.144:1111


management:
  endpoints:
    web:
      exposure:
        include: '*'
  • 结果
  • 高可用小总结

(完)