Service Mesh 如何實(shí)現(xiàn)微服務(wù)通信?
隨著微服務(wù)應(yīng)用程序的日益流行,IT團(tuán)隊(duì)需要在各微服務(wù)之間建立起可靠的網(wǎng)絡(luò)體系,借此保證有序通信。Service Mesh的黃金時(shí)代也由此拉開(kāi)帷幕。
Service Mesh已經(jīng)成為網(wǎng)絡(luò)技術(shù)領(lǐng)域的新寵兒,徹底改變了應(yīng)用程序網(wǎng)絡(luò)服務(wù)的基本面貌。Service Mesh在設(shè)計(jì)上強(qiáng)調(diào)為容器中運(yùn)行的各微服務(wù)提供可靠的相互通信、安全保障與流量分析能力。時(shí)至今日,微服務(wù)已經(jīng)成為驅(qū)動(dòng)DevOps團(tuán)隊(duì)實(shí)現(xiàn)應(yīng)用敏捷開(kāi)發(fā)的主流平臺(tái)。
微服務(wù)與容器需要依靠物理網(wǎng)絡(luò)實(shí)現(xiàn)互相通信,進(jìn)而連接至其他應(yīng)用程序。為此,IT與安全團(tuán)隊(duì)自然需要建立起相應(yīng)架構(gòu),用以支持生產(chǎn)級(jí)微服務(wù)部署在規(guī);、性能與管理方面提出的獨(dú)特需求。Service Mesh雖然能夠提供強(qiáng)大的網(wǎng)絡(luò)功能,但在規(guī);渴鹋c管理方面卻也帶來(lái)了新的難題。
如今,Service Mesh技術(shù)仍在不斷發(fā)展,市面上的供應(yīng)商選項(xiàng)與標(biāo)準(zhǔn)協(xié)議也有很多。需要注意的是,Service Mesh一般更適合大型微服務(wù)應(yīng)用程序部署場(chǎng)景,對(duì)于體量較小或者處于前生產(chǎn)階段的應(yīng)用程序反而過(guò)于復(fù)雜。IT部門需要認(rèn)真評(píng)估微服務(wù)通信選項(xiàng),包括各類Service Mesh變體,謹(jǐn)慎地選擇更適合整體應(yīng)用程序網(wǎng)絡(luò)架構(gòu)的解決方案。
微服務(wù)架構(gòu)對(duì)數(shù)據(jù)中心網(wǎng)絡(luò)需求的影響
相較于基于虛擬機(jī)管理程序的主流應(yīng)用程序,基于微服務(wù)架構(gòu)的應(yīng)用程序往往在架構(gòu)層面存在很大不同。例如,微服務(wù)架構(gòu)中包含大量運(yùn)行在不同服務(wù)器或計(jì)算核心內(nèi)個(gè)別容器中的小程序。單一應(yīng)用程序內(nèi)各微服務(wù)之間的高頻率事務(wù),往往會(huì)對(duì)通信延遲與傳輸帶寬提出嚴(yán)苛要求。
Service Mesh雖然能夠提供強(qiáng)大的網(wǎng)絡(luò)功能,但在規(guī)模化部署與管理方面卻也帶來(lái)了新的難題。
基于容器的微服務(wù)往往會(huì)在服務(wù)器之間靈活遷移物理位置,同時(shí)提供關(guān)于位置變化及狀態(tài)變化的報(bào)告數(shù)據(jù)。這種高度動(dòng)態(tài)的特性,導(dǎo)致IT專業(yè)人員很難及時(shí)找到目標(biāo)微服務(wù)并解決由此帶來(lái)的應(yīng)用性能問(wèn)題。
應(yīng)用程序開(kāi)發(fā)者當(dāng)然不想、也不需要深入理解微服務(wù)連接中使用的復(fù)雜底層網(wǎng)絡(luò)協(xié)議。相反,他們只希望直接描述應(yīng)用程序必須滿足的網(wǎng)絡(luò)與安全要求。為此,企業(yè)需要四種能力以對(duì)接各種基于微服務(wù)(或容器化)的應(yīng)用程序:第一,能夠靈活對(duì)接小型、中型及大型應(yīng)用程序;第二,易于聯(lián)網(wǎng),并將網(wǎng)絡(luò)復(fù)雜性因素隔離在外;第三,能夠在內(nèi)部數(shù)據(jù)中心或公有云中連接并運(yùn)行應(yīng)用程序;第四,細(xì)粒度安全控制能力。
隨著微服務(wù)部署逐漸成為市場(chǎng)主流,容器網(wǎng)絡(luò)服務(wù)需要被全面集成至整個(gè)網(wǎng)絡(luò)與安全管理系統(tǒng)當(dāng)中。
使用Service Mesh實(shí)現(xiàn)微服務(wù)通信
Service Mesh是一種網(wǎng)絡(luò)軟件,能夠在各項(xiàng)微服務(wù)之間提供可靠且安全的通信機(jī)制。其網(wǎng)絡(luò)功能包括抽象、服務(wù)質(zhì)量與安全保障(例如身份驗(yàn)證與加密)等等。各項(xiàng)網(wǎng)絡(luò)請(qǐng)求將通過(guò)與服務(wù)本體一同運(yùn)行的邊車代理,在各微服務(wù)之間往來(lái)路由。這些代理共同形成一套網(wǎng)格網(wǎng)絡(luò),用以對(duì)接各項(xiàng)微服務(wù)。中央控制器則提供訪問(wèn)控制,并負(fù)責(zé)實(shí)現(xiàn)網(wǎng)絡(luò)與性能管理。
Service Mesh負(fù)責(zé)在微服務(wù)應(yīng)用程序與具體的網(wǎng)絡(luò)路由及安全要求復(fù)雜性之間提供邏輯隔離。Service Mesh提供的抽象支持能夠獨(dú)立于物理網(wǎng)絡(luò)之外,在各微服務(wù)上快速靈活地進(jìn)行部署。
Service Mesh解決方案
目前,我們可以為容器上部署的分布式微服務(wù)架構(gòu)選擇多種Service Mesh技術(shù)方案。Istio是由谷歌牽頭開(kāi)發(fā)的領(lǐng)先開(kāi)源Service Mesh選項(xiàng),Red Hat也為Istio的開(kāi)源版本提供支持。此外,各大云服務(wù)巨頭,包括AWS、微軟與谷歌等,也都在自家IaaS產(chǎn)品中提供Service Mesh選項(xiàng),不少網(wǎng)絡(luò)供應(yīng)商同樣開(kāi)發(fā)出自己的Service Mesh解決方案。
Citrix——Citrix提供多種Service Mesh架構(gòu)選項(xiàng),幫助用戶在需求與便捷性之間取得平衡,范圍涵蓋簡(jiǎn)單的雙層入口以及功能豐富的Service Mesh。Citrix還支持與Istio相集成。如果企業(yè)希望享受Service Mesh帶來(lái)的優(yōu)勢(shì),但又不想接觸過(guò)多復(fù)雜的要素,Citrix的Service Mesh Lite可能是個(gè)不錯(cuò)的選擇。
F5——F5提供兩種Service Mesh選項(xiàng)。Aspen Mesh采用基于Istio的架構(gòu),能夠滿足涵蓋成千上萬(wàn)項(xiàng)微服務(wù)的大規(guī)模部署需求。如果企業(yè)的微服務(wù)規(guī)模在數(shù)百項(xiàng)量級(jí),則可以選擇更簡(jiǎn)單的方案選項(xiàng)Nginx,并借此將Nginx Ingress與API網(wǎng)關(guān)功能集成至Service Mesh當(dāng)中。
VMware——VMware Tanzu Service Mesh (TSM)能夠支持應(yīng)用程序連續(xù)性、彈性與安全性,為專注于實(shí)施應(yīng)用程序現(xiàn)代化、多云環(huán)境以及數(shù)據(jù)保護(hù)的企業(yè)提供理想的價(jià)值回報(bào)。TSM還能與VMware NSX Advanced Load Balancer相集成,共同提供多集群入口服務(wù),確保開(kāi)發(fā)團(tuán)隊(duì)能夠直接將Service Mesh引入其應(yīng)用程序。
Service Mesh帶來(lái)的挑戰(zhàn)
Service Mesh雖然功能強(qiáng)大,但其技術(shù)本身也相當(dāng)復(fù)雜。必須承認(rèn),這項(xiàng)技術(shù)難以學(xué)習(xí)、更不易實(shí)現(xiàn),缺乏網(wǎng)絡(luò)知識(shí)背景的員工甚至很難理解其底層原理。在大多數(shù)企業(yè)中,Service Mesh都處于早期部署階段。另外,由于Service Mesh技術(shù)仍在不斷發(fā)展,因此多數(shù)IT部門都很難確定該推廣哪些最佳實(shí)踐。
Service Mesh的出現(xiàn),也給本就十分復(fù)雜的數(shù)據(jù)中心網(wǎng)絡(luò)架構(gòu)添加了新的選項(xiàng)。具體來(lái)講,這套架構(gòu)中的以太網(wǎng)、交換機(jī)、路由器、防火墻、應(yīng)用程序交付控制器等物理與邏輯元素都因Service Mesh的加入而更加錯(cuò)綜復(fù)雜。IT團(tuán)隊(duì)必須弄清楚該如何將Service Mesh的操作及管理機(jī)制整合至原有應(yīng)用程序、安全性與網(wǎng)絡(luò)自動(dòng)化平臺(tái)當(dāng)中。
小結(jié)
基于容器的微服務(wù),讓DevOps團(tuán)隊(duì)獲得了快速開(kāi)發(fā)新型分布式應(yīng)用程序的能力。但要實(shí)現(xiàn)這些基于微服務(wù)的應(yīng)用程序,我們也需要掌握新的網(wǎng)絡(luò)、安全與分析能力。隨著微服務(wù)架構(gòu)逐步由試驗(yàn)性實(shí)施過(guò)渡至生產(chǎn)環(huán)境,為其建立大規(guī)模網(wǎng)絡(luò)體系將構(gòu)成新的挑戰(zhàn)。
Service Mesh在為微服務(wù)應(yīng)用提供網(wǎng)絡(luò)與安全支持方面極具優(yōu)勢(shì)。它對(duì)網(wǎng)絡(luò)基礎(chǔ)設(shè)施進(jìn)行抽象化處理,確保微服務(wù)應(yīng)用程序能夠始終維持良好的網(wǎng)絡(luò)與安全策略,無(wú)需在每次變更時(shí)都與數(shù)據(jù)中心網(wǎng)絡(luò)團(tuán)隊(duì)進(jìn)行交互。
目前,大多數(shù)企業(yè)環(huán)境中的微服務(wù)、容器與Service Mesh技術(shù)都處于早期部署階段。隨著技術(shù)本身的不斷成熟,IT團(tuán)隊(duì)必須評(píng)估多種Service Mesh選項(xiàng)——包括云服務(wù)、開(kāi)源方案以及各供應(yīng)商推出的專有產(chǎn)品。
另外,Service Mesh主要面向大型關(guān)鍵任務(wù)應(yīng)用程序,對(duì)小型應(yīng)用來(lái)說(shuō)可能太過(guò)復(fù)雜。如果企業(yè)的應(yīng)用程序特別適合Service Mesh部署,請(qǐng)務(wù)必保證IT部門為此制定明確計(jì)劃,將Service Mesh技術(shù)妥善整體至原有管理與自動(dòng)化平臺(tái)之內(nèi)。