真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Istio熔斷器怎么使用

這篇文章主要講解了“Istio熔斷器怎么使用”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Istio熔斷器怎么使用”吧!

創(chuàng)新互聯(lián)成立于2013年,先為興安等服務(wù)建站,興安等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為興安企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

前言

Istio因靈活的可觀察性和安全的服務(wù)間通信受到了贊許。然而,其他更重要的功能才真正使得Istio成為了服務(wù)網(wǎng)格里的瑞士軍刀,當(dāng)遇到運(yùn)行時長、延遲和錯誤率等SLO問題時,服務(wù)間的流量管理能力是至關(guān)重要的。

在今年早些時候發(fā)布 Istio operator 時,我們的目標(biāo)(除了管理Istio的安裝和升級)是為這些出色的流量路由特性提供支持,同時使所有的功能都更加易用。最后,我們創(chuàng)建了一個簡單且自動化的服務(wù)網(wǎng)格Backyards,它在Istio operator之上提供了管理UI、CLI 和GraphQL API的能力。Backyards集成到了Banzai Cloud的容器管理平臺 Pipeline中,也可以作為一個單一的產(chǎn)品獨(dú)立工作。當(dāng)然,將Backyards與Pipeline一起使用會為用戶提供特別的好處(比如在多云和混合云環(huán)境中管理應(yīng)用程序),Backyards也可以被用于任何Kubernetes的安裝環(huán)境。

熔斷:失敗是一個選項

在微服務(wù)架構(gòu)中,服務(wù)可能會用不同的語言實現(xiàn)并部署在多個節(jié)點或集群上,具有不同的響應(yīng)時間或故障率。如果服務(wù)成功(并且及時地)響應(yīng)了請求,那么它的性能就算是令人滿意的。但現(xiàn)實情況并非如此,下游客戶端應(yīng)該在上游服務(wù)過于緩慢時受到保護(hù)。反之,上游服務(wù)也必須被保護(hù),以免被積壓的請求拖垮。在多客戶端下情況會更加復(fù)雜,并可能導(dǎo)致整個基礎(chǔ)設(shè)施出現(xiàn)一系列的連鎖故障。這一問題的解決方案是采用經(jīng)過時間檢驗的熔斷器模式。

一個熔斷器可以有三種狀態(tài):關(guān)閉、打開和半開,默認(rèn)情況下處于關(guān)閉狀態(tài)。在關(guān)閉狀態(tài)下,無論請求成功或失敗,到達(dá)預(yù)先設(shè)定的故障數(shù)量閾值前,都不會觸發(fā)熔斷。而當(dāng)達(dá)到閾值時,熔斷器就會打開。當(dāng)調(diào)用處于打開狀態(tài)的服務(wù)時,熔斷器將斷開請求,這意味著它會直接返回一個錯誤,而不去執(zhí)行調(diào)用。通過在客戶端斷開下游請求的方式,可以在生產(chǎn)環(huán)境中防止級聯(lián)故障的發(fā)生。在經(jīng)過事先配置的超時時長后,熔斷器進(jìn)入半開狀態(tài),這種狀態(tài)下故障服務(wù)有時間從其中斷的行為中恢復(fù)。如果請求在這種狀態(tài)下繼續(xù)失敗,則熔斷器將再次打開并繼續(xù)阻斷請求。否則熔斷器將關(guān)閉,服務(wù)將被允許再次處理請求。

Istio熔斷器怎么使用

Istio中的熔斷

Istio的 熔斷 可以在 流量策略 中配置。Istio的 自定義資源Destination Rule里,TrafficPolicy字段下有兩個和熔斷相關(guān)的配置: ConnectionPoolSettings 和 OutlierDetection。

ConnectionPoolSettings可以為服務(wù)配置連接的數(shù)量。OutlierDetection用來控制從負(fù)載均衡池中剔除不健康的實例。

例如,ConnectionPoolSettings控制請求的最大數(shù)量,掛起請求,重試或者超時;OutlierDetection 設(shè)置服務(wù)被從連接池剔除時發(fā)生錯誤的請求數(shù),可以設(shè)置最小逐出時間和最大逐出百分比。有關(guān)完整的字段列表,請參考文檔.

Istio在底層使用了Envoy的熔斷特性。

讓我們來看看Destination Rule中有關(guān)熔斷的配置:

apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: notifications
spec:
  host: notifications
  trafficPolicy:
    connectionPool:
      tcp:
        maxConnections: 1
      http:
        http1MaxPendingRequests: 1
        maxRequestsPerConnection: 1
    outlierDetection:
      consecutiveErrors: 1
      interval: 1s
      baseEjectionTime: 3m
      maxEjectionPercent: 100

