系列文章:
總目錄索引:九析帶你輕鬆完爆 istio 服務網格系列教程
目錄
1 前言
2 邀約
3 Circuit breakers 斷路器介紹
4 Circuit breakers 實例
4.1 jiuxi-deploy.yaml
4.2 jiuxi-svc.yaml
4.3 jiuxi-dr.yaml
5 Circuit breakers 實例部署
5.1 Istio 注入
5.2 部署其他資源文件
6 驗證斷路器功能
1 前言
如果你對博客有任何疑問,請告訴我。
2 邀約
你可以從 b 站搜索 “九析”,獲取免費的、更生動的視頻資料:
3 Circuit breakers 斷路器介紹
印象裏,很多年前,居民區靠街有一種門面房。屋子不大,粉色的燈光,開放式的推拉門。門口總是坐着一個美麗的大姐姐,每當我從路邊經過,她都會露出熱情的微笑。“帥哥進來玩啊”。印象中,這是她經常對我說的話。
那時,我還很年輕,還很帥,我覺得她一定是不可救藥地愛上我了,直到有一天我看到了我不願意看到的一幕。
還記得是一個夏日的傍晚,我剛加班完回出租房,路上又經過了她的小屋,大老遠就聽到她溫柔的聲音:“帥哥來玩啊”。連日的工作勞累讓我疲憊不堪,當我終於鼓足勇氣準備接受她的邀請、迎接她的感情時,忽然從身後傳來一個沙啞的聲音:“來了”。我回頭一看,原來是一個民工打扮的人。那一刻,我覺得自己像是被耍了一樣,落荒而逃。
後來,我經常看到有民工模樣的人走進那扇落地窗開拉門,有時有好幾個,每當這個時候,我都會看到小姐姐會把開拉門從裏面鎖好,然後再把厚厚的窗簾放下……
慢慢地,當我社會閱歷豐富,我終於知道了大姐姐的職業,爲人民服務。
而記憶中的推拉門,竟是她一個弱女子面對這個世界的安全保障,是她對過載請求的一種天然防護,就像我經常使用的斷路器一樣。
斷路器是 Istio 提供的一個有用的技術。在微服務設置斷路器可以有效保障微服務的抗操性。比如在斷路器中,你可以設置服務併發連接次數限制或者服務調用失敗次數,一旦達到設置的閾值,斷路器將“跳閘”並停止與該主機的進一步連接。
因爲斷路器適用於負載平衡池中“真正”的服務網格(Istio 資源注入後的 Pod),因此可以在 Destination Rule 配置斷路器,而 Destination Rule 最終會被翻譯成 Envoy 的配置,然後作用在 Envoy 上。這樣當流量進入到被 Istio 注入後的 Pod,流量就會被 Envoy 攔截,這樣斷路器就會針對流量發生作用。
4 Circuit breakers 實例
本實例用到 3 個資源文件:
# Istio 注入後的目標 Pod 資源
jiuxi-deploy.yaml
# Istio 目標規則文件
jiuxi-dr.yaml
# Pod 資源的對外服務
jiuxi-svc.yaml
4.1 jiuxi-deploy.yaml
4.2 jiuxi-svc.yaml
該文件是對上面 deploy 文件的一個 service 暴露:
4.3 jiuxi-dr.yaml
詳細說明如下:
http1MaxPendingRequests: http 請求掛起狀態的最大請求數
maxRequestsPerConnection: 一定時間內限制對後端服務發起的最大請求數,如果超過了此配置,就會出現限流。
outlierDetection.consecutiveErrors: 拒絕連接的最大失敗次數
outlierDetection.interval: 觸發熔斷的時間間隔,在 interval 時間間隔內,達到 consecutiveErrors 即觸發熔斷
outlierDetection.baseEjectionTime: 熔斷時長
maxEjectionPercent: 熔斷連接最大百分比
5 Circuit breakers 實例部署
5.1 Istio 注入
對 jiuxi-deploy.yaml 文件進行 Istio 注入:
istioctl kube-inject -f jiuxi-deploy.yaml | kubectl apply -f -
執行成功後的結果如下:
發現 nginx 容器個數已經是 2 個,就說明注入成功了。
5.2 部署其他資源文件
直接部署 jiuxi-svc.yaml 和 jiuxi-dr.yaml:
kubectl apply -f jiuxi-dr.yaml
kubectl apply -f jiuxi-svc.yaml
自此,整個實例部署成功。
6 驗證斷路器功能
使用 Istio 的負載測試工具 Fortio,有關 Fortio 的安裝和使用,請參考我上章的內容,分分鐘容易到爆。
執行如下命令:
fortio load -c 10 -n 50 -qps 0 http://10.103.150.90 (CLUSTER_IP:PORT)
執行結果如下圖所示:
從執行結果來看,有 27 個報錯。 說明斷路器生效。
自此,九析帶你輕鬆完爆 Fortio、Circuit breakers 斷路器功能。