第三十八章 九析帶你輕鬆完爆 Istio - Fortio、Circuit breakers 斷路器

系列文章:


總目錄索引:九析帶你輕鬆完爆 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 前言

        如果你對博客有任何疑問,請告訴我。

1.png


2 邀約

        你可以從 b 站搜索 “九析”,獲取免費的、更生動的視頻資料:

clipboard2.png


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

spacer.gifclipboard3.png

4.2 jiuxi-svc.yaml

        該文件是對上面 deploy 文件的一個 service 暴露:

spacer.gifclipboard4.png

4.3 jiuxi-dr.yaml

clipboard5.png

        詳細說明如下:

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 -

        執行成功後的結果如下:spacer.gifclipboard6.png

        發現 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)

clipboard7.png

        執行結果如下圖所示:

clipboard8.png

        從執行結果來看,有 27 個報錯。 說明斷路器生效。

        自此,九析帶你輕鬆完爆 Fortio、Circuit breakers 斷路器功能。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章