Nacos持久化和集群
参考官网:https://nacos.io/zh-cn/docs/cluster-mode-quick-start.html
官方建议:推荐使用Linux系统。3个或3个以上Nacos节点才能构成集群。使用外置数据源(mysql)。
集群方案如下:
默认的nacos使用嵌入式数据库derby实现数据的存储。所以,如果启动多个默认配置的nacos节点,数据存储存在一致性的问题。为了解决这个问题,Nacos采用了集中式存储的方法来支持集群化部署,目前支持MySQL的存储。
1. nacos切换搭配mysql数据库做持久化
1.创建数据库nacos_config,找到nacos\conf目录下找到nacos-mysql.sql,里面是需要执行的sql脚本
2.修改conf/application.properties中开启mysql持久化
3.测试:
(1)nacos新建配置文件
(2)到mysql查看数据:
2、集群设置(windows测试)
1.为了便于测试,我们复制三份nacos出来,分别改变不同的端口,数据库都连接同一个上面建的库。(修改conf/application.propertoes文件)
端口分别为8848、8849、8850
2.conf目录下新建cluster.conf,参考cluster.conf.example
#2020-10-29T10:27:19.046 172.23.7.79:8848 172.23.7.79:8849 172.23.7.79:8850
3. nacos默认启动是单机模式,需要修改为集群模式:修改bin/startup.cmd
可以看到大概在55行左右使用了该变量,如下:
if %MODE% == "standalone" ( set "JAVA_OPT=%JAVA_OPT% -Xms512m -Xmx512m -Xmn256m" set "JAVA_OPT=%JAVA_OPT% -Dnacos.standalone=true" ) else ( if %EMBEDDED_STORAGE% == "embedded" ( set "JAVA_OPT=%JAVA_OPT% -DembeddedStorage=true" ) set "JAVA_OPT=%JAVA_OPT% -server -Xms2g -Xmx2g -Xmn1g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m" set "JAVA_OPT=%JAVA_OPT% -XX:-OmitStackTraceInFastThrow XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=%BASE_DIR%\logs\java_heapdump.hprof" set "JAVA_OPT=%JAVA_OPT% -XX:-UseLargePages" )
4.启动三个进行测试
分别访问8848、8849、8850端口测试即可
5.访问集群
6.查看节点元数据,如下:(可以看到是主从模式,而且8848为主节点,后面两个为从节点)
3.nainx进行集群转发
1.windows下面下载nginx
2.修改nginx.conf,最后一个大括号内加入如下配置
include vhost/*.conf;
3.cons/vhost/下面新建nacoscluster.conf
server { listen 8851; server_name localhost; location /{ proxy_pass http://cluster; } } upstream cluster { server 127.0.0.1:8848; server 127.0.0.1:8849; server 127.0.0.1:8850; }
4.启动nginx
5.访问测试:
【当你用心写完每一篇博客之后,你会发现它比你用代码实现功能更有成就感!】