使用ConnectionPoolSettings字段中的這些設(shè)置,在給定的時間內(nèi)只能和notifications 服務(wù)建立一個連接:每個連接最多只能有一個掛起的請求。如果達(dá)到閾值,熔斷器將開始阻斷請求。

OutlierDetection部分的設(shè)置用來檢查每秒調(diào)用服務(wù)是否有錯誤發(fā)生。如果有,則將服務(wù)從負(fù)載均衡池中逐出至少三分鐘(100%最大彈出百分比表示,如果需要,所有的服務(wù)實例都可以同時被逐出)。

在手動創(chuàng)建Destination Rule資源時有一件事需要特別注意,那就是是否為該服務(wù)啟用了mTLS。如果是的話,還需要在Destination Rule中設(shè)置如下字段,否則當(dāng)調(diào)用movies服務(wù)時,調(diào)用方可能會收到503錯誤:

trafficPolicy:
   tls:
  mode: ISTIO_MUTUAL

還可以為特定namespace 或特定服務(wù)啟用全局的mTLS。你應(yīng)該了解這些設(shè)置以便確定是否把trafficPolicy.tls.mode設(shè)置為 ISTIO_MUTUAL。更重要的是,當(dāng)你試圖配置一個完全不同的功能(例如熔斷)時,很容易忘記設(shè)置此字段。

提示:在創(chuàng)建Destination Rule前總是考慮mTLS!

為了觸發(fā)熔斷,讓我們同時從兩個連接來調(diào)用 notifications服務(wù)。maxConnections字段被設(shè)置為1。這時應(yīng)該會看到503與200的響應(yīng)同時到達(dá)。

當(dāng)一個服務(wù)從客戶端接收到的負(fù)載大于它所能處理的負(fù)載(如熔斷器中配置的那樣),它會在調(diào)用之前返回503錯誤。這是防止錯誤級聯(lián)的一種方法。

監(jiān)控

在生產(chǎn)環(huán)境中必須要監(jiān)控你的服務(wù),以便得到通知并能夠在系統(tǒng)發(fā)生錯誤時進(jìn)行檢查。因此,如果你已經(jīng)為你的服務(wù)配置了一個熔斷器,你就會想知道它什么時候跳閘;熔斷器攔截了百分之多少的請求;何時觸發(fā),來自哪個下游客戶端?如果能夠回答這些問題,你就可以確定熔斷器是否工作正常,并根據(jù)需要微調(diào)配置,或者優(yōu)化服務(wù)來處理額外的并發(fā)請求。

提示:如果你繼續(xù)閱讀,可以在Backyards UI中看到和配置所有的這些設(shè)置。

讓我們看看怎樣在Istio里確定熔斷器跳閘:

熔斷器跳閘時的響應(yīng)碼是503,因此你無法僅根據(jù)該響應(yīng)與其他的503錯誤區(qū)分開來。在Envoy中,有一個計數(shù)器叫upstream_rq_pending_overflow,它記錄了熔斷且失敗的請求總數(shù)。如果為你的服務(wù)深入研究Envoy的統(tǒng)計數(shù)據(jù)就可以獲得這些信息,但這并不容易。

除了響應(yīng)代碼,Envoy還返回響應(yīng)標(biāo)志 ,并且存在一個專用響應(yīng)標(biāo)志來表示熔斷器跳閘:UO。如果這個標(biāo)志只能通過Envoy的日志獲得,這將不會特別有用。幸運(yùn)的是,它在Istio中實現(xiàn)了,因此響應(yīng)標(biāo)志在Istio指標(biāo)中是可用的并且能被Prometheus獲取到。

熔斷器的跳閘可以像這樣查詢到:

sum(istio_requests_total{response_code="503", response_flags="UO"}) by (source_workload, destination_workload, response_code)

Backyards的熔斷更簡單

使用Backyards時,你不需要手動編輯Destination Rules來設(shè)置熔斷。可以通過一個方便的UI界面或者(如果你愿意的話)是Backyards CLI 命令行工具來達(dá)到相同的結(jié)果。

不必?fù)?dān)心由于忘記把trafficPolicy.tls.mode 設(shè)置為 ISTIO_MUTUAL而配錯了Destination Rules。Backyards會為你解決這個問題;它會找到啟用了mTLS的服務(wù)并相應(yīng)地設(shè)置上述字段。

上面只是Backyards驗證特性的一個例子,這能避免你設(shè)置錯誤。后面還有更多的特性。

