全部課程
發(fā)布時(shí)間: 2021-07-22 09:40:52
服務(wù)網(wǎng)格怎么實(shí)現(xiàn)?“服務(wù)網(wǎng)格( Service Mesh )”是時(shí)下最流行的應(yīng)用微服務(wù)基礎(chǔ)架構(gòu),它的核心功能是實(shí)現(xiàn)微服務(wù)實(shí)例之間的互聯(lián)和互通。
Istio 是最著名的服務(wù)網(wǎng)格開(kāi)源項(xiàng)目,它支持多集群Kubernetes ,但大多數(shù)部署與 Kubernetes 集群是一對(duì)一的關(guān)系,多個(gè)集群之間不可避免地存在著“網(wǎng)隔”。
VMware Tanzu Service Mesh(簡(jiǎn)稱 TSM )與NSX的全局名稱服務(wù)( GSLB )相結(jié)合,可以將多個(gè)云和應(yīng)用程序聯(lián)合以連接彼此隔離的服務(wù)集群。因此,不妨將 VMware 的 TSM 解釋為“ Terminator of Seperated Mesh ——網(wǎng)隔終結(jié)者 ”。
微服務(wù)和服務(wù)網(wǎng)格
Linux 容器和來(lái)自 Kubernetes 的容器編排的出現(xiàn),通過(guò)高度自動(dòng)化方法,大大提高了部署速度。單個(gè)服務(wù)可以打包為在 Kubernetes Pod 中運(yùn)行的容器,并帶有各自的語(yǔ)言運(yùn)行時(shí),這就是“微”服務(wù)架構(gòu)。
微服務(wù)架構(gòu),可以說(shuō)是應(yīng)用開(kāi)發(fā)領(lǐng)域的“解耦合”革命,解耦之后的應(yīng)用開(kāi)發(fā)將更少受到特定基礎(chǔ)環(huán)境和資源的限制,但更加依賴服務(wù)之間的標(biāo)準(zhǔn)化、自動(dòng)化、安全化的連接。
因?yàn)椤拔⑿突焙汀敖怦詈稀辈皇悄康?,新的架?gòu)的終極目標(biāo)還是要將這些分散開(kāi)發(fā)和部署的“微組件”進(jìn)行更快、更好、更強(qiáng)的組合,形成可以面向最終用戶的應(yīng)用和服務(wù),并不斷迭代以適應(yīng)最終用戶的新需求和新變化。
微服務(wù)是在以 Kubernetes 為基礎(chǔ)架構(gòu)的平臺(tái)上發(fā)展并日益成熟的。Kubernetes 為復(fù)雜的分布式、多語(yǔ)言應(yīng)用程序提供應(yīng)用程序可用性、彈性和整體管理,提供基本的負(fù)載平衡,但不涉及在其 Pod 中運(yùn)行的每個(gè)應(yīng)用程序組件如何與其他組件連接和交互。
網(wǎng)絡(luò)是將微服務(wù)結(jié)合在一起以交付應(yīng)用程序的粘合劑。微服務(wù)必須通過(guò)網(wǎng)絡(luò)進(jìn)行大量通信——它是應(yīng)用程序微服務(wù)之間的連接。Kubernetes 在網(wǎng)絡(luò)、安全和負(fù)載均衡方面,一直依賴于外部組件提供的服務(wù)。
“服務(wù)網(wǎng)格”( Service Mesh )應(yīng)運(yùn)而生,來(lái)填補(bǔ)“微服務(wù)連接”這個(gè)空白區(qū)間。從某種意義上,可以將 Serive Mesh 稱之為“連接即服務(wù)( Connection as a Service )”。
使用服務(wù)網(wǎng)格,我們可以將這些微服務(wù)之間所需的連接功能抽象為一個(gè)單獨(dú)的實(shí)體,稱為“代理”。“代理”位于每個(gè)微服務(wù)的前面,所有通信都通過(guò)它傳遞。“代理”負(fù)責(zé)連接詳細(xì)信息、流量管理、錯(cuò)誤和故障處理以及出于可觀察性目的收集指標(biāo)。
當(dāng)“代理”與其他“代理”通信時(shí),就會(huì)形成一個(gè)網(wǎng)格狀邏輯拓?fù)?,這就是這個(gè)架構(gòu)被稱為“服務(wù)網(wǎng)格”原因。在服務(wù)網(wǎng)格中,代理通過(guò)“ Sidecar ”來(lái)實(shí)現(xiàn)。容器在 Pod 中運(yùn)行,其中的“ Sidecar ”充當(dāng)主容器的“輔助容器”,主容器運(yùn)行業(yè)務(wù)邏輯。
傳統(tǒng)上,企業(yè)網(wǎng)絡(luò)的設(shè)計(jì)和構(gòu)建是為了提供冗余,但是微服務(wù)化的應(yīng)用程序邏輯中增加了對(duì)網(wǎng)絡(luò)的依賴,網(wǎng)絡(luò)(以及應(yīng)用程序)故障的可能性與應(yīng)用程序所依賴的連接數(shù)量成正比。
圖1 服務(wù)網(wǎng)格采用 Sidecar 代理微服務(wù)之間的連接
VMware Tanzu Service Mesh
VMware 的Tanzu Service Mesh (以下簡(jiǎn)稱為“TSM”)建立在 Istio 和 Envoy 等認(rèn)可度高開(kāi)源產(chǎn)品基礎(chǔ)之上。Istio 專注于服務(wù),用戶可以從開(kāi)源基礎(chǔ)中受益,并獲得服務(wù)的發(fā)現(xiàn)、連接、可觀察性和安全性等功能:
服務(wù)到服務(wù)通信
控制服務(wù)之間的流量和 API 調(diào)用
對(duì)服務(wù)通信實(shí)施授權(quán)和加密
服務(wù)的遙測(cè)數(shù)據(jù)(跟蹤、指標(biāo)、日志)以實(shí)現(xiàn)可觀察性
除了 Istio 在單集群中提供的基礎(chǔ)功能之外,TSM 有能力為單云和多云環(huán)境中的應(yīng)用程序提供端到端的連接性、連續(xù)性、彈性、安全性和可觀察性——為企業(yè)提供從應(yīng)用程序最終用戶到微服務(wù)和數(shù)據(jù)的可見(jiàn)性和策略控制。TSM 的適用場(chǎng)景包括但不限于:
應(yīng)用程序連續(xù)性:通過(guò)與 NSX 軟件定義的應(yīng)用交付相集成,確保應(yīng)用程序連續(xù)性,以支持多區(qū)域和多區(qū)域高可用性和災(zāi)難恢復(fù)
應(yīng)用程序彈性:通過(guò)自動(dòng)自動(dòng)擴(kuò)展策略確保應(yīng)用程序彈性,以實(shí)現(xiàn)多云應(yīng)用程序的服務(wù)級(jí)別目標(biāo)( SLO )
應(yīng)用程序安全性:通過(guò)定義基于屬性的授權(quán)策略,來(lái)實(shí)現(xiàn)服務(wù)到服務(wù)的訪問(wèn)控制,從而保護(hù)應(yīng)用程序和數(shù)據(jù)
API安全性:增強(qiáng)跨應(yīng)用程序最終用戶、微服務(wù)/ API 和敏感數(shù)據(jù)的 TSM 可見(jiàn)性和控制
圖2 TSM 總體架構(gòu)
全局命名空間GNS
TSM 通過(guò)稱為全局命名空間(Global Namespace)的抽象層,使操作和集成工作負(fù)載變得更容易。該抽象層通過(guò) TSM 與 NSX 的全局負(fù)載均衡( GSLB )功能相結(jié)合,允許企業(yè)跨云和工作負(fù)載連接、管理和保護(hù)應(yīng)用程序。這提供了完整的服務(wù)和應(yīng)用程序移動(dòng)性。
全局命名空間 GNS 是 TSM 與其他服務(wù)網(wǎng)格產(chǎn)品的主要區(qū)別點(diǎn)之一。TSM 與 NSX GSLB 的結(jié)合,現(xiàn)在被稱為“ VMware Modern Apps Connectivity ” 解決方案。應(yīng)用程序需要在混合傳統(tǒng)和微服務(wù)架構(gòu)的多集群、多云環(huán)境中運(yùn)行。在這種情況下,企業(yè)的平臺(tái)、基礎(chǔ)設(shè)施和運(yùn)維團(tuán)隊(duì)面臨著一系列多云環(huán)境下的需求和挑戰(zhàn),包括但不限于:
職責(zé)分離(服務(wù)由不同業(yè)務(wù)部門(mén)開(kāi)發(fā))
將無(wú)狀態(tài)和有狀態(tài)服務(wù)分配到不同的 Kubernetes 集群
服務(wù)消費(fèi)(使用一個(gè)云中的數(shù)據(jù)服務(wù)和不同云中的應(yīng)用服務(wù))
業(yè)務(wù)連續(xù)性
減小擴(kuò)散半徑
使用 TSM 可以在 GNS 級(jí)別配置并啟用應(yīng)用策略,例如基于高可用性、安全目標(biāo)和流量分配目標(biāo)的策略。以下是將 GNS 與不同集群上的 TSM 聯(lián)合使用的兩個(gè)場(chǎng)景。
例1 云爆發(fā)
隨著我們公共服務(wù)的流量增加(模擬數(shù)據(jù)達(dá)到峰值),并且當(dāng)本地站點(diǎn)(下圖中的 On-Prem )上的集群資源耗盡或超過(guò)某個(gè)閾值時(shí),用戶現(xiàn)在可以觸發(fā)應(yīng)用程序在云站點(diǎn)(下圖中的 Cloud )上的擴(kuò)展部署(手動(dòng)或由觸發(fā)自動(dòng)部署)。
而且,由于在我們的設(shè)置云站點(diǎn)集群是相同的全局域名服務(wù)的一部分,在這個(gè)域名下添加新的服務(wù)節(jié)點(diǎn),會(huì)自動(dòng)觸發(fā) TSM 更新 GSLB 配置,但新的服務(wù)節(jié)點(diǎn)指向到云上的集群,并根據(jù) GSLB 配置的策略將流量轉(zhuǎn)移到新端點(diǎn)。
圖3 應(yīng)用在云上的無(wú)縫擴(kuò)展
例2 更具彈性的故障轉(zhuǎn)移機(jī)制(增強(qiáng)型高可用性)
圖4 應(yīng)用的跨云故障倒換
如果一個(gè)集群或站點(diǎn)上的后端服務(wù)出現(xiàn)了故障,常見(jiàn)的 GSLB 會(huì)產(chǎn)生一個(gè)“黑洞”——由于 GSLB 的健康狀況檢查檢測(cè)需要一些時(shí)間檢測(cè)到到后端服務(wù)節(jié)點(diǎn)故障(這可能需要幾十秒,取決于管理員設(shè)置的重試的次數(shù))。
使用 TSM,在目標(biāo)集群上運(yùn)行的 Ingress 網(wǎng)關(guān)將首先檢測(cè)到故障,并通過(guò)與 GSLB 聯(lián)動(dòng),將流量轉(zhuǎn)移到另一個(gè)集群。因此,使用此解決方案的最終丟包率最低。
總結(jié)
作為提供虛擬云網(wǎng)絡(luò)的領(lǐng)導(dǎo)者,VMware 了解為現(xiàn)代應(yīng)用程序連接和安全創(chuàng)建操作簡(jiǎn)單的模型所面臨的挑戰(zhàn)。?
Tanzu Service Mesh 和 NSX 高級(jí)負(fù)載均衡,通過(guò)使用一致的策略實(shí)現(xiàn)服務(wù)的連接,提供了實(shí)現(xiàn)企業(yè)現(xiàn)代化的最佳途徑,不僅適用于跨混合和多云環(huán)境的現(xiàn)代應(yīng)用程序,而且還擴(kuò)展到包括在 VM 中運(yùn)行的傳統(tǒng)應(yīng)用程序。
VMware 將在不斷發(fā)布的 TSM 版本中添加更多功能,其功能不僅限于負(fù)載平衡和路由,還支持圍繞公共服務(wù)的企業(yè)級(jí)安全性等附加功能。
上一篇: linux考證有哪些階段
下一篇: CCNP考試費(fèi)用