官网说明
用于部署生产中的集群模式
默认Nacos使用嵌入数据库实现数据的存储,所以,如果启动多个默认配置下的Nacos节点,数据存储是存在一致性问题的。为了解决这个问题,Nacos采用了集中式存储的方式来支持集群化部署,目前只支持MySQL的存储。
Nacos支持三种部署模式
- 单机模式:用于测试和单机使用
- 集群模式:用于生产环境,确保高可用
- 多集群模式:用于多数据中心场景
单机模式支持mysql
在0.7版本之前,在单机模式下nacos使用嵌入式数据库实现数据的存储,不方便观察数据存储的基本情况。0.7版本增加了支持mysql数据源能力,具体的操作流程:
- 安装数据库,版本要求:5.6.5 +
- 初始化数据库,数据库初始化文件:nacos-mysql.sql
- 修改conf/application.properties文件,增加mysql数据源配置,目前仅支持mysql,添加mysql数据源的url,用户名和密码
再次以单机模式启动nacos,nacos所有写嵌入式数据库的数据都写到了mysql中。
Nacos持久化配置解释
Nacos默认自带的是嵌入式数据库derby
因此我们需要完成derby到mysql切换配置步骤
在nacos\conf目录下,找到SQL脚本
然后执行SQL脚本,同时修改application.properties目录
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_devtest?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=root
修改完成后,启动nacos,可以看到是一个全新的空记录页面,以前是记录进derby
Linux版Nacos + Mysql生产环境配置
配置
预计需要:1个Nginx + 3个nacos注册中心 + 1个mysql
所有的请求过来,首先先打到nginx上
Nacos下载Linux版本
在nacos github下载:https://github.com/alibaba/nacos/releases
选择Linux版本下载
集群配置
如果是一个nacos:启动 8848即可
如果是多个nacos:3333,4444,5555
那么就需要修改startup.sh里面的,传入端口号
步骤:
Linux服务器上mysql数据库配置
application.properties配置
Linux服务器上nacos的集群配置cluster.conf
梳理出3台nacos集群的不同服务端口号
复制出cluster.conf(备份)
修改
编辑Nacos的启动脚本startup.sh,使它能够接受不同的启动端口
/nacos/bin 目录下有startup.sh
平时单机版的启动,直接./startup.sh
但是集群启动时,我们希望可以类似其它软件的shell命令,传递不同的端口号启动不同的nacos实例,命令:./startup.sh -p 3333表示启动端口号为3333的nacos服务器实例,和上一步的cluster.conf配置一样。修改启动脚本,添加P,这样能够明确nacos启动的什么脚本
修改完成后,就能够使用下列命令启动集群了
./startup.sh -p 3333
./startup.sh -p 4444
./startup.sh -p 5555
Nginx的配置,由它作为负载均衡器
修改nginx的配置文件
作为负载均衡分流,同时upstream 支持weight
通过nginx访问nacos节点:http://192.168.111.144:1111/nacos/#/login
微服务注册进集群中
server:
port: 9002
spring:
application:
name: nacos-payment-provider
cloud:
nacos:
discovery:
server-addr: 192.168.111.144:1111 # 换成nginx的1111端口,做负债均衡
management:
endpoints:
web:
exposure:
include: '*'
总结
Nginx + 3个Nacos + mysql的集群化配置