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

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

Istio流量管理能力介紹-創(chuàng)新互聯(lián)

1       Istio 是什么?

Istio 1.0 版本于8月1號(hào)凌晨準(zhǔn)點(diǎn)發(fā)布,核心特性已支持上生產(chǎn)環(huán)境,各大微信公眾號(hào)、博客紛紛發(fā)文轉(zhuǎn)載。那么Istio到底是什么?能解決問(wèn)題什么?

10年積累的網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站建設(shè)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站策劃后付款的網(wǎng)站建設(shè)流程,更有金州免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

1、 Istio 是Google繼Kubernetes之后的又一開源力作,主要參與的公司包括Google,IBM,Lyft等,它提供了完整的非侵入式的微服務(wù)治理解決方案,解決微服務(wù)的管理、網(wǎng)絡(luò)連接以及安全管理等應(yīng)用網(wǎng)絡(luò)治理問(wèn)題

2、 它無(wú)需修改任何代碼就能夠?qū)崿F(xiàn)微服務(wù)的負(fù)載均衡,服務(wù)與服務(wù)之間的認(rèn)證授權(quán)以及流量監(jiān)控和治理。從整個(gè)基礎(chǔ)設(shè)施角度上看,可以將它理解為PaaS平臺(tái)上的一個(gè)面向微服務(wù)管理平臺(tái)的補(bǔ)充。

Istio流量管理能力介紹

 

2       Istio 與Kubernetes

Kubernetes 提供了部署、升級(jí)和有限的運(yùn)行流量管理能力;利用service的機(jī)制來(lái)做服務(wù)注冊(cè)和發(fā)現(xiàn),轉(zhuǎn)發(fā),通過(guò)kubeproxy有一定的轉(zhuǎn)發(fā)和負(fù)載均衡能力。但并不具備上層如熔斷、限流降級(jí)、調(diào)用鏈治理等能力.

Istio 則很好的補(bǔ)齊了k8s在微服務(wù)治理上的這部分能力,同時(shí)是基于k8s構(gòu)建的,但不是像SpringCloud Netflix等完全重新做一套。Istio是谷歌微服務(wù)治理上的非常關(guān)鍵的一環(huán)。

Istio流量管理能力介紹

3       Istio 流量管理能力介紹

Istio ,用于連接、保護(hù)、控制和觀測(cè)服務(wù)。

今天,我們就來(lái)談?wù)? Istio 第一主打功能——連接服務(wù)。

那么,便引出 3 個(gè)問(wèn)題:

Istio 如何實(shí)現(xiàn)服務(wù)之間的連接?

連接后具備哪些流量管理能力?

如何告訴 Istio 發(fā)揮這些能力?

 

3.1          Istio 如何實(shí)現(xiàn)服務(wù)的連接?

Istio流量管理能力介紹

如上圖所示的 Istio 架構(gòu)圖,讓我們關(guān)注控制面的 Pilot ,它是 Istio 實(shí)現(xiàn)流量管理的核心組件。

而在數(shù)據(jù)面,每個(gè) Service ,都會(huì)被注入 1 個(gè) Proxy 。 Istio 通過(guò) Pilot 下發(fā)配置信息給數(shù)據(jù)面每 1 個(gè) Service 的 Proxy ,從而通過(guò)這些 Proxy ,間接地控制每 1 個(gè) Service 之間以及和外部的連接。 Proxy 通常采用另一個(gè)知名的開源項(xiàng)目 Envoy 來(lái)實(shí)現(xiàn)。

1 個(gè) Pilot 和 (N + N) 個(gè) (Service+Proxy) 組合,便形成了 Service Mesh ,即服務(wù)網(wǎng)格。有了這一套服務(wù)網(wǎng)格系統(tǒng),對(duì)服務(wù)之間的流量進(jìn)行管理,便不在話下。

3.2       連接后具備哪些流量管理能力?

從服務(wù)間的流量管理角度而言, Istio 可以實(shí)現(xiàn)這 4 項(xiàng)功能:請(qǐng)求路由、服務(wù)發(fā)現(xiàn)和負(fù)載均衡、故障處理和故障注入。

 

3.2.1         請(qǐng)求路由

