在上一篇《技术文章 | 多架构部署:优势有哪些?》中,我们主要介绍了多架构部署在能耗、占地空间和性能方面带来的诸多优势。本文将介绍如何把 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 云原生处理器上,不仅能显著降低能耗和减少数据中心占地面积,还能保证应用程序性能不受影响。
审核编辑:刘清
全部0条评论
快来发表一下你的评论吧 !