1. 集群架构
要组成集群Nacos必须要有3个或以上的Nacos服务节点,官网推荐在生产服务中使用集群架构。
官网对Nacos集群架构的说明:https://nacos.io/zh-cn/docs/cluster-mode-quick-start.html
总体来说有三种方式可以实现Nacos集群部署:
- IP直连模式:机器挂则需要修改IP才可以使用。
- 挂载slb模式(Server Load Balancing 服务负载均衡):内网SLB,不可暴露到公网,以免带来安全风险,直连SLB即可,下面挂server真实IP,可读性不好。
- 域名 + SLB模式:可读性好,而且换IP方便,推荐模式
也就是说官网是推荐将所有服务列表放到一个vip下面,然后挂到一个域名下面:请求通过域名发出,并通过Nginx将请求分发到各个Nacos服务器,再由Nacos服务到数据库中获取配置信息。
2. 配置持久化
Nacos支持三种部署模式
- 单机模式-用于测试和单机试用。
- 集群模式-用于生产环境,确保高可用。
- 多集群模式-用于多数据中心场景。
默认Nacos使用嵌入式数据库(Derby)实现数据的存储。所以,如果启动多个默认配置下的Nacos节点,数据存储是存在一致性问题的。为了解决这个问题,Nacos采用了集中式存储的方式来支持集群化部署,也就是将配置信息保存在同一个数据库中,目前只支持MySQL的存储。
2.1. Nacos切换mysql数据库
在0.7版本之前,在单机模式时nacos使用嵌入式数据库实现数据的存储,不方便观察数据存储的基本情况。0.7版本增加了支持mysql数据源能力,具体的操作步骤:
-
安装数据库,版本要求:5.6.5及以上
-
初始化mysq数据库,数据库初始化文件: nacos-mysql.sql(文件在Nacos的安装目录下的conf中)
-
修改conf下的application.properties文件,增加支持mysql数据源配置(目前只支持mysql),添加mysql数据源的url、用户名和密码。(按需修改对应值)
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://localhost:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=123456
- 再以单机模式启动nacos,nacos所有嵌入式数据库的数据都写到了mysql。
cmd startup.cmd或者双击startup.cmd文件
启动Nacos,可以看到是个全新的空记录界面,以前是记录进derby。
3. Linux版Nacos+mysql生产环境配置
- 下载Nacos的Linux版本
- 在Linux中安装mysql、Nacos、Nginx
- 修改Nacos的application.properties,增加mysql链接配置,将数据库从嵌入式数据库切换到外部高可用数据库
- 修改Nacos的startup文件,增加启动参数配置,支持传入port参数,让Nacos可以用不同端口启动多个服务
- 修改cluster.conf集群配置文件,将多个端口的Nacos服务绑定为集群
- 配置Nginx,增加端口拦截监听,并配置转发URL
- 注册微服务模块进入Nacos服务