“云版本文档”的版本间的差异

来自Lustre文件系统
跳转至: 导航搜索
软件发布
主要组件
 
(未显示同一用户的3个中间版本)
第69行: 第69行:
 
* [https://www.intel.com/content/www/us/en/high-performance-computing/hpc-orchestrator-overview.html Intel.com上的Lustre* 云版本软件的产品页面]。
 
* [https://www.intel.com/content/www/us/en/high-performance-computing/hpc-orchestrator-overview.html Intel.com上的Lustre* 云版本软件的产品页面]。
  
= 政务云(GovCloud) =
+
=== 政务云(GovCloud) ===
 
从2015年年中开始,云版本也可以提供给接入[http://aws.amazon.com/govcloud-us/ 政务云]地区的用户。政务云是一个安全、隔离的环境,适合需要ITAR和美国政府规定的其他敏感信息法规的工作负载使用。
 
从2015年年中开始,云版本也可以提供给接入[http://aws.amazon.com/govcloud-us/ 政务云]地区的用户。政务云是一个安全、隔离的环境,适合需要ITAR和美国政府规定的其他敏感信息法规的工作负载使用。
  
 
政务云内没有市场版本选项,因此,直接由Whamcloud提供支持。请联系我们的销售或支持团队了解更多详情。
 
政务云内没有市场版本选项,因此,直接由Whamcloud提供支持。请联系我们的销售或支持团队了解更多详情。
 +
 +
= Lustre软件的云版本 =
 +
本节将介绍Lustre云版本产品本身。在适当的部分会提供维基链接,以提供更多的细节。
 +
 +
== 产品目标 ==
 +
* 使基于云的计算工作负载能够使用高性能的Lustre存储。
 +
* 提供一致的、可靠的方式来创建、管理和监控云环境中的Lustre。
 +
* 降低配置和管理Lustre存储解决方案的整体复杂性。
 +
== 解决方案概述 ==
 +
客户填写一个表单,点击几个按钮,几分钟后就会准备好Lustre文件系统的云版本,并等待为其基于云的计算集群提供高性能存储。
 +
 +
基本流程如下(更多细节请参见[[亚马逊网络服务上的云版本]]):
 +
 +
* 在AWS市场上订阅产品--这是在你的AWS账户中激活产品的方式。
 +
* 选择适合您的工作负载的[https://aws.amazon.com/cn/cloudformation/ CloudFormation]模板,并根据需要调整其参数(服务器数量、存储容量、容量与服务器的比例等);然后启动模板。
 +
* 在CloudFormation完成创建文件系统后,您可以访问一个基于Web的控制台,该控制台适用于监控文件系统的健康和性能,还方便地显示一个客户端挂载命令,您可以使用该命令从计算客户端挂载文件系统。
 +
 +
== 解决方案详情 ==
 +
 +
== 主要组件 ==
 +
 +
Lustre软件的云版本在AWS虚拟私有云(VPC)中提供了一个高可用的(HA)Lustre文件系统。
 +
 +
<div id="图 1">
 +
[[文件:CE Overview.png|thumb|center|576px|图 1. 云版本概图]]
 +
</div>
 +
 +
=== CloudFormation === 
 +
创建云版本文件系统的第一步是向CloudFormation (CF) 提供模板。CF模板本质上是一个"盒子里的集群",因为它指定了在AWS中构建一个工作的机器集群所需的所有细节。除了虚拟机之外,CF还驱动AWS的API来创建网络子网、防火墙条目、服务ACL、负载平衡器、数据库、消息队列等。毫不夸张地说,AWS CF实现了软件定义数据中心。
 +
 +
云版本使用了很多AWS的功能,但需要了解的主要组件有:自动扩展组,用于服务发现的DynamoDB表,以及ENI/EBS池。
 +
 +
=== 自动扩展分组 ===
 +
云计算版使用[https://aws.amazon.com/autoscaling/ 自动扩展组](Auto Scaling Groups,ASGs)来维护用户指定的Lustre服务器实例数量作为模板参数。当一个实例被终止时(由于内核崩溃、AWS主机迁移或其他事故),自动扩展组会启动一个新的实例以恢复正确的实例数量。当该设施与Lustre启动脚本提供的启动后的配置和EBS/ENI迁移相结合时,就可以实现Lustre服务器的高可用性解决方案。
 +
=== DynamoDB表 ===
 +
云版本将一对[https://aws.amazon.com/dynamodb/ DynamoDB]表用于服务发现和资源注册。当一个实例被ASG启动时,该实例"知道"它的基本角色--因为它一定是一个OSS、一个MDS或MGS。除此之外,它还需要咨询DynamoDB表,以申请其在文件系统中的特定角色(如mds01、ss03等),并了解它应该使用哪些资源来履行该角色。
 +
=== 资源池 ===
 +
每个ASG实例必须在启动时申请一个文件系统角色(如 mgs、mds01、os04)。每个角色与单个[http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html 弹性网络接口](Elastic Network Interface, ENI)相关联,每个ENI与该角色的一组EBS卷相关联。Lustre需要稳定的网络标识符(对于本产品,TCP NID来自Lustre ENI的IP地址),因此采用了独立于实例的ENI。一个给定的NID与一些Lustre目标(OST、MDT和MGT)相关联。这些角色的ENI和EBS卷都是在CloudFormation创建过程中一次性创建的,并且在与角色关联之前一直处于无人认领状态。这些资源池是由运行在 MGS 实例上的进程创建的,这是一个仅与故障排除有关的实施细节。
 +
 +
== 示例初始化 ==
 +
云版本文件系统服务器由ASG启动和监控。当实例由ASG启动时,可以通过标准的Linux启动过程(grub->kernel->init)运行。实例运行后,它会启动cfn-init脚本,进而执行`loci init`。此时,会发生以下过程:
 +
 +
1. 通过检查ASG设置的实例元数据,确定实例角色类型(MGS、MDS、OSS)。
 +
 +
2. 实例试图为它的类型申请一个角色。
 +
  a. 如果该实例是某个角色的第一个申请者:
 +
      i. 角色类型索引递增
 +
    ii. 所属的资源
 +
    iii. 资源初始化(mkfs.lustre等)
 +
    iv. 挂载目标,开始Lustre服务
 +
  b. 如果实例不是某个角色的第一个申请者:
 +
      i. 它首先要验证旧的申请者是否在运行
 +
    ii. 所属的角色资源
 +
    iii. 挂载目标,开始Lustre服务。
 +
 +
== HA与故障转移 ==
 +
在传统的"物理机器上"的Lustre部署中(在私有数据中心的内部),HA是通过使用共享存储设备和集群协调软件(如Pacemaker)实现的。一个给定的Lustre服务器有一个或多个对等体,这些对等体可以共同对访问一组块设备,但每次只有一台服务器可以挂载给定的块设备。当一组目标的主服务器变得不可用时,集群协调软件会使这些目标在其中一个故障转移对等体上可用,客户最终会发现他们必须为这些目标使用故障转移对等体的NID。
 +
 +
在云部署中,用一个新的实例替换一个失败或失效的实例要简单得多。Lustre不处理服务器地址变化,所以每个服务器角色的IP地址都被分配给一个独立的网络接口(ENI)。一个ENI一次只能连接到一个实例。同样,一个给定的EBS卷也只能一次连接到一个实例上。使用这种单连接属性,可以确保永远不会出现任何多挂载或其他潜在冲突的危险。在新实例启动并报告自己的角色后,客户端重新连接到新实例上托管的目标,而且没有优先级。
 +
 +
<div id="图 2">
 +
[[文件:Failover Picture.png|thumb|center|576px|图 2. 故障转移]]
 +
</div>

2020年6月28日 (日) 23:18的最新版本

概述

本页面将介绍在亚马逊网络服务(Amazon Web Services)上运行Lustre云版本的相关概念和技术。这部分内容无法替代一般云计算概念方面的经验或培训。

亚马逊云概念

在本节中,将对AWS概念进行大致介绍,为讨论Lustre如何在AWS中运行奠定基础。

实例

AWS通过其弹性计算云(EC2)服务提供可租用的计算能力。EC2以不同的价位提供基于Xen的不同功能和容量的虚拟机。这些虚拟机实例的工作方式与任何其他环境中的虚拟机非常相似。它们可以被停止、重启和重装。当它们被终止时,意味着它们将永久停止,其资源返回到资源分配池中。

实例类型

由于AWS几乎处于持续升级的状态,EC2中当前的实例类型集变化相当频繁。应参考EC2实例类型列表以获取最新信息。截至2015年5月,推荐以下实例类型用于运行Lustre。

  • OSS:c4.8xlarge
  • MDS:c4.8xlarge
  • MGS:m3.xlarge

这些建议可以为不太熟悉Lustre或EC2的潜在用户提供指导。与任何Lustre部署一样,首要考虑的是网络性能(c3/c4实例(c3/c4实例类型支持增强网络),其次考虑存储性能和服务器规格(RAM/CPU)。随着规格的提高,每小时的实例成本也会增加。与任何解决方案设计一样,要想在成本和性能之间找到最佳平衡点,需要仔细了解解决方案的要求。

存储

实例存储(Instance Store)

EC2实例可以访问两种不同类型的块存储。基本的存储选项与每个实例一起分配,称为实例存储。这些卷在启动时立即作为常规linux块设备可用,并在高性能实例类型上使用SSD支持。实例存储提供高带宽和低延迟,但不提供任何高可用性(HA)保证。如果实例变得不可用或被终止,其存储也会消失。因此,实例存储不适合大多数Lustre部署。

弹性块存储

EC2实例可用的另一种块存储选项称为亚马逊弹性块存储(Amazon Elastic Block Storage, EBS)。EBS卷独立于特定实例而存在,并且可以无限期地存在。可以将EBS卷连接到实例,在卷上存储数据,终止实例后,可将卷连接到新的实例。EBS卷一次只能附加到一个实例上。当EBS卷连接到Linux实例时,它作为一个普通的块设备出现,通常从/dev/sdf开始,并在其后增加。

亚马逊没有给出EBS背后的实现细节,但它似乎涉及到在"真正的"块存储(SSD或磁性)和S3上进行数据剥离。总体结果是,给定的EBS卷可能比同等大小的物理驱动器更可靠,但亚马逊没有公布MTBF统计数据,因此我们无法确认这一点。故障还是会发生的,所以任何高可用的解决方案都需要对其进行规划。

截至2015年5月,gp2/io1卷类型的大小范围可以从1GiB到16TiB。目前还没有公布每个实例附加卷的数量的最大限制。

卷类型

可以创建的EBS卷有三种不同类型。对于Lustre来说,通用类型(gp2)是最具成本效益和实用性的类型。AWS关于EBS卷类型的文档能提供更多信息,下面内容仅为一个参考。

  • 标准型: 磁性(Magnetic,例"spinning rust")。这种类型基本上已被废弃,至少对于高性能工作负载来说是如此。最便宜,但最慢。
  • gp2:通用型固态硬盘。这种类型有3 IOPS/GIB的基准性能保证(即每配置一个GiB,保证3 IOPS)。
  • IO1: 规定的IOPS。更高的带宽,更低的延迟。保证IOPS性能,但也最昂贵。

简单存储服务

亚马逊简单存储服务(Simple Storage Service ,S3)提供了安全、可持续的、高度可扩展的对象存储。它是一个巨大的键/值存储,块状的bit被存储为值,可以通过用户提供的键进行检索。如果需要的话,还可以使用一些元数据来采用类似目录的层次结构。S3组织的基本单位是桶(bucket)。一个桶对应一个名称,这个名称在一个账户中必须是唯一的,并反过来提供对存储在桶中的对象的访问。可以设置桶的ACL,以确保对桶内容的适当访问。

云版本目前并没有使用S3进行存储,但在讨论用户需求时,了解一下S3是很有帮助的。从1.0.1版本开始,CE支持在创建文件系统后自动导入桶内容。在用户想要处理通过S3共享的大型公共数据集的情况下,这个功能会很有用。

网络

EC2实例有两种不同的网络选项。最初的网络选项现在被称为EC2 Classic(您的实例在与其他客户共享的网络中启动),并且正在被废弃。实例的首选网络选项是亚马逊虚拟私有云(Amazon Virtual Private Cloud,VPC),这也是CE推荐的选项。

VPC选项允许实例独立于其他用户,在AWS的逻辑隔离部分启动。每个亚马逊账户都默认创建了自己的VPC,用户可以选择创建额外的VPC来满足个人需求。

正如前面一节提到的,每种实例类型都有特定的计算能力(vCPU数量)、系统RAM和网络性能规格。对于生产型Lustre部署,建议不要使用没有增强网络功能的实例类型。

部署注意事项

除了选择正确的实例类型外,开发解决方案的另一个重要步骤是了解所需的网络拓扑结构。默认情况下,部署在VPC中的实例具有私有IP地址,并且没有VPC之外的网络访问。这意味着无法对AWS服务端点的访问--这一细节会给一些客户部署带来问题。为了让CE配置Lustre集群,软件必须能够访问AWS端点(ec2、s3等)。通过使用NAT实例或代理服务器,可以方便从VPC的实例进行访问。还可以选择为每个实例分配一个公共IP地址,但这种解决方案可能成本过高,而且出于安全原因,这种方案并不可取。

放置组(Placement Groups)

为了在实例之间确保10Gbps的带宽,用户必须定义一个放置组(PG),并将实例启动到该PG中。使用PG的缺点是,EC2难以共同放置足够的实例来满足请求,在这种情况下,将返回容量错误。

软件发布

云版本通过亚马逊机器映像(Amazon Machine Images,AMI)向公众提供。AMI是一个可启动的磁盘镜像,附带一些元数据。对于每个CE版本,我们都会从头开始创建一个新的CentOS镜像,然后将所需的Lustre组件添加到其中。每个AMI都有一个独特的ID,表示用户指定其集群中的实例应该使用哪个AMI。

您可能想知道将一个磁盘映像共享给大众使用是否是一个好主意--如果他们安装新软件会发生什么?答案是,每个实例都会得到一个新的AMI内容副本。这是通过EBS快照和其他"魔法"在幕后完成的。最终的结果是,每个实例都有自己的AMI的可写副本,它与原始副本完全隔离,当实例终止时,副本被删除。

AWS市场

AWS Marketplace为软件供应商提供了一个平台,可以将其产品提供给公众在亚马逊网络服务上使用。在市场上共享的AMI可能会有相关的成本,例如用户除了支付使用的底层AWS服务外,还要为使用AMI付费。

有关我们AWS市场产品的当前详情,请参见以下页面。

政务云(GovCloud)

从2015年年中开始,云版本也可以提供给接入政务云地区的用户。政务云是一个安全、隔离的环境,适合需要ITAR和美国政府规定的其他敏感信息法规的工作负载使用。

政务云内没有市场版本选项,因此,直接由Whamcloud提供支持。请联系我们的销售或支持团队了解更多详情。

Lustre软件的云版本

本节将介绍Lustre云版本产品本身。在适当的部分会提供维基链接,以提供更多的细节。

产品目标

  • 使基于云的计算工作负载能够使用高性能的Lustre存储。
  • 提供一致的、可靠的方式来创建、管理和监控云环境中的Lustre。
  • 降低配置和管理Lustre存储解决方案的整体复杂性。

解决方案概述

客户填写一个表单,点击几个按钮,几分钟后就会准备好Lustre文件系统的云版本,并等待为其基于云的计算集群提供高性能存储。

基本流程如下(更多细节请参见亚马逊网络服务上的云版本):

  • 在AWS市场上订阅产品--这是在你的AWS账户中激活产品的方式。
  • 选择适合您的工作负载的CloudFormation模板,并根据需要调整其参数(服务器数量、存储容量、容量与服务器的比例等);然后启动模板。
  • 在CloudFormation完成创建文件系统后,您可以访问一个基于Web的控制台,该控制台适用于监控文件系统的健康和性能,还方便地显示一个客户端挂载命令,您可以使用该命令从计算客户端挂载文件系统。

解决方案详情

主要组件

Lustre软件的云版本在AWS虚拟私有云(VPC)中提供了一个高可用的(HA)Lustre文件系统。

图 1. 云版本概图

CloudFormation

创建云版本文件系统的第一步是向CloudFormation (CF) 提供模板。CF模板本质上是一个"盒子里的集群",因为它指定了在AWS中构建一个工作的机器集群所需的所有细节。除了虚拟机之外,CF还驱动AWS的API来创建网络子网、防火墙条目、服务ACL、负载平衡器、数据库、消息队列等。毫不夸张地说,AWS CF实现了软件定义数据中心。

云版本使用了很多AWS的功能,但需要了解的主要组件有:自动扩展组,用于服务发现的DynamoDB表,以及ENI/EBS池。

自动扩展分组

云计算版使用自动扩展组(Auto Scaling Groups,ASGs)来维护用户指定的Lustre服务器实例数量作为模板参数。当一个实例被终止时(由于内核崩溃、AWS主机迁移或其他事故),自动扩展组会启动一个新的实例以恢复正确的实例数量。当该设施与Lustre启动脚本提供的启动后的配置和EBS/ENI迁移相结合时,就可以实现Lustre服务器的高可用性解决方案。

DynamoDB表

云版本将一对DynamoDB表用于服务发现和资源注册。当一个实例被ASG启动时,该实例"知道"它的基本角色--因为它一定是一个OSS、一个MDS或MGS。除此之外,它还需要咨询DynamoDB表,以申请其在文件系统中的特定角色(如mds01、ss03等),并了解它应该使用哪些资源来履行该角色。

资源池

每个ASG实例必须在启动时申请一个文件系统角色(如 mgs、mds01、os04)。每个角色与单个弹性网络接口(Elastic Network Interface, ENI)相关联,每个ENI与该角色的一组EBS卷相关联。Lustre需要稳定的网络标识符(对于本产品,TCP NID来自Lustre ENI的IP地址),因此采用了独立于实例的ENI。一个给定的NID与一些Lustre目标(OST、MDT和MGT)相关联。这些角色的ENI和EBS卷都是在CloudFormation创建过程中一次性创建的,并且在与角色关联之前一直处于无人认领状态。这些资源池是由运行在 MGS 实例上的进程创建的,这是一个仅与故障排除有关的实施细节。

示例初始化

云版本文件系统服务器由ASG启动和监控。当实例由ASG启动时,可以通过标准的Linux启动过程(grub->kernel->init)运行。实例运行后,它会启动cfn-init脚本,进而执行`loci init`。此时,会发生以下过程:

1. 通过检查ASG设置的实例元数据,确定实例角色类型(MGS、MDS、OSS)。

2. 实例试图为它的类型申请一个角色。

 a. 如果该实例是某个角色的第一个申请者:
     i. 角色类型索引递增
    ii. 所属的资源
   iii. 资源初始化(mkfs.lustre等)
    iv. 挂载目标,开始Lustre服务
 b. 如果实例不是某个角色的第一个申请者:
     i. 它首先要验证旧的申请者是否在运行
    ii. 所属的角色资源
   iii. 挂载目标,开始Lustre服务。

HA与故障转移

在传统的"物理机器上"的Lustre部署中(在私有数据中心的内部),HA是通过使用共享存储设备和集群协调软件(如Pacemaker)实现的。一个给定的Lustre服务器有一个或多个对等体,这些对等体可以共同对访问一组块设备,但每次只有一台服务器可以挂载给定的块设备。当一组目标的主服务器变得不可用时,集群协调软件会使这些目标在其中一个故障转移对等体上可用,客户最终会发现他们必须为这些目标使用故障转移对等体的NID。

在云部署中,用一个新的实例替换一个失败或失效的实例要简单得多。Lustre不处理服务器地址变化,所以每个服务器角色的IP地址都被分配给一个独立的网络接口(ENI)。一个ENI一次只能连接到一个实例。同样,一个给定的EBS卷也只能一次连接到一个实例上。使用这种单连接属性,可以确保永远不会出现任何多挂载或其他潜在冲突的危险。在新实例启动并报告自己的角色后,客户端重新连接到新实例上托管的目标,而且没有优先级。

图 2. 故障转移