在此之上,你可以看到服務(wù)和請求的可視化界面和活動儀表板,因此可以輕松地確定有多少請求被熔斷器觸發(fā),以及它來自哪個調(diào)用者和何時觸發(fā)。

熔斷實戰(zhàn)

創(chuàng)建一個集群

首先,我們需要一個Kubernetes集群。

我通過Pipeline platform的免費(fèi)開發(fā)版本在GKE上創(chuàng)建了一個Kubernetes集群。如果你也想這樣做,可以在我們支持的五個云提供商或使用Pipeline在本地創(chuàng)建集群。否則,你需要提供自己的Kubernetes集群。

安裝BACKYARDS

在一個新集群安裝Istio,Backyards和demo應(yīng)用的最簡單的辦法是使用Backyards CLI。

你只需要執(zhí)行下面的命令(集群必須設(shè)置了KUBECONFIG):

$ backyards install -a --run-demo

該命令首先使用我們開源的Istio operator安裝Istio,然后安裝Backyards和demo應(yīng)用程序。安裝完成后,Backyards UI將自動打開并向demo應(yīng)用發(fā)送一些流量。通過這個簡單的命令,你可以看到Backyards在幾分鐘內(nèi)啟動了一個全新的Istio集群!試試吧!

你也可以按順序執(zhí)行所有這些步驟。Backyards需要一個Istio集群——如果沒有,可以通過$ backyards istio install安裝。一旦安裝了Istio,就可以使用$ backyards install安裝Backyards。最后,使用$ backyards demoapp install部署demo應(yīng)用程序。

提示:Backyards是Pipeline平臺的核心組件——可以嘗試開發(fā)者版本(Service Mesh 標(biāo)簽頁)。

使用BACKYARDS UI創(chuàng)建熔斷

配置熔斷器

你不需要手動創(chuàng)建或編輯Destination Rule,可以很容易的在UI界面中改變?nèi)蹟嗟呐渲谩W屛覀兿葎?chuàng)建一個demo。

正如你將看到的,Backyards(與Kiali相比)不僅是為可觀察性構(gòu)建的web UI,而且是具有豐富功能的服務(wù)網(wǎng)格管理工具,支持單集群和多集群,并且具有強(qiáng)大的CLI和GraphQL API。

Istio熔斷器怎么使用

查看熔斷器設(shè)置

你不需要通過Destination Rule(例如通過kubectl)來查看熔斷器的配置,當(dāng)你點擊notification 服務(wù)圖標(biāo)并切換SHOW CONFIGS滑塊時,可以在Backyards UI的右側(cè)看到它們。

Istio熔斷器怎么使用

監(jiān)控熔斷器

根據(jù)剛才的設(shè)置,當(dāng)兩個連接同時產(chǎn)生流量時,熔斷器將發(fā)出跳閘請求。在Backyards UI中,你將看到圖形的邊緣出現(xiàn)了紅色。如果單擊該服務(wù),你將了解有關(guān)錯誤的更多信息,并將看到兩個專門用來顯示熔斷器跳閘的實時Grafana儀表板。

第一個儀表板展示了熔斷器觸發(fā)的總請求的百分比。當(dāng)沒有熔斷器錯誤,而你的服務(wù)工作正常,這張圖將顯示0%。否則,你將能夠立即看到有多少請求被熔斷器觸發(fā)。

第二個儀表板提供了由源熔斷器引起的跳閘故障。如果沒有發(fā)生跳閘,則此圖中不會出現(xiàn)尖峰。否則,你將看到哪個服務(wù)導(dǎo)致了跳閘,何時跳閘,以及跳閘次數(shù)??梢酝ㄟ^此圖來追蹤惡意的客戶端。

Istio熔斷器怎么使用

這些是實時的Grafana儀表盤,用于顯示熔斷相關(guān)的信息。在默認(rèn)情況下Backyards集成了Grafana和Prometheus——還有更多的儀表板可以幫助你深入查看服務(wù)的指標(biāo)。

移除熔斷器配置

可以通過 Remove 按鈕很容易的移除熔斷配置。

Backyards UI 的熔斷實戰(zhàn)

這個視頻總結(jié)了所有這些UI操作(譯者注:視頻來自YouTube)

使用BACKYARDS-CLI創(chuàng)建熔斷

從經(jīng)驗來看,可以從UI界面做的事一定也可以通過 Backyards CLI 命令行工具完成。

配置熔斷

讓我們再做一次創(chuàng)建熔斷的測試,這次通過CLI命令行。

