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