首頁 > 軟體

Rainbond網路治理外掛ServiceMesh官方檔案說明

2022-04-20 19:00:30

ServiceMesh網路治理外掛

5.1.5版本後,Rainbond預設提供了綜合網路治理外掛(同時處理入站和出站網路)和出站網路治理外掛兩個外掛可用。 網路治理外掛工作在與業務容器同一個網路空間之中,可以監聽一個分配埠,攔截入站的業務流量進行限流、斷路等處理再將流量負載到業務服務的實際監聽埠之上。

同時也可以工作在出站方向,業務服務需要存取上游服務時,通過存取本地出站治理外掛監聽的埠,進行流量路由、斷路、安全驗證等處理,再將流量負載到尚有服務的主機之上。 

對於外掛的開發者來說需要關注如下兩點:

  • 入站治理外掛需要根據系統分配的埠轉發規則進行流量轉發,比如UI服務本身是監聽的8080埠,這是不能改變的,但是我們可以改變從邊緣閘道器存取UI服務時的存取埠,因此Rainbond應用執行時為動態為入站網路治理外掛生成監聽埠對,比如下述設定:
"base_ports":[
      {
          "service_alias":"gre484d9",
          "service_id":"9703228e9b42cde3e3a72f4826e484d9",
          "port":8080,
          "listen_port":65301,
          "protocol":"http",
          "options":{
              "LIMIT_DOMAIN":"limit.common",
              "OPEN_LIMIT":"NO"
          }
      }
  ]

外掛執行時會自動注入DISCOVER_URL變數,通過此變數值的地址可以動態獲取到如上的設定資訊,入站網路治理外掛必須通過以上設定來監聽65301埠,將流量負載到127.0.0.1:8080埠。

  • 出站治理外掛不存在埠對映的問題,出站治理外掛根據下屬的動態設定資訊生成本地監聽負載到遠端地址。
"base_services":[
        {
            "service_alias":"gre484d9",
            "service_id":"9703228e9b42cde3e3a72f4826e484d9",
            "depend_service_alias":"grcff92d",
            "depend_service_id":"c81923991ff2428082a5d9d478cff92d",
            "port":5000,
            "protocol":"http",
            "options":{
                "BaseEjectionTimeMS":"30000",
                "ConsecutiveErrors":"5",
                "Domains":"todos",
                "Headers":"",
                "IntervalMS":"10",
                "MaxActiveRetries":"5",
                "MaxConnections":"10",
                "MaxEjectionPercent":"20",
                "MaxPendingRequests":"1024",
                "MaxRequests":"1024",
                "MaxRequestsPerConnection":"",
                "PROXY":"YES",
                "Prefix":"/",
                "Weight":"80"
            }
        }
]        

使用上述原生設定發現和服務發現來讓自定義外掛工作,外掛層面需要做較多的資料適配工作。Rainbond同時提供了基於envoy XDS(grpc)規範的動態設定發現服務,在外掛中通過XDS_HOST_IP XDS_HOST_PORT兩個變數來獲取XDS服務的地址。

對用使用者來說外掛層的網路治理對於業務層是完全透明的,所有有依賴關係的分散式服務類似於執行同一臺主機一樣。

外掛實踐

綜合網路治理外掛

預設提供的綜合網路治理外掛基於envoy 1.9.0實現,綜合網路外掛同時實現了入站方向的治理和出站方向的治理,提供以下設定引數:

入站方向

全域性限流:

  • OPEN_LIMIT 開啟全域性限流功能,全域性限流功能依賴於第三方的限流服務,比如 ratelimit , 當前服務需要依賴ratelimit服務,並設定RATE_LIMIT_SERVER_HOST和RATE_LIMIT_SERVER_PORT環境變數。
  • LIMIT_DOMAIN 限流鏈路的domain key,與全域性限流服務的設定對應

斷路:

  • MaxConnections 最大連線數,Http協定時僅適用於http1.1,TCP協定時設定最大TCP連線數。
  • MaxRequests 並行請求數,適用於HTTP協定
  • MaxPendingRequests 最大等待請求數,適用於HTTP協定
  • MaxActiveRetries 最大重試次數,適用於HTTP協定
  • MaxRequestsPerConnection 單連線最大請求數,適用於HTTP協定,支援http1.1 和http2

出站方向

動態路由(HTTP協定):

Domains

請求域名,對於http協定的上游服務,支援基於域名路由並複用80埠。

Prefix

請求Path路徑的字首,基於字首來路由不同的上游服務。

Headers

請求頭,基於請求頭的路由不同的上游服務。

Weight

權重,基於不同的權重來將流量分發到不同的上游服務。

斷路(面向連線):

  • MaxConnections 最大連線數,Http協定時僅適用於http1.1,TCP協定時設定最大TCP連線數。
  • MaxRequests 並行請求數,適用於HTTP協定
  • MaxPendingRequests 最大等待請求數,適用於HTTP協定
  • MaxActiveRetries 最大重試次數,適用於HTTP協定
  • MaxRequestsPerConnection 單連線最大請求數,適用於HTTP協定,支援http1.1 和http2

斷路(面向上游主機):

  • ConsecutiveErrors 上游服務主機發生500錯誤的被逐出的次數。
  • BaseEjectionTimeMS 主機被逐出的基礎時間,及第一次被逐出的時間,如果被逐出n次,時間則為n*BaseEjectionTimeMS
  • MaxEjectionPercent 被逐出主機的最大比例,如果設定為100則允許全量逐出。
  • IntervalMS 分析主機是否應該被逐出的時間間隔
  • HealthyPanicThreshold 進入恐慌模式的比例,預設是50

出站網路治理外掛

當服務無需使用入站方向的治理功能時,可只使用出站治理外掛,設定引數與綜合治理外掛的出站方向一致。

以上就是Rainbond網路治理外掛ServiceMesh官方檔案說明的詳細內容,更多關於Rainbond網路治理外掛ServiceMesh官方檔案的資料請關注it145.com其它相關文章!


IT145.com E-mail:sddin#qq.com