可以以交互模式進(jìn)行:

$ backyards r cb set backyards-demo/notifications
? Maximum number of HTTP1/TCP connections 1
? TCP connection timeout 3s
? Maximum number of pending HTTP requests 1
? Maximum number of requests 1024
? Maximum number of requests per connection 1
? Maximum number of retries 1024
? Number of errors before a host is ejected 1
? Time interval between ejection sweep analysis 1s
? Minimum ejection duration 3m
? Maximum ejection percentage 100
INFO[0043] circuit breaker rules successfully applied to 'backyards-demo/notifications'
Connections  Timeout  Pending Requests  Requests  RPC  Retries  Errors  Interval  Ejection time  percentage
1            3s       1                 1024      1    1024     1       1s        3m             100

或者用非交互模式,指定要設(shè)置的值:

$ backyards r cb set backyards-demo/notifications --non-interactive --max-connections=1 --max-pending-requests=1 --max-requests-per-connection=1 --consecutiveErrors=1 --interval=1s --baseEjectionTime=3m --maxEjectionPercent=100
Connections  Timeout  Pending Requests  Requests  RPC  Retries  Errors  Interval  Ejection time  percentage
1            3s       1                 1024      1    1024     5       1s        3m             100

命令執(zhí)行后,熔斷配置會立刻獲取到并顯示出來。

查看熔斷設(shè)置

你可以用下面的命令通過namespace來列出熔斷的設(shè)置:

$ backyards r cb get backyards-demo/notifications
  Connections  Timeout  Pending Requests  Requests  RPC  Retries  Errors  Interval  Ejection time  percentage
  1            3s       1                 1024      1    1024     5       1s        3m             100

默認(rèn)情況結(jié)果以表格的方式顯示,也支持JSON或者YMAL格式:

$ backyards r cb get backyards-demo/notifications -o json
  {
    "maxConnections": 1,
    "connectTimeout": "3s",
    "http1MaxPendingRequests": 1,
    "http2MaxRequests": 1024,
    "maxRequestsPerConnection": 1,
    "maxRetries": 1024,
    "consecutiveErrors": 5,
    "interval": "1s",
    "baseEjectionTime": "3m",
    "maxEjectionPercent": 100
  }

$ backyards r cb get backyards-demo/notifications -o yaml
  maxConnections: 1
  connectTimeout: 3s
  http1MaxPendingRequests: 1
  http2MaxRequests: 1024
  maxRequestsPerConnection: 1
  maxRetries: 1024
  consecutiveErrors: 5
  interval: 1s
  baseEjectionTime: 3m
  maxEjectionPercent: 100
監(jiān)控熔斷

要從CLI中查看和前面Grafana UI界面類似的儀表板,可以通過從多個連接調(diào)用服務(wù)來觸發(fā)跳閘,執(zhí)行命令:

$ backyards r cb graph backyards-demo/notifications

可以看到類似下面的結(jié)果:

Istio熔斷器怎么使用

移除熔斷配置

移除熔斷執(zhí)行下面的命令:

$ backyards r cb delete backyards-demo/notifications
INFO[0000] current settings
Connections  Timeout  Pending Requests  Requests  RPC  Retries  Errors  Interval  Ejection time  percentage
1            3s       1                 1024      1    1024     5       1s        3m             100
? Do you want to DELETE the circuit breaker rules? Yes
INFO[0008] circuit breaker rules set to backyards-demo/notifications successfully deleted

使用下面的命令驗證是否成功:

$ backyards r cb get backyards-demo/notifications
  INFO[0001] no circuit breaker rules set for backyards-demo/notifications

使用BACKYARDS GRAPHQL API創(chuàng)建熔斷

Backyards由多個組件組成,比如Istio、Banzai Cloud的Istio operator,多集群Canary release operator,以及多個后端基礎(chǔ)設(shè)施。所有的這些都在Backyards’ GraphQL API的后面。

Backyards UI和CLI都使用Backyards的GraphQL API,它將在9月底與GA版本一起發(fā)布。用戶將很快能夠使用我們的工具來管理Istio和構(gòu)建他們自己的客戶端。

清理

從你的集群移除demo應(yīng)用、Backyards和Istio,執(zhí)行下面的命令,它將按順序卸載這些組件:

$ backyards uninstall -a

感謝各位的閱讀,以上就是“Istio熔斷器怎么使用”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對Istio熔斷器怎么使用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!


當(dāng)前名稱:Istio熔斷器怎么使用
瀏覽路徑:http://weahome.cn/article/jphggj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部