系列文章:
總目錄索引:九析帶你輕鬆完爆 istio 服務網格系列教程
目錄
1 前言
2 邀約
3 介紹
4 路由策略
5 樣例說明
1 前言
如果你對博客有任何疑問,請告訴我。
2 邀約
你可以從 b 站搜索 “九析”,獲取免費的、更生動的視頻資料:
3 介紹
上章展示了 destination rule 一個實例。
destination rules 是 Istio 流量路由的關鍵功能,它不能獨自使用,必須跟 Virtual Service 共同發揮作用。當 destination rules 跟 virtual service 共同使用的時候,virtual service 決定將流量路由到邏輯地址,而 destination rules 則決定流量路由到物理地址。
virtual service 跟 destination rules 路由關係就像變量到內存的地址映射一樣,destination 代表內存實際地址,而 virtual service 作用就像程序的指針。
destination rules 通常用在微服務的版本分組上(例如可以通過 version 標籤將微服務進行分組)。通過 destination rules 的分組規則可以實現將流量路由到服務的不同版本中,進而實現類似灰度、金絲雀、藍綠等版本分流的策略。
destination rules 不僅可以決定把流量路由到何處,還可以制定如何路由流量(比如是輪詢路由流量,還是隨機路由流量等等)。有關 destination rules 選項可以參考 Destination Rule 指南。
4 路由策略
默認情況下,Istio 使用輪詢的負載均衡路由策略(round-robin),也就是說服務所有實例按順序接收請求。當然 Istio 也支持如下的模型,這些模型都可以通過在 destination rule 中進行指定:
Random:請求被隨機分配給服務的實例
Weighted:請求基於權重被分配給服務的實例
Least requests:請求被分配給服務最少被訪問的實例
5 樣例說明
Istio 官方給出的 destination rule 樣例如下:
上例 destination rule 中指定了 subsets,子集是根據 version 來定義。注意,這裏 labels 內容可以自由定義,不一定非要是 version。其中的 trafficPolicy 就是流量路由到服務所有實例的策略(比如隨機、輪詢、按權重、最少訪問等)。此外針對 v2 這個 subsets,它的路由策略比較特殊,它覆蓋了默認的 RANDOM 方式,而是直接採用了 ROUND_ROBIN 方式。