Istio流量管理能力介紹

如上圖所示, Istio 引入了服務(wù)版本的概念,可以通過(guò) ( Current Version , Canary Version )2 個(gè)版本對(duì)服務(wù)進(jìn)行進(jìn)一步的細(xì)分?;谶@種劃分,通過(guò) Pilot ,你可以下發(fā)配置到 Service A 的 Proxy ,使得其 95% 的流量路由至 Service B 的 Current 版本, 5% 的流量路由至 Service B 的 Canary 版本。當(dāng)然你也可以選擇雨露均沾,各分 50% 流量,或者霸道總裁,讓 Canary 版本占有 100% 的流量。

 

Istio流量管理能力介紹

如上圖所示,除了按照百分比在不同版本之間分發(fā)流量,你還可以按照請(qǐng)求內(nèi)容,將請(qǐng)求路由至不同的版本。例如,你可以發(fā)布一個(gè) Canary 版本,只讓用著 Macbook 筆記本,且安裝了 windows 操作系統(tǒng),還使用著 360 瀏覽器的用戶能夠訪問(wèn)到。

 

這一切改變,都只需要你改動(dòng)一個(gè)叫 VirtualService 的配置文件,眨個(gè)眼的功夫, Istio 就已經(jīng)通過(guò) Pilot 幫你把新的配置下發(fā)下去了。

 

3.2.2         服務(wù)發(fā)現(xiàn)和負(fù)載均衡

Istio流量管理能力介紹

如上圖所示,服務(wù)網(wǎng)格存在 3 個(gè)生命周期的動(dòng)態(tài)循環(huán):服務(wù)注冊(cè)、服務(wù)發(fā)現(xiàn)、負(fù)載均衡。

通常 kubernetes , mesos 等容器管理平臺(tái)已經(jīng)提供了服務(wù)注冊(cè)表,以跟蹤服務(wù)的負(fù)載實(shí)例,所以 Pilot 能輕而易舉地獲知服務(wù)網(wǎng)格內(nèi)的所有服務(wù)注冊(cè)信息,并將這些信息告知所有服務(wù)里的 Proxy , Proxy 根據(jù)這些信息執(zhí)行服務(wù)發(fā)現(xiàn),并相應(yīng)地動(dòng)態(tài)更新其負(fù)載均衡池。一個(gè)服務(wù)通常有多個(gè)負(fù)載實(shí)例, Service A 請(qǐng)求 Service B 時(shí),可以配置不同的負(fù)載均衡模式:輪詢、隨機(jī)和帶權(quán)重的最少請(qǐng)求。假設(shè)此時(shí) Service B 的某個(gè)負(fù)載實(shí)例出現(xiàn)故障,因?yàn)? Service A 中的 Proxy 會(huì)定期地執(zhí)行服務(wù)發(fā)現(xiàn),從而能及時(shí)將故障實(shí)例從其負(fù)載均衡池里排出。

 

3.2.3         故障處理

Envoy 提供了一套開箱即用,可選的故障處理功能,對(duì)應(yīng)用中的服務(wù)大有裨益。這些功能包括:

1.          超時(shí)

2.          具備超時(shí)預(yù)算,并進(jìn)行有限重試,重試之間的時(shí)長(zhǎng)可抖動(dòng)

3.          并發(fā)連接數(shù)和上游服務(wù)請(qǐng)求數(shù)限制

4.          對(duì)負(fù)載均衡池中的每個(gè)成員進(jìn)行主動(dòng)(定期)運(yùn)行健康檢查

5.          細(xì)粒度熔斷器(被動(dòng)健康檢查) - 適用于負(fù)載均衡池中的每個(gè)實(shí)例

以 Service A 請(qǐng)求調(diào)用 Service B 為例。

對(duì)于功能 1 。若 Service B 明確地知道 10s 以后的超時(shí),必定會(huì)帶來(lái)失敗,那將超時(shí)時(shí)長(zhǎng)縮短,使得 Service A 可以更快得知結(jié)果并作出應(yīng)對(duì),不失為一個(gè)明智之舉。

