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