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访问nacos
http://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: '*'
-
结果
-
-
高可用小总结
(完)