您好,登錄后才能下訂單哦!
這篇文章主要講解了“Rainbond網絡治理插件ServiceMesh怎么用”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Rainbond網絡治理插件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怎么用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。