對(duì)于功能 2 。對(duì)超載的 Service B 來(lái)說(shuō),重試之間的抖動(dòng)極大的降低了重試造成的影響,而超時(shí)預(yù)算確保 Service A 在可預(yù)測(cè)的時(shí)間范圍內(nèi)獲得響應(yīng)(成功 / 失?。?/p>

對(duì)于功能 3 。限制 Service A 或其他服務(wù)對(duì) Service B 的連接數(shù)和請(qǐng)求數(shù),可以使得 Service B 免于遭遇 DDOS 攻擊,或承受過(guò)重的流量負(fù)擔(dān)而崩潰。

對(duì)于功能 4 和 5 。主動(dòng)和被動(dòng)健康檢查的組合大限度地減少了在負(fù)載平衡池中訪問(wèn)不健康實(shí)例的機(jī)會(huì)。當(dāng)與平臺(tái)級(jí)健康檢查(例如由 Kubernetes 或 Mesos 支持的檢查)相結(jié)合時(shí),應(yīng)用程序可以確保將不健康的負(fù)載實(shí)例快速地從服務(wù)網(wǎng)格中去除,從而最小化請(qǐng)求失敗和延遲產(chǎn)生影響。

總之,這些功能使得服務(wù)網(wǎng)格能夠耐受故障節(jié)點(diǎn),并防止本地故障導(dǎo)致的其他節(jié)點(diǎn)的穩(wěn)定性下降。

 

3.2.4         故障注入

雖然 Proxy 為在 Istio 上運(yùn)行的服務(wù)提供了上節(jié)所言的大量故障處理機(jī)制,但測(cè)試整個(gè)服務(wù)網(wǎng)格所組成應(yīng)用的端到端的故障恢復(fù)能力依然是必須的。錯(cuò)誤配置的故障恢復(fù)策略(例如,跨服務(wù)調(diào)用的不兼容 / 限制性超時(shí))可能導(dǎo)致應(yīng)用程序中的關(guān)鍵服務(wù)持續(xù)不可用,從而破壞用戶體驗(yàn)。

Istio 能在不殺死負(fù)載實(shí)例的情況下,將協(xié)議特定的故障注入到網(wǎng)絡(luò)中,在 TCP 層制造數(shù)據(jù)包的延遲或損壞。我們的理由是,無(wú)論網(wǎng)絡(luò)級(jí)別的故障如何,應(yīng)用層觀察到的故障都是一樣的,并且可以在應(yīng)用層注入更有意義的故障(例如, HTTP 經(jīng)典的 4xx 和 5xx 錯(cuò)誤代碼),以檢驗(yàn)和改善應(yīng)用的韌性。

運(yùn)維人員可以為符合特定條件的請(qǐng)求配置故障,還可以進(jìn)一步限制遭受故障的請(qǐng)求的百分比??梢宰⑷雰煞N類型的故障:延遲和中斷。延遲是計(jì)時(shí)故障,模擬網(wǎng)絡(luò)延遲上升或上游服務(wù)超載的情況。中斷是模擬上游服務(wù)的崩潰故障。中斷通常以 HTTP 錯(cuò)誤代碼或 TCP 連接失敗的形式表現(xiàn)。

依舊以 Service A 請(qǐng)求調(diào)用 Service B 為例。

若給 Service B 設(shè)定了 10s 的延時(shí)或 503 中斷,則 Service A 將至少 10s 后才能得到請(qǐng)求的響應(yīng)或請(qǐng)求的響應(yīng)為 503 錯(cuò)誤,通過(guò)多種場(chǎng)景覆蓋測(cè)試,可以得到 Service A 面對(duì)這些場(chǎng)景時(shí)的綜合表現(xiàn)情況,從而做出針對(duì)性的改良,增加其韌性。

3.3          如何告訴 Istio 發(fā)揮這些能力?

Istio 有 4 個(gè)配置文件,幫我們?nèi)轿坏囟ㄖ埔陨纤辛髁抗芾硇枨? : VirtualService, DestinationRule, ServiceEntry 和 Gateway:

1.          通過(guò)配置 VirtualService ,可以實(shí)現(xiàn)請(qǐng)求路由的功能;

2.          通過(guò)配置 DestinationRule ,可以實(shí)現(xiàn)服務(wù)發(fā)現(xiàn)和負(fù)載均衡、故障處理和故障注入的功能;

