關於Nacos已經展開了四篇入門文章:
初探Nacos(二)-- SpringCloud使用Nacos的服務注冊與發現
初探Nacos(三)-- SpringBoot下整合Dubbo和Nacos
初探Nacos(四)-- SpringBoot下使用Nacos作為配置中心
今天,我們開始進一步探索Nacos的使用,分布式集群模式部署Nacos。(另外,目前的Nacos1.0.0穩定版已發布,目前測試暫沒有發現問題,我們重新使用1.0.0來演示。)
當然,我們仍然參考官方文檔:集群部署說明,由於集群模式需要用到數據庫,此處我們默認你已安裝好Mysql數據庫, 然后我們到https://github.com/alibaba/nacos/releases下載最新的安裝包。
wget https://github.com/alibaba/nacos/releases/download/1.0.0/nacos-server-1.0.0.zip
復制代碼
unzip nacos-server-1.0.0.zip
cd nacos
cp conf/cluster.conf.example conf/cluster.conf
需要配置3個或3個以上節點,生產環境建議分布在多台服務器上,目前咱們僅在一台機器上測試。
vi conf/cluster.conf
127.0.0.1:8848
127.0.0.1:8849
127.0.0.1:8850
復制代碼
然后進入mysql,創建名為nacos_config的數據庫 ,導入config/nacos-mysql.sql。(此處測試暫時使用單機數據庫,建議生產環境采用主從等高可模式)
建完數據庫完后,官方文檔上默認使用的是內嵌的cmdb數據庫,沒有Mysql數據庫的配置,有點讓人懵逼的,百度了一下,找到了配置。
vi conf/application.properties
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true db.user=數據庫用戶名 db.password=數據密碼 復制代碼
另外,由於我們在一台機器上跑三個,因此啟動腳本和關閉腳本需要做一點修改。
cp bin/startup.sh bin/startup-port.sh
vi bin/startup-port.sh
export MODE="cluster" export FUNCTION_MODE="all" export SERVER_PORT="8848" while getopts ":m:f:p:" opt do case $opt in m) MODE=$OPTARG;; f) FUNCTION_MODE=$OPTARG;; p) SERVER_PORT=$OPTARG;; ?) echo "Unknown parameter" exit 1;; esac done JAVA_OPT="${JAVA_OPT} -Dserver.port=${SERVER_PORT}" 復制代碼
cp bin/shutdown.sh bin/shutdown-port.sh
vi bin/shutdown-port.sh
PORT=$1 if [ ! $PORT ]; then echo "please select stop port!" >&2 exit 1 fi pid=`ps ax | grep -i 'nacos.nacos' |grep java |grep ${PORT} | grep -v grep | awk '{print $1}'` 復制代碼
啟動方式如下:
sh bin/startup-port.sh -p 8848
sh bin/startup-port.sh -p 8849
sh bin/startup-port.sh -p 8850
關閉方式如下:
sh bin/shutdown-port.sh 8848
sh bin/shutdown-port.sh 8849
sh bin/shutdown-port.sh 8850
啟動后就可以在瀏覽器打開 http://127.0.0.1:8848/nacos/,http://127.0.0.1:8849/nacos/,http://127.0.0.1:8850/nacos/ 即可看到控制台,默認用戶名/密碼為nacos/nacos。
附1: 可通過Nginx配置只訪問一個地址負載均衡到三個節點上:
upstream nacos-cluster{
server 127.0.0.1:8848;
server 127.0.0.1:8849;
server 127.0.0.1:8850;
}
復制代碼
附2:集群模式下控制台的用戶名密碼都存在了數據庫的users表,用戶名直接修改就行,密碼需要用org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder加密。
然后我們就可以在演示項目里嘗試,只需在application.properties里將配置由單機模式改成集群模式:
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848,127.0.0.1:8849,127.0.0.1:8850
復制代碼
配置中心的配置需要修改如下:
nacos.config.server-addr=127.0.0.1:8848,127.0.0.1:8849,127.0.0.1:8850
復制代碼
dubbo的配置需要修改如下:
dubbo.registry.address=nacos://127.0.0.1:8848?backup=127.0.0.1:8849,127.0.0.1:8850
復制代碼
啟動項目后,可以測試到服務注冊與發現、配置中心等均能像單機模式一樣正常使用。我們可以嘗試關閉其中一個或兩個nacos,仍然不影響系統的正常運行。
轉自:https://juejin.im/post/5cbad19ef265da038b20165e
