Spring Cloud Alibaba之nacos 叢集搭建
什麼是 Nacos
Nacos 致力於幫助您發現、配置和管理微服務。Nacos 提供了一組簡單易用的特性集,幫助您快速實現動態服務發現、服務配置、服務元資料及流量管理。
Nacos 幫助您更敏捷和容易地構建、交付和管理微服務平臺。 Nacos 是構建以“服務”為中心的現代應用架構 (例如微服務正規化、雲原生正規化) 的服務基礎設施。
nacos是ali開源的微服務註冊中心,其實也是配置中心,詳細說明參見:https://nacos.io/zh-cn/docs/what-is-nacos.html。
一 nacos下載,當前最穩定版本。
原始碼下載地址:https://github.com/alibaba/nacos/releases
百度雲提取地址:(安排)
連結:https://pan.baidu.com/s/1Nbdq54w6_FZanSj5sICD1w
提取碼:1122
由於nacos是用java開發的,執行時需要JRE環境,配置JDK略。
二 使用mysql 作為註冊中心的資料持久化
下載好nacos server後,解壓可以發現檔案目錄如下:
這裡我們使用mysql做為nacos資料持久化的資料來源。
建立nacos叢集使用的mysql資料庫
三 叢集配置
由於我們是要使用叢集的方式來使用nacos,注意:nacos是預設以叢集的方式啟動的。
1 修改 /conf/application.properties
2 新增叢集配置 在你需要啟動的nacos的conf/ 新增 cluster.conf 將需要啟動的節點的資訊新增進來,ip:port的方式或者域名的方式也可
3 修改節點啟動的環境變數。
通過檢視啟動指令碼發現,cluster 方式啟動時,nacos佔用的記憶體為 2g,可以修改得比較小一些,方便測試。這裡修改為跟standalone 一樣的配置啟動。方便測試。
centos啟動方式:
在終端執行 :到/bin目錄下,分別啟動nacos_1/nacos_2/nacos_3 服務,直接執行./startup.sh
windows啟動方式:
四 叢集的正確使用方式
1 訪問nacos後臺檢視。
2 cloud微服務專案連線Nacos叢集
##指定當前服務埠號 #server: # port: 10020 spring: application: #指定當前服務名字 name: app-login cloud: nacos: #連線Nacos叢集 server-addr: 127.0.0.1:8818,127.0.0.1:8828,127.0.0.1:8838 # discovery: # # nacos服務端位置(註冊中心服務端地址的實際使用) # server-addr: ${spring.cloud.nacos.server-addr} config: # server-addr: ${spring.cloud.nacos.server-addr} file-extension: yml
這種方式最大的問題是,當註冊中心有新的節點上線後,修改起來很麻煩,所以可以使用nginx 做負載均衡,方便後續節點的擴充套件。
3.使用nginx做為前置負載均衡來連線nacos 叢集
nginx的配置為:
1 server { 2 listen 80; 3 listen [::]:80; 4 server_name localhost; 5 location / { 6 root /usr/share/nginx/html; 7 index index.html index.htm; 8 } 9 10 error_page 500 502 503 504 /50x.html; 11 location = /50x.html { 12 root /usr/share/nginx/html; 13 } 14 15 } 16 upstream cluster{ 17 server 127.0.0.1:8818; 18 server 127.0.0.1:8828; 19 server 127.0.0.1:8838; 20 } 21 22 server { 23 listen 8848; 24 server_name localhost; 25 #charset koi8-r; 26 27 #access_log logs/host.access.log main; 28 29 location / { 30 # root html; 31 # index index.html index.htm; 32 proxy_pass http://cluster; 33 } 34 }
這時springcloud 的連線配置可以直接更改為:
1 ##指定當前服務埠號 2 #server: 3 # port: 10020 4 spring: 5 application: 6 #指定當前服務名字 7 name: app-name 8 cloud: 9 nacos: 10 #更改為nginx埠 11 server-addr: 127.0.0.1:8848 12 config: 13 file-extension: yml半斤八兩開始寫BLOG了