3.          通過(guò)配置 ServiceEntry ,讓服務(wù)網(wǎng)格內(nèi)的服務(wù),可以看到外面的世界;

4.          通過(guò)配置 Gateway ,讓服務(wù)網(wǎng)格的服務(wù),可以被全世界看到;

有了以上 4 大法寶,我們對(duì)服務(wù)網(wǎng)格進(jìn)行流量管理的所有需求,都可以被滿足了。

限于篇幅,讓我們舉 3 個(gè)簡(jiǎn)單的栗子:

假設(shè)我們的服務(wù)網(wǎng)格存在 1 個(gè)服務(wù) explorer ,只有 1 個(gè) v 1 版本;存在另 1 個(gè)服務(wù) helloworld ,有 v 1,v2 兩個(gè)版本。

①若要使得 explorer 發(fā)起的所有請(qǐng)求,以 75% 的概率走向 helloworld 的 v1 版本,以 25% 走向 v 2 版本,只要配置如下兩個(gè)文件 VirtualService 和 DestinationRule ,便可實(shí)現(xiàn):

apiVersion : networking.Istio.io/v1alpha3

kind : VirtualService

metadata :

  name : helloworld

spec :

  hosts :

    - helloworld

  http :

  - route :

    - destination :

        host : helloworld

        subset : v1

      weight : 75

    - destination :

        host : helloworld

        subset : v2

      weight : 25

---

apiVersion : networking.Istio.io/v1alpha3

kind : DestinationRule

metadata :

  name : helloworld

spec :

  host : helloworld

  subsets :

  - name : v1

    labels :

      version : v1

  - name : v2

    labels :

      version : v2

  

②如果 helloworld 內(nèi)部需要通過(guò)訪問(wèn) www.google.com 來(lái)獲取一些信息,才能告訴 explorer 這個(gè)世界是怎么樣的,需要配置如下 2 個(gè)文件 ServiceEntry 和 DestinationRule :

apiVersion : networking.Istio.io/v1alpha3

kind : ServiceEntry

metadata :

  name : googleapis

spec :

  hosts :

  - "*.google.com"

  ports :

  - number : 443

    name : https

    protocol : http

---

apiVersion : networking.Istio.io/v1alpha3

kind : DestinationRule

metadata :

  name : googleapis

spec :

  host : "*.google.com"

 

③如果 helloworld 需要被服務(wù)網(wǎng)格外,而不僅僅是 explorer 服務(wù)訪問(wèn)到,則需要配置如下 2 個(gè)文件 Gateway 和 VirtualService :

apiVersion : networking.Istio.io/v1alpha3

kind : Gateway

metadata :

  name : helloworld-gateway

spec :

    selector :

      Istio : ingressgateway

  servers :

  - port :

      number : 80

      name : http

      protocol : HTTP

    hosts :

    - 'helloworld.com'

---

apiVersion : networking.Istio.io/v1alpha3

kind : VirtualService

metadata :

  name : bookinfo

spec :

  hosts :

    - 'helloworld.com'

  gateways :

  - helloworld-gateway

  http :

  - route :

    - destination :

        host : helloworld

        port :

          number : 9080

 

 

至此,我們做一個(gè)簡(jiǎn)單的總結(jié): Istio 提供的 Pilot 和 Proxy ,將成百上千個(gè)服務(wù)組成了一個(gè)服務(wù)網(wǎng)格,基于此,我們可以實(shí)現(xiàn)請(qǐng)求路由、服務(wù)發(fā)現(xiàn)和負(fù)載均衡、故障處理以及故障注入等流量管理能力,這一切,我們只需要通過(guò)對(duì) VirtualService, DestinationRule, ServiceEntry 和 Gateway 這 4 個(gè)資源做簡(jiǎn)單的配置,即可實(shí)現(xiàn)。

K8S 和 Istio 的碰撞,又會(huì)在 Cloud Native 的世界里,勾出怎樣的天雷和地火呢?

拭目以待。


網(wǎng)頁(yè)標(biāo)題:Istio流量管理能力介紹-創(chuàng)新互聯(lián)
分享鏈接:http://weahome.cn/article/echeg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部