在上一篇《技術文章 | 多架構部署:優勢有哪些?》中,我們主要介紹了多架構部署在能耗、占地空間和性能方面帶來的諸多優勢。本文將介紹如何把 HPE RL300 服務器引入 x86-only 的 Web 服務部署,并使用直接遷移的方法,將部分應用程序遷移到該服務器。由于大多數現代的 Web 應用程序都采用基于微服務的架構,因此單獨遷移單個微服務至新型的 Arm 服務器會更為簡便,無需將整個應用程序遷移至 arm64。
接下來,我們將以前端微服務作為多架構部署的一個實際用例。NGINX 是一款應用廣泛的 Web 服務器,適用于網上銀行、社交網絡、電子商務等多種 Web 應用,以及多個并發用戶在既定網站內瀏覽不同應用程序的場景。下面,本文將詳細介紹如何使用 NGINX 將此類流行的 Web 服務器擴展至 HPE RL300 服務器。
同時,我們還使用橫向擴展(scale-out)的復合 Web 服務評估案例研究的結果,并計算了將前端 NGINX 層遷移到 HPE RL300 服務器所帶來的益處。根據性能和每瓦性能數據的對比,把 NGINX 從某款 x86 處理器遷移到 Ampere Altra Max 處理器后,可節省多達 1/3 的機架空間,并降低 1/3 的功耗。此外,當整個 Web 服務繼續在多體系結構部署中運行時,其余的應用層仍在 x86 服務器上保持原狀,且性能不受任何影響。
先決條件
為了實施基于 x86 和 arm64 服務器的多架構部署,至少需要兩臺安裝了 Web 服務器軟件(NGINX)的服務器。其中,一臺采用 x86 處理器,以下稱為“主機 1”;另一臺則是搭載了 Ampere Altra Max 處理器的 HPE ProLiant RL300 服務器,以下稱為“主機 2”。
當然,用戶也可以選擇在某個特定服務器上運行多個虛擬機或容器,而不使用整機。
安裝 NGINX Web 服務器
為了向用戶展示應用程序的網頁內容,需要選用高性能的 Web 服務器 NGINX 作為應用程序的前端。根據操作系統的不同,可以選擇 YUM 或 APT 包管理工具進行軟件安裝。
sudo yum -y update sudo yum install ca-certificates sudo yum -y install nginx
首先,在 x86 服務器(主機 1)上部署 NGINX,并使其能連接到 NGINX。如果您已經啟用了防火墻,則請確保允許常規 HTTP 流量通過端口 80,8080;如果您配置了 SSL,則還需允許 HTTPS 流量通過端口 443 。
要啟動 NGINX 并驗證狀態,請運行以下代碼:
sudo systemctl start nginx sudo systemctl status nginx
通過 Web 瀏覽器連接到主機 1 的 IP 地址或主機名。如果您看到的是 NGINX 默認登陸頁面,說明您已成功安裝了 NGINX,并啟用了 Web 服務器的 HTTP 流量。
將 NGINX 配置為負載均衡器
在大規模集群部署中,可以使用多臺服務器托管 Web 應用程序的前端服務。負載均衡能夠帶來諸多好處,比如能夠實現應用程序的跨服務器擴展,提升程序性能,優化用戶體驗,以及增強冗余性。
NGINX 憑借其簡潔而強大的特性,可作為負載均衡器,有效提升服務器資源的利用率和運行效率。您只需按照指令配置 NGINX,指定其監聽連接的位置以及重定向的目標,即可實現負載均衡。
為了配置負載均衡,需要修改 NGINX 配置文件。默認情況下,該文件名為 **nginx.conf**,并放置在 **/etc/nginx** 目錄下。然而,具體的位置可能會根據安裝 NGINX 時所使用的軟件包管理系統和操作系統而定。
在 x86 服務器(主機 1)上,需要編輯 NGINX 配置文件,并定義 upstream 和 server 兩個模塊,具體操作如下:
# Define which servers to include in the load balancing scheme. http { upstream backend { server host1:8080; } # This server accepts all traffic to port 80 and passes it to the upstream. # Notice that the upstream name and the proxy_pass need to match. server { listen 80; location / { proxy_pass http://backend; } } # Use port 8080 for the web server configuration server { listen 8080; } }
要為 HTTPS 而不是 HTTP 配置負載均衡,只需使用"https"作為協議,然后使用以下命令重新啟動 NGINX。
sudo systemctl restart nginx
檢查 NGINX 是否成功重啟。當您在網絡瀏覽器中輸入負載均衡器的公共 IP 地址時,它會將請求傳遞給主機 1 上的后端服務器。
添加 RL300 以創建多架構部署
接下來,我們將在 HPE RL300 服務器(主機 2)上運行一個新的 NGINX 實例,以擴展前端部署。首先,使用上文“安裝 NGINX Web 服務器”部分所述的相同方法,在 RL300 服務器上安裝 NGINX。開源的 NGINX 軟件包在 x86 和 arm64 服務器上都運行良好。為了獲得 NGINX 的最佳性能,Ampere 提供了一些優化建議。此外,我們還為提供了針對 arm64 做源代碼編譯和構建 NGINX 的高效指南。
下一步,需要在服務器(主機 2)上配置 NGINX。我們不會將它配置為負載均衡器,服務器部分使用默認的 nginx.conf,端口為 8080。主機 2 上的 nginx.conf 文件將不包含 upstream 模塊,Server 模塊如下所示:
http { # This server accepts all traffic to port 8080 a server { listen 8080; } }
安裝完成后,啟動 NGINX 服務,并確保您可以通過 web 服務器上的主機 2 IP 地址訪問 NGINX 默認登陸頁面。
接下來,更新主機 1 上的 NGINX 負載均衡器服務,將新的 RL300 納入 NGINX 負載均衡器配置。編輯主機 1 上的 nginx.conf 文件,在 upstream 模塊添加主機 2 的 IP 地址。
# Define which servers to include in the load balancing scheme. # It's best to use the servers' private IPs for better performance and security. # Add the ip address for RL300 to the upstream. http { upstream backend { server host1:8080; server host2:8080; } # This loadbalancer accepts all traffic to port 80 and passes it to the upstream. # Notice that the upstream name and the proxy_pass need to match. server { listen 80; location / { proxy_pass http://backend; } } server { listen 8080; } }
使用以下命令重啟 NGINX:
sudo systemctl restart nginx
現在,當您訪問負載均衡器的 IP 地址時,它都會按照循環的方式將請求分發到 upstream 模塊中配置的兩個服務器上。至此,NGINX 的多架構部署已完成,用戶流量被分發到運行在 x86 和 arm64 服務器上的 NGINX 實例中。
將復合 Web 應用程序的前端(NGINX)
遷移到異構集群的優勢
為了深入了解將 NGINX 等服務遷移到 Ampere Altra 處理器的優勢,我們對一個由四層微服務組成的復合 web 服務進行了擴展的分析。這四層分別為:Web 前端(NGINX)、鍵值存儲(REDIS)、對象緩存(Memcached)以及后端數據庫(MySQL)。我們按照整個服務的百分比,為每層所選的應用程序分配了不同的權重。在我們的示例中,我們將負載設定為每秒 130 萬個請求,這些請求由服務的前端層接收,并由作為 HTTPS 服務器的 NGINX 進行處理。隨后,我們根據各層組件的權重設定了相應的總性能水平,以此確定加權四層 web 服務模型的整體負載。
以下圖表對比了運行在某 x86 服務器上的復合四層 web 服務及其所有組件微服務,以及基于 Ampere arm64 的混合架構部署。在混合架構場景中,web 服務前端(NGINX)組件遷移到了 Ampere Altra Max 云原生處理器,但其它三個組件微服務仍在某 x86 服務器上運行。結果顯示,即使僅將 web 服務的單一組件(NGINX)遷移到 Ampere Altra Max 云原生處理器,也能顯著減少所需服務器的總量,同時降低維持相同性能(以每秒請求數衡量)所需的整體功耗。
在數據中心里,若每機架最大功耗預算為 12.8 千瓦,將 NGINX 轉換為 Ampere Altra Max 云原生處理器后,所節省的功耗足以將機架占用空間從 3 個(總功耗預算 38.4 千瓦)減少到 2 個(總功耗 25.6 千瓦)。
總體而言,采用基于 Arm 架構的 HPE ProLiant RL300 服務器進行多架構部署的益處顯而易見。對于像 NGINX 這樣的微服務,使用容器化鏡像進行代碼遷移的過程簡單直接。通過負載均衡和反向代理等功能,可以輕松地在不同服務器上以混合架構(包括 x86 和 arm64)部署和運行應用程序的多個實例。此外,將關鍵工作負載遷移到 Ampere Altra Max 云原生處理器上,不僅能顯著降低能耗和減少數據中心占地面積,還能保證應用程序性能不受影響。
審核編輯:劉清
-
處理器
+關注
關注
68文章
19348瀏覽量
230267 -
操作系統
+關注
關注
37文章
6850瀏覽量
123432 -
虛擬機
+關注
關注
1文章
919瀏覽量
28279 -
HTTP接口
+關注
關注
0文章
21瀏覽量
1814 -
負載均衡器
+關注
關注
0文章
18瀏覽量
2607
原文標題:技術文章 | 多架構部署:如何將 NGINX 前端遷移至 HPE ProLiant RL300?
文章出處:【微信號:AmpereComputing,微信公眾號:安晟培半導體】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論