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的存储。
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的启动脚本startup.sh,使它能够接受不同的启动端口
- /mynacos/nacos/bin 目录下有startup.sh
- 思考
/mynacos/nacos/bin 目录下有startup.sh
平时单机版的启动,都是./startup.sh即可。
但是
集群启动,我们希望可以类似其它软件的shell命令,传递不同的端口号启动不同的nacos实例。命令:./startup.sh -p 3333 表示启动端口号为3333的nacos服务器实例,和上一步的cluster.conf配置的一致。
- 修改内容
修改前修改后
|
|
| | | |
|
|
- 执行方式
- 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; }…省略
- 按照指定启动
- 截止到此处,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: '*'
- 结果
- 高可用小总结
(完)