服务网格架构激活了容器网络管理—来自于服务网格创建者们的见解与展望
譯者注:本文將是您了解和評(píng)估何時(shí)以及如何采納服務(wù)網(wǎng)格的最佳參考資料。本文采訪了服務(wù)網(wǎng)格的締造者Buoyant創(chuàng)始人,Isito的產(chǎn)品經(jīng)理,Enovy架構(gòu)師Matt Klein等人,分別就誰(shuí)應(yīng)該何時(shí)以何種方式采納服務(wù)網(wǎng)格給出了意見(jiàn)并展望了服務(wù)網(wǎng)格的未來(lái)。
容器是IT行業(yè)的超級(jí)英雄,它與服務(wù)網(wǎng)格是最佳組合。它們聯(lián)手對(duì)抗混亂的網(wǎng)絡(luò)管理。
容器和微服務(wù)出現(xiàn)催生了一種稱為服務(wù)網(wǎng)格的新型網(wǎng)絡(luò)架構(gòu)范例,但 IT 觀察家們對(duì)它是否能夠廣泛應(yīng)用到生產(chǎn)上持有不同意見(jiàn)。
服務(wù)網(wǎng)格使用一個(gè)稱為 sidecar 的代理,它是附加在應(yīng)用程序旁、虛擬機(jī)或運(yùn)行在 Kubernetes 的 pod 中的容器,具體運(yùn)行在哪里取決于所使用的服務(wù)網(wǎng)格的類型。然后,該代理可以連接到集中式的控制平面軟件,這些軟件收集細(xì)粒度的網(wǎng)絡(luò)遙測(cè)數(shù)據(jù),應(yīng)用網(wǎng)絡(luò)管理策略或更改代理配置,建立并執(zhí)行網(wǎng)絡(luò)安全策略。
IT系統(tǒng)中的服務(wù)網(wǎng)格架構(gòu)還處于初期階段,但與容器一樣它上升的很快。在 2017 年 12 月云原生計(jì)算基金會(huì)(CNCF)舉辦的 KubeCon 和 CloudNativeCon 上,服務(wù)網(wǎng)格已經(jīng)取代容器成為 DevOps 前沿最熱門的話題。
“我們經(jīng)常發(fā)現(xiàn)自己在構(gòu)建應(yīng)用軟件時(shí),我們實(shí)際上在做的是一遍又一遍地編寫相同的代碼來(lái)解決某些實(shí)際上非常困難的計(jì)算機(jī)科學(xué)問(wèn)題,這些問(wèn)題應(yīng)該被考慮到某種通用接口中”,微服務(wù)監(jiān)控創(chuàng)業(yè)公司 LightStep 首席執(zhí)行官 Ben Sigelman 在 KubeCon 的服務(wù)網(wǎng)格主題演講中表示。
“服務(wù)網(wǎng)格可以用來(lái)做發(fā)現(xiàn)服務(wù)、服務(wù)連接、斷路、負(fù)載均衡......安全和身份驗(yàn)證” , Sigelman說(shuō),他是前谷歌工程師,OpenTracing 的創(chuàng)建者,OpenTracing 是開源的,提供供應(yīng)商無(wú)關(guān)的 API。
服務(wù)網(wǎng)格簡(jiǎn)史
最早版本的 sidecar 代理技術(shù)在 2016 年初開始出現(xiàn)在如谷歌和推特的網(wǎng)絡(luò)商店,微服務(wù)管理需要對(duì)網(wǎng)絡(luò)進(jìn)行新的思考。與傳統(tǒng)的單體應(yīng)用程序不同,微服務(wù)依靠外部網(wǎng)絡(luò)來(lái)溝通和協(xié)調(diào)應(yīng)用程序功能。這些微服務(wù)通信需要密切監(jiān)控,有時(shí)需要大規(guī)模重新配置。
用于微服務(wù)網(wǎng)絡(luò)管理自動(dòng)化最早的技術(shù)依賴于庫(kù),作為應(yīng)用程序代碼的一部分進(jìn)行部署,如 Netflix 的 Hystrix。因此,開發(fā)人員需要進(jìn)行網(wǎng)絡(luò)管理。這些庫(kù)也必須用特定環(huán)境中使用的每種應(yīng)用程序語(yǔ)言編寫。這提出了一個(gè)難題,因?yàn)槲⒎?wù)精神的一個(gè)主要原則是小團(tuán)隊(duì)可以自由地使用任何語(yǔ)言進(jìn)行獨(dú)立的服務(wù)管理。
大多數(shù)認(rèn)為自己正在使用微服務(wù)的組織并沒(méi)有真正做到微服務(wù)?!?strong>Anne Thomas,Gartner 分析師
在 2016 年初,第一批在 Twitter 上實(shí)施微服務(wù)的工程師成立了 Buoyant 公司,該公司采用 sidecar 代理方法替代應(yīng)用程序庫(kù)。Buoyant 在 2016 年年中創(chuàng)造了Service Mesh這個(gè)術(shù)語(yǔ),其最初的服務(wù)網(wǎng)格產(chǎn)品 Linkerd 使用 Java 虛擬機(jī)(JVM)作為 sidecar,這種設(shè)計(jì)將網(wǎng)絡(luò)管理負(fù)擔(dān)從應(yīng)用程序開發(fā)人員轉(zhuǎn)移出來(lái),并支持對(duì)多語(yǔ)言的集中管理應(yīng)用網(wǎng)絡(luò)。到目前為止,Linkerd 是主流企業(yè)級(jí) IT 商店中唯一上生產(chǎn)環(huán)境的服務(wù)網(wǎng)格架構(gòu)。使用的客戶包括 Salesforce、PayPal、Credit Karma、Expedia 和 AOL。
Linkerd 剛剛站穩(wěn)了腳跟,Docker 容器和 Kubernetes 容器編排又將 Buoyant 工程師送回了原點(diǎn)。終于在2017 年 12 月,該公司發(fā)布了 Conduit,一種基于輕量級(jí)容器代理的服務(wù)網(wǎng)格架構(gòu),而不是 Linkerd 中使用的耗資源的 JVM。它專門用于與 Go 和 Rust 應(yīng)用程序語(yǔ)言組合使用的 Kubernetes 。
Kubernetes 社區(qū)正在為 Go 編寫輕量級(jí)服務(wù),可能需要 20 MB 或 50 MB 的內(nèi)存才能運(yùn)行,而 Linkerd 的 JVM 可能會(huì)占用 200 MB 的內(nèi)存,對(duì)于 Kubernetes 愛(ài)好者來(lái)說(shuō)這是一個(gè)矛盾點(diǎn),William Morgan——Buoyant 的聯(lián)合創(chuàng)始人兼首席執(zhí)行官這樣說(shuō)。
Morgan 說(shuō):“為此消耗大量?jī)?nèi)存是不最理想的,特別是其價(jià)值主張是成為開發(fā)人員不必?fù)?dān)心的底層基礎(chǔ)架構(gòu)的一部分時(shí)。
但就在 2017 年初 Buoyant 工程師開始重新考慮其服務(wù)網(wǎng)格架構(gòu)時(shí),Kubernetes 的創(chuàng)造者谷歌和重量級(jí)技術(shù)公司 IBM 聯(lián)手 Lyft 公司的 Envory 創(chuàng)建了 Istio。鑒于其支持者的聲譽(yù)和谷歌內(nèi)部管理大規(guī)?;谌萜鞯奈⒎?wù)的經(jīng)驗(yàn),這種基于容器的服務(wù)網(wǎng)格引起了業(yè)界的廣泛關(guān)注。Google 基于其內(nèi)部的服務(wù)控制工具向 Istio 提供控制平面軟件,而 IBM 則添加了控制平面工具 Amalgam8。Istio 是基于 Lyft 的 Envoy sidecar 代理,該公司是為了控制平面接收命令而建立的。它可以動(dòng)態(tài)讀取到 sidecar 的配置更新,而無(wú)需重啟 。
Istio 的支持者正在與 Kubernetes 所在的 CNCF 進(jìn)行長(zhǎng)期管理談判。他們計(jì)劃在 2018 年第三季度發(fā)布 1.0 版本。
到目前為止,Linkerd 和 Istio 已經(jīng)成為這個(gè)新興市場(chǎng)中最具影響力的項(xiàng)目,但是還有很多服務(wù)網(wǎng)格架構(gòu)項(xiàng)目正在進(jìn)行中,包括開源和專有選項(xiàng)。這些項(xiàng)目中有許多是基于 Envoy sidecar。Nginx 基于其 Nginx Plus代理引入了自己的集中式管理控制平面。其他早期的服務(wù)網(wǎng)格希望包括 Turbine Labs 的 Houston、Datawire 的 Ambassador、Heptio 的 Contour、Solo.io 的 Gloo 和 Tigera 的 CNX。
誰(shuí)需要服務(wù)網(wǎng)格?
現(xiàn)在判斷服務(wù)網(wǎng)絡(luò)架構(gòu)在主流企業(yè) IT 商店中的普及度還為時(shí)過(guò)早,這些 IT 商店不適用于 Twitter 或 Google 。
Gartner 分析師 Anne Thomas 表示,對(duì)于以有限方式使用容器的組織,現(xiàn)有的 API 網(wǎng)關(guān)、Kubernetes 或 PaaS 軟件(如 Docker Enterprise Edition 或 Cloud Foundry)的服務(wù)發(fā)現(xiàn)和網(wǎng)絡(luò)管理功能可能已經(jīng)足以提供微服務(wù)支持。
“大多數(shù)認(rèn)為自己正在實(shí)施微服務(wù)的組織并沒(méi)有真正做到真正的微服務(wù) “,Thomas 說(shuō)?!拔也幌嘈耪嬲奈⒎?wù)將成為傳統(tǒng)企業(yè)中的主流?!?/p>
服務(wù)網(wǎng)格允許您以集中的方式管理流量,這種方式可以讓屏蔽環(huán)境對(duì)技術(shù)的影響 ,我覺(jué)得這在任何規(guī)模上都很有用。——Zack Angelo BigCommerce 平臺(tái)工程總監(jiān)
對(duì) Thomas 來(lái)說(shuō),真正的微服務(wù)是盡可能獨(dú)立的。每個(gè)服務(wù)處理一個(gè)單獨(dú)的方法或領(lǐng)域功能;使用自己的獨(dú)立數(shù)據(jù)存儲(chǔ);與其他微服務(wù)依靠基于異步事件的通信;并允許開發(fā)人員設(shè)計(jì)、開發(fā)、測(cè)試、部署和替換這個(gè)單獨(dú)的功能,而無(wú)需重新部署應(yīng)用程序的任何其他部分。
“很多主流公司并不一定愿意花將大量的時(shí)間和金錢投入到應(yīng)用架構(gòu)上”,Thomas 爭(zhēng)辯道?!八麄?nèi)匀辉谝愿至6鹊姆绞阶鍪虑也粫?huì)使用服務(wù)網(wǎng)格,至少在網(wǎng)格以服務(wù)的方式添加到平臺(tái),或者在出現(xiàn)新型開發(fā)框架之前“。
很多服務(wù)網(wǎng)格的早期用戶認(rèn)為并不一定需要有大量的微服務(wù)才能從該技術(shù)中受益 。
“它可以讓你以集中的方式管理流量,流量在不同的環(huán)境和技術(shù)中是一致的,我覺(jué)得這在任何規(guī)模上都很有用”,位于德克薩斯州奧斯汀的電子商務(wù)公司 BigCommerce 的平臺(tái)工程主管 Zack Angelo 這樣說(shuō),他們使用 Linkerd 服務(wù)網(wǎng)格。“即使你只有十幾個(gè)服務(wù),這也是非常有用的功能”。
Angelo 說(shuō),傳統(tǒng)的網(wǎng)絡(luò)管理概念,例如負(fù)載均衡器,無(wú)法按微小的百分比把流量路由到某些節(jié)點(diǎn) ,以便進(jìn)行金絲雀或藍(lán)/綠發(fā)布。傳統(tǒng)的網(wǎng)絡(luò)監(jiān)控工具也不提供服務(wù)網(wǎng)格所提供的那種細(xì)粒度的遙測(cè)數(shù)據(jù),能夠跟蹤 99% 的應(yīng)用程序延遲中的微小異常,其重要性在微服務(wù)網(wǎng)絡(luò)中被放大。
Linkerd 的負(fù)載均衡模式使用了一種稱為指數(shù)加權(quán)移動(dòng)平均的技術(shù),以便當(dāng)服務(wù)網(wǎng)格跨主機(jī)分配網(wǎng)絡(luò)流量時(shí),它會(huì)考慮下游服務(wù)響應(yīng)的速度,然后將流量路由到服務(wù)性能最佳的地方,而不是傳統(tǒng)循環(huán)負(fù)載均衡技術(shù)。
獲取實(shí)時(shí)數(shù)據(jù)并為每位用戶提供個(gè)性化體驗(yàn)這很重要。 Jennifer Lin——Google 的 Istio 產(chǎn)品總監(jiān)
“我們的應(yīng)用分布在多個(gè)數(shù)據(jù)中心,很高興能夠?qū)⒃摷夹g(shù)內(nèi)置到我們的負(fù)載均衡器中,它能自動(dòng)感知并選擇最快的網(wǎng)絡(luò)路徑 ”。Angelo 說(shuō)?!皬墓收限D(zhuǎn)移的角度來(lái)看,這對(duì)我們也很重要”。
并不是說(shuō)使用服務(wù)網(wǎng)絡(luò)時(shí)不需要權(quán)衡 ,特別是當(dāng)涉及到 IT 運(yùn)維人員不熟悉高級(jí)網(wǎng)絡(luò)概念管理的復(fù)雜性時(shí)。Angelo 表示,如果管理不當(dāng),集中式控制平面可能會(huì)成為單點(diǎn)故障,盡管企業(yè)可以通過(guò)在其服務(wù)網(wǎng)格設(shè)計(jì)中增加彈性來(lái)降低這種風(fēng)險(xiǎn)。
“如果在服務(wù)發(fā)現(xiàn)中發(fā)生了某些不好的事情,向 Linkerd 節(jié)點(diǎn)提供陳舊的數(shù)據(jù)或其他內(nèi)容,負(fù)載均衡池中存在錯(cuò)誤的主機(jī),則即使服務(wù)發(fā)現(xiàn)信息不正確,Linkerd 失敗算法也會(huì)將其從池中取出,這真是太棒了“,Angelo 說(shuō)。
其他公司看好 Istio 的集中化網(wǎng)絡(luò)監(jiān)控功能,計(jì)劃在 Istio 進(jìn)入 GA 狀態(tài)后跟進(jìn)。
“我們?nèi)匀挥?PHP、Node 和 Go 中程序代碼,以及三種不同的方式來(lái)收集日志,監(jiān)控服務(wù)和運(yùn)行狀態(tài)”,Harrison Harnisch說(shuō)道,他是一名位于芝加哥的Buffer公司員工,該公司提供一個(gè)美國(guó)的分布式社交媒體管理平臺(tái)。”但如果我們能夠通過(guò)服務(wù)網(wǎng)絡(luò)獲得所有內(nèi)容,我們就可以使用相同的模式進(jìn)行日志記錄,并構(gòu)建模板 dashboard 以便跨團(tuán)隊(duì)共享,這在現(xiàn)在很難做到” 。
Istio 創(chuàng)造者對(duì)服務(wù)網(wǎng)格未來(lái)的展望
即使在銀行業(yè)等傳統(tǒng)行業(yè)中,開發(fā)人員也在創(chuàng)建復(fù)雜的面向消費(fèi)者的應(yīng)用程序,這些應(yīng)用程序看起來(lái)更像是Google 這樣的大規(guī)模的網(wǎng)絡(luò)應(yīng)用程序。
“重要的是,他們有實(shí)時(shí)數(shù)據(jù),并且他們?yōu)槊總€(gè)用戶提供個(gè)性化體驗(yàn)”,谷歌 Istio 產(chǎn)品管理總監(jiān) Jennifer Lin 說(shuō)。“這需要一個(gè)更細(xì)粒度的服務(wù)集,允許這些創(chuàng)新的應(yīng)用程序以安全的方式以極低的延遲處理大規(guī)模的流量 ” 。
IBM 工程師 Daniel Berg 說(shuō),精細(xì)的流量路由和安全策略也將成為 IBM 推出的基于 Istio 的混合云概念的關(guān)鍵組成部分,并將用于管理私有云和公有云中的微服務(wù)。
“客戶將需要一個(gè)網(wǎng)格來(lái)幫助組織和管理傳統(tǒng)應(yīng)用向云原生應(yīng)用程序之間轉(zhuǎn)換所帶來(lái)的復(fù)雜性 ”, Berg 說(shuō)?!叭绻_始一將網(wǎng)格作為應(yīng)用程序的一部分,當(dāng)您將其移植到另一個(gè)未使用該網(wǎng)格的供應(yīng)商中時(shí),盡管它仍可以運(yùn)行,但會(huì)得到完全無(wú)法預(yù)期的結(jié)果,這種做法是不可取的“。
但 Envoy 的高級(jí)軟件工程師 Matt Klein 表示,主流企業(yè)最有可能等到服務(wù)網(wǎng)格成為公有云容器服務(wù)和 PaaS 產(chǎn)品的一部分時(shí)才開始真正使用它,這與 Gartner 的 Thomas 的預(yù)測(cè)相呼應(yīng) 。
“你可以想象它可以像 AWS Fargate 那樣工作,為每個(gè)用戶函數(shù)或容器旁自動(dòng)注入一個(gè)如 Envoy 這樣的代理,而且用戶只需要了解這些功能而無(wú)需關(guān)心它們是如何實(shí)現(xiàn)的“ ,Klein 說(shuō)?!八鼈兛梢垣@得服務(wù)網(wǎng)格提供功能,但對(duì)那到底是不是服務(wù)網(wǎng)格并不重要 ”。
Klein 說(shuō),也有人猜測(cè)過(guò)度到這種狀態(tài)服務(wù)需要多長(zhǎng)時(shí)間。
Klein 說(shuō):“在公共云中某種技術(shù)成熟大約需要 10 到 20 年的時(shí)間 ,對(duì)于像微軟 Azure、Google 云平臺(tái)和亞馬遜這樣百年企業(yè),我們正處于該過(guò)程的初級(jí)階段”。
總結(jié)
以上是生活随笔為你收集整理的服务网格架构激活了容器网络管理—来自于服务网格创建者们的见解与展望的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 当git上只做文件大小写重命名的修改时,
- 下一篇: Docker实战:Docker安装部署R