1. 程式人生 > 其它 >nacos叢集配置筆記

nacos叢集配置筆記

一、安裝

1.1 下載

https://github.com/alibaba/nacos/releases

1.2 解壓

tar -zxvf nacos-server-2.0.2.tar.gz

1.3 叢集配置

進入安裝目錄中conf目錄,複製cluster.conf.example為cluster.conf

cp cluster.conf.example cluster.conf

編輯cluster.conf,加入所有叢集裝置

vim cluster.conf

192.168.44.10:8848
192.168.44.11:8848
192.168.44.12:8848

1.4 調整nacos啟動時虛擬機器記憶體引數

進入安裝目錄中bin目錄,編輯startup.sh

vim startup.sh

找到叢集JAVA引數記憶體配置
JAVA_OPT="${JAVA_OPT} -server -Xms2g -Xmx2g -Xmn1g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

根據需要調整堆記憶體和元資料空間的大小,如果在測試環境中,可以考慮降低記憶體配置,例如:
JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn128m -XX:MetaspaceSize=64m -XX:MaxMetaspaceSize=256m"

1.5 使用內建資料來源啟動叢集

nacos會自動同步叢集中的資料,即使這三份資料分別存在不同的資料庫中,預設的資料庫是derby.

sh startup.sh -p embedded

關閉伺服器

sh shutdown.sh

1.6 使用外接資料來源啟動叢集

使用conf目錄下的nacos-mysql.sql指令碼初始化nacos資料庫。

1. 資料庫名稱可以隨意,最終要配置到url裡。
2. 最好為資料庫獨立建立使用者。
3. mysql資料庫可以並行多個例項。nacos應該可以同步寫入,未測試。
4. 如果是單資料庫例項,建議做好主從備份。

資料庫配置支援多資料來源。通過db.num

來指定資料來源個數,db.url.index為對應的資料庫的連結。db.user以及db.password沒有設定index時,所有的連結都以db.userdb.password用作認證。如果不同資料來源的使用者名稱稱或者使用者密碼不一樣時,可以通過符號,來進行切割,或者指定db.user.index,db.user.password來設定對應資料庫連結的使用者或者密碼。需要注意的是,當db.userdb.password沒有指定下標時,因為當前機制會根據,進行切割。所以當用戶名或者密碼存在,時,會把,切割後前面的值當成最後的值進行認證,會導致認證失敗。

修改application.properties

#*************** Config Module Related Configurations ***************#
### If use MySQL as datasource:
spring.datasource.platform=mysql

### Count of DB:
db.num=1

### Connect URL of DB:
db.url.0=jdbc:mysql://192.168.48.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=nacos
db.password.0=nacos

二、使用nginx做負載均衡

參考官方的說明:https://nacos.io/zh-cn/docs/cluster-mode-quick-start.html

客戶端連線nacos的時候只能指向一個IP,所以需要額外套一次代理,可以使用任意SLB或VIP的方式。

這裡使用nginx,可以考慮nginx做keepalived。

2.1 nginx的基本配置


#user  nobody;
worker_processes  1;


#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
   
    keepalive_timeout  65;
	  

	upstream balancer {				
		server 192.168.44.10:8848 weight=1 max_fails=2 fail_timeout=10s; 
		server 192.168.44.11:8848 weight=1 max_fails=2 fail_timeout=10s; 
		server 192.168.44.12:8848 weight=1 max_fails=2 fail_timeout=10s; 
	}
	
    server {
       listen       8848;
       server_name  localhost;       
        location / {			
			proxy_pass http://balancer;
			proxy_http_version 1.1;
			proxy_next_upstream http_502 http_504 error timeout invalid_header;							
        }  					
    }

}

2.2 nginx高可用配置

參考
https://www.cnblogs.com/asker009/p/15010773.html