Nacos的詳解及集群的搭建


一、nacos的領域模型划分

1、 namespace

(1)namespace可以進行資源隔離,默認為“public";例如:dev環境的 namespace下的服務是調用不到 prod 的 namespace下的服務;

可以在 ”命名空間“ 管理,如下:

 (2) namespace 的要在配置文件中配置;(namespace的配置要配置 namespace對應的命名空間ID

spring.cloud.nacos.discovery.namespace=cd944310-e786-4670-b7d9-7612d26884c1

配置文件增加namespace之后重啟一下服務,public看不到有服務,dev有注冊的服務;

 2、group 

用作微服務的分組,不同的分組之間微服務不能調通,默認為 “DEFAULT_GROUP”。例如:

交易分組:訂單服務、支付服務;

倉儲分組:庫存服務、物流服務;

物流服務和支付服務實際上在業務之間是沒有交互的,我們可以把他們放在不同的分組中。

3、cluster-name

同一個namespace,同一個group下,不同的 cluster-name 之間是可以相互調用的;

但是我們盡量要避免服務的跨集群調用,因為通常是跨地域部署的,跨地域會有網絡延時,所以要優先保證同一集群調用。(需要使用代碼實現

order-center 的配置文件:

spring:
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.172.20:8848
        # dev環境的命名空間ID
        namespace: cd944310-e786-4670-b7d9-7612d26884c1
        group: pay
        cluster-name: BJ
  application:
    name: order-center

server:
  port:8001

product-center服務的配置文件:

spring:
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.172.20:8848
        # dev環境的命名空間ID
        namespace: cd944310-e786-4670-b7d9-7612d26884c1
        group: pay
        cluster-name: BJ
  application:
    name: product-center

server:
  port: 8002

nacos的服務的存儲格式Map<namespaceId,  Map<group::serviceName, Service>>

4、metadata

元數據,控制其version的版本,可以用於灰度發布;

product-center的配置文件,如下:

spring:
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.172.20:8848
        # dev環境的命名空間ID
        namespace: cd944310-e786-4670-b7d9-7612d26884c1
        group: pay
        cluster-name: NJ
        # V1版本
        metadata:
          version: V1
  application:
    name: product-center

server:
  port: 8002

 二、nacos的集群搭建

nacos的集群模式,官網推薦使用 nginx 來搭建。

注意:Nginx 和 MySQL 都要保證高可用。

 1、安裝 Nginx

解壓安裝參見:Nginx的核心模塊

(1)Nginx解壓安裝之后,修改nginx的配置文件 nginx.conf 文件,修改內容如下:

http {
	upstream nacos-cluster {
             server 192.168.172.1:8849;
            server 192.168.172.1:8850;
            server 192.168.172.1:8851;
         }

	server {
             listen 8847;
            server_name 192.168.172.1;

            location /nacos/ {
                proxy_pass http://nacos-cluster/nacos/;
           }
        }
}

(2)啟動 nginx,進入 nginx 的安裝目錄 /usr/local/nginx/sbin 啟動 nginx;

./nginx 

踩過的坑:nginx中的 upstream后面的名稱不能配置下划線,因為nginx不能識別;若配置了下划線,則訪問會報錯400錯誤;可以將下划線改為中划線;

踩過的坑:nginx中的 upstream后面的名稱不能配置下划線,因為nginx不能識別;若配置了下划線,則訪問會報錯400錯誤;可以將下划線改為中划線;

踩過的坑:nginx中的 upstream后面的名稱不能配置下划線,因為nginx不能識別;若配置了下划線,則訪問會報錯400錯誤;可以將下划線改為中划線;

 

2、安裝 nacos 服務

將解壓的 nacos 拷貝三份出來;

cp -r nacos nacos8849;
cp -r nacos nacos8850;
cp -r nacos nacos8851;

以拷貝出來的 nacos8849 為例;

第一步:修改 nacos8849/conf 目錄下的 application.properties;

server.port=8849

spring.datasource.platform=mysql

# 數據庫實例數量
db.num=1
# 數據庫的連接信息 db.url.0=jdbc:mysql://192.168.172.1:3306/nacos_test?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true db.user=root db.password=123456

第二步: 進入 nacos8849/conf 目錄下,拷貝原來的 cluster.conf.example 為 cluster.conf文件,並修改里面的內容;

192.168.172.1:8849
192.168.172.1:8850
192.168.172.1:8851

這樣, nacos8849 的配置就完成了,nacos8850 和 nacos8851 也做同樣的配置。

啟動 nacos 集群之前要先做一些准備工作。

(1)先創建一個數據庫,數據庫表的腳本在 nacos 的包中的  nacos/conf/nacosmysql.sql ;

(2)需要修改nacos-server的 啟動腳本jvm參數。(虛擬機的內存分配的少,需要修改jvm參數變小)

修改 nacos8849/bin/startup.sh 文件,

 第三步,分別進入 nacos8849、nacos8859、nacos8851 的 bin 目錄,啟動 startup,sh 腳本。

/usr1/nacos/nacos8849/logs/start.out

 3、測試安裝的 nacos

 分別測試登錄地址,如下:

http://192.168.172.1:8849/nacos
http://192.168.172.1:8850/nacos
http://192.168.172.1:8851/nacos

NG測試

http://192.168.172.1:8847/nacos

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM