參考官網: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.訪問測試: