在美國波特蘭舉行的 nginx.conf 大會上,Nginx 公司發(fā)布了 NGINX 應(yīng)用平臺,這是一套基于開源技術(shù)構(gòu)建的四種產(chǎn)品,旨在為開發(fā)部署、管理和觀測微服務(wù)提供“一站式服務(wù)”。另外發(fā)布的版本還包括 Kubernetes Ingress Controller 解決方案,用于 Red Hat OpenShift 容器平臺上的負(fù)載平衡,以及將 NGINX 作為 Istio Service Mesh (服務(wù)網(wǎng)格)控制面板的服務(wù)代理的實(shí)現(xiàn)。新的 NGINX 應(yīng)用平臺由以下組件組成:NGINX Plus,流行的開源 NGINX Web 服務(wù)器的商業(yè)版本。
NGINX Web 應(yīng)用防火墻(WAF)。
NGINX Unit,可運(yùn)行 PHP、Python 和 Go 的新型開源應(yīng)用服務(wù)器。
NGINX Contrlller,用于監(jiān)控和管理 NGINX Plus 的中央控制面板。
NGINX Plus 由 Web 服務(wù)器、內(nèi)容緩存和負(fù)載均衡器組成。NGINX Web 應(yīng)用程序防火墻(WAF)是一款基于開源 ModSecurity 研發(fā)的商業(yè)軟件,為針對七層的攻擊提供保護(hù),例如 SQL 注入或跨站腳本攻擊,并根據(jù)如 IP 地址或者報頭之類的規(guī)則阻止或放行, NGNX WAF 作為 NGINX Plus 的動態(tài)模塊運(yùn)行,部署在網(wǎng)絡(luò)的邊緣,以保護(hù)內(nèi)部的 Web 服務(wù)和應(yīng)用程序免受 DDoS 攻擊和駭客入侵。NGINX Unit 是 Igor Sysoev 設(shè)計的新型開源應(yīng)用服務(wù)器,由核心 NGINX 軟件開發(fā)團(tuán)隊(duì)實(shí)施。Unit 是“完全動態(tài)的”,并允許以藍(lán)綠部署的方式無縫重啟新版本的應(yīng)用程序,而無需重啟任何進(jìn)程。所有的 Unit 配置都通過使用 JSON 配置語法的內(nèi)置 REST API 進(jìn)行處理,并沒有配置文件。目前 Unit 可運(yùn)行由最近版本的 PHP、Python 和 Go 編寫的代碼。在同一臺服務(wù)器上可以支持多語言的不同版本混合運(yùn)行。即將推出更多語言的支持,包括 Java 和 Node.JS。NGINX Controller 是 NGINX Plus 的中央集中式監(jiān)控和管理平臺。Controller 充當(dāng)控制面板,并允許用戶通過使用圖形用戶界面“在單一位置管理數(shù)百個 NGINX Plus 服務(wù)器”。該界面可以創(chuàng)建 NGINX Plus 服務(wù)器的新實(shí)例,并實(shí)現(xiàn)負(fù)載平衡、 URL 路由和 SSL 終端的中央集中配置。Controller 還具備監(jiān)控功能,可觀察應(yīng)用程序的健壯性和性能。
圖1. NGINX 應(yīng)用平臺(圖片來自 NGINX 博客)新發(fā)布的 NGINX Plus(Kubernetes)Ingress Controller 解決方案基于開源的 NGINX kubernetes-ingress 項(xiàng)目,經(jīng)過測試、認(rèn)證和支持,為 Red Hat OpenShift 容器平臺提供負(fù)載平衡。該解決方案增加了對 NGINX Plus 中高級功能的支持,包括高級負(fù)載平衡算法、第7層路由、端到端認(rèn)證、request/rate 限制以及內(nèi)容緩存和 Web 服務(wù)器。NGINX 還發(fā)布了 nginmesh,這是 NGINX 的開源預(yù)覽版本,作為 Istio Service Mesh 平臺中第7層負(fù)載平衡和代理的服務(wù)代理。它旨在作為挎斗容器(sidecar container)時,能提供與 Istio 集成的關(guān)鍵功能,并以“標(biāo)準(zhǔn)、可靠和安全的方式”促進(jìn)服務(wù)之間的通信能力。此外,NGINX 將通過加入 Istio 網(wǎng)絡(luò)特別興趣小組,與 Istio 社區(qū)合作。最近,“Service Mesh”的概念越來越受歡迎,因?yàn)樗试S開發(fā)人員通過基礎(chǔ)網(wǎng)格(或通信總線)來管理服務(wù)之間的流量,實(shí)現(xiàn)基于微服務(wù)的應(yīng)用的松散藕合,實(shí)施訪問策略和聚合遙測數(shù)據(jù)。Istio 是由 Google、IBM、Lyft 等領(lǐng)導(dǎo)的開源服務(wù)網(wǎng)格項(xiàng)目,目標(biāo)是為服務(wù)代理的數(shù)據(jù)平面提供控制面板。目前,Istio 與 Kubernetes 緊密集成,但也有支持虛擬機(jī)的計劃:如 Cloud Foundry 之類的 PaaS ,以及潛在“無服務(wù)器” FaaS 產(chǎn)品等平臺。默認(rèn)情況下,Istio 使用 Matt Klein 和 Lyft 團(tuán)隊(duì)創(chuàng)建的 Envoy 服務(wù)代理,并在 Lyft 生產(chǎn)環(huán)境中已使用多年。NGINX 似乎并非唯一一家實(shí)現(xiàn)在微服務(wù)網(wǎng)格中提供并擁有服務(wù)代理組件的潛在優(yōu)勢公司,因?yàn)?Buoyant 也正在修改其基于 JVM 的服務(wù)代理 Linkerd (由 Twitter Finagle 棧孵出),用于與 Istio 集成。NGINX nginmesh Istio 服務(wù)代理模塊:為 NGINX Web 服務(wù)本身采用的是 Golang 編寫而不是 C ,與作為挎斗模式運(yùn)行的開源 NGINX 集成(如圖 2 所示),并聲稱“占用的空間很小,具備先進(jìn)的負(fù)載平衡算法的高性能代理、緩存、SSL 終端、使用 Lua 和 nginScript 的腳本功能、以及具備細(xì)粒度訪問控制的各種安全功能。”
圖2. NGINX nginmesh 架構(gòu)(圖片來自 nginmesh GitHub repo)有關(guān) nginx.conf 中所有 NGINX 版本和公告的更多詳細(xì)信息,請參見 NGINX 博客。查看英文原文:NGINX Releases Microservices Platform, OpenShift Ingress Controller, and Service Mesh Preview