侧边栏壁纸
博主头像
coydone博主等级

记录学习,分享生活的个人站点

  • 累计撰写 306 篇文章
  • 累计创建 51 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Nacos集群和持久化

coydone
2022-08-08 / 0 评论 / 0 点赞 / 316 阅读 / 3,138 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-05-03,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

架构说明

官方文档

官网架构图

因此开源的时候推荐用户把所有服务列表放到一个vip下面,然后挂到一个域名下面。

http://ip1:port/openAPI 直连ip模式,机器挂则需要修改ip才可以使用。

http://VIP:port/openAPI 挂载VIP模式,直连vip即可,下面挂server真实ip,可读性不好。

http://nacos.com:port/openAPI 域名+VIP模式,可读性好,而且换ip方便,推荐模式。

真实情况:

我们需要MySQL数据库:官网说明

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

Nacos支持三种部署模式

  • 单机模式-用于测试和单机试用。

  • 集群模式-用于生产环境,确保高可用。

  • 多集群模式-用于多数据中心场景。

Windows:cmd startup.cmd或者双击startup.cmd文件。

单机模式支持mysql

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

安装数据库,版本要求:5.6.5+

初始化mysq数据库,数据库初始化文件: nacos-mysql.sql

修改conf/application.properties文件,增加支持mysql数据源配置(目前只支持mysql),添加mysql数据源的url、用户名和密码。

spring.datasource.platform=mysql

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

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

Nacos持久化切换配置

Nacos默认自带的是嵌入式数据库derby,nacos的pom.xml中可以看出。

derby到mysql切换配置步骤:

  1. nacos-server-1.1.4\nacos\conf录下找到nacos-mysql.sql文件,执行脚本。

  2. nacos-server-1.1.4\nacos\conf目录下找到application.properties,添加以下配置(按需修改对应值)。

spring.datasource.platform=mysql

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

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

Linux版Nacos+MySQL配置说明

需要1个Nginx+3个nacos注册中心+1个mysql。

请确保是在环境中安装使用:

64 bit OS Linux/Unix/Mac,推荐使用Linux系统。

64 bit JDK 1.8+;下载配置

Maven 3.2.x+;下载配置

3个或3个以上Nacos节点才能构成集群。

link

Nacos下载Linux版

Nacos集群配置

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

SQL脚本在哪里 - 目录nacos/conf/nacos-mysql.sql

自己Linux机器上的Mysql数据库上运行。

2、application.properties配置

添加以下内容,设置数据源

spring.datasource.platform=mysql

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

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

梳理出3台nacos集器的不同服务端口号,设置3个端口:3333、4444、5555。

复制出cluster.conf

内容

192.168.111.144:3333
192.168.111.144:4444
192.168.111.144:5555

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

4、编辑Nacos的启动脚本startup.sh,使它能够接受不同的启动端口

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

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

但是,集群启动,我们希望可以类似其它软件的shell命令,传递不同的端口号启动不同的nacos实例。

命令:./startup.sh -p 3333表示启动端口号为3333的nacos服务器实例,和上一步的cluster.conf配置的一致。

修改内容

执行方式 - startup.sh - p 端口号

5、Nginx的配置,由它作为负载均衡器

修改nginx的配置文件 - nginx.conf

修改内容

按照指定启动

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

7、测试

#启动3个nacos注册中心
startup.sh - p 3333
startup.sh - p 4444
startup.sh - p 5555

#查看nacos进程启动数
ps -ef | grep nacos | grep -v grep | wc -l

#启动nginx
./nginx -c /usr/local/nginx/conf/nginx.conf

#查看nginx进程
ps - ef| grep nginx

测试通过nginx,访问nacos - http://192.168.111.144:1111/nacos/#/login

新建一个配置测试,新建后,可在linux服务器的mysql新插入一条记录

select * from config;

让微服务cloudalibaba-provider-payment9002启动注册进nacos集群 - 修改配置文件

server:
  port: 9002

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

management:
  endpoints:
    web:
      exposure:
        inc1ude: '*'

启动微服务cloudalibaba-provider-payment9002

访问nacos,查看注册结果

0

评论区