nacos叢集配置筆記
阿新 • • 發佈:2021-07-14
一、安裝
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.user
和db.password
用作認證。如果不同資料來源的使用者名稱稱或者使用者密碼不一樣時,可以通過符號,
來進行切割,或者指定db.user.index
,db.user.password
來設定對應資料庫連結的使用者或者密碼。需要注意的是,當db.user
和db.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;
}
}
}