亚马逊AWS官方博客

如何使用Amazon EC2 Systems Manager自动创建数据一致的EBS快照(Part 2)

作者:王宇

上一期我们讨论了如何在不关机的前提下实现AWS上实例的数据一致性快照问题,传送门:《如何使用Amazon EC2 Systems Manager自动创建数据一致的EBS快照(Part 1)

在本文的介绍中,我们将共同探索如何利用Amazon EC2 Systems Manager(SSM)和Microsoft VSS (Volume Shadow Copy Service)来创建数据一致的EBS快照。

SSM + VSS数据一致快照的原理

VSS (Volume Shadow Copy Service)是一个Windows操作系统内置的服务,用来协调与VSS兼容的应用程序(如SQL Server、Exchange Server等)的备份工作,如冻结或释放这些应用程序的I/O操作等。

VSS服务能够启动和监督副本拷贝的创建。“副本拷贝”是指一个逻辑卷在某一个时间点上的数据一致快照。比如:“C:”是一个逻辑卷,它与EBS快照不同。创建副本拷贝的步骤包括:

  • 请求方向VSS发出创建副本拷贝的请求。
  • VSS provider创建并维护副本拷贝。
  • VSS写入器(writer)保证数据的一致性。写入器负责在VSS provider创建副本拷贝之前固化临时数据并冻结I/O操作,并在VSS provider完成创建后释放I/O操作。通常情况下,会为每一个与VSS兼容的应用程序分配一个独立的写入器(writer)。

我们可以使用Run Command在windows实例中运行一个PowerShell脚本:

$EbsSnapshotPsFileName = "C:/tmp/ebsSnapshot.ps1"

$EbsSnapshotPs = New-Item -Type File $EbsSnapshotPsFileName -Force

Add-Content $EbsSnapshotPs '$InstanceID = Invoke-RestMethod -Uri http://169.254.169.254/latest/meta-data/instance-id'

Add-Content $EbsSnapshotPs '$AZ = Invoke-RestMethod -Uri http://169.254.169.254/latest/meta-data/placement/availability-zone'

Add-Content $EbsSnapshotPs '$Region = $AZ.Substring(0, $AZ.Length-1)'

Add-Content $EbsSnapshotPs '$Volumes = ((Get-EC2InstanceAttribute -Region $Region -Instance "$InstanceId" -Attribute blockDeviceMapping).BlockDeviceMappings.Ebs |? {$_.Status -eq "attached"}).VolumeId'

Add-Content $EbsSnapshotPs '$Volumes | New-EC2Snapshot -Region $Region -Description " Consistent snapshot of a Windows instance with VSS" -Force'

Add-Content $EbsSnapshotPs 'Exit $LastExitCode'

首先创建了一个名为“ebsSnapshot.ps1”的PowerShell脚本文件,脚本中为实例的每一个EBS卷创建一个快照。

$EbsSnapshotCmdFileName = "C:/tmp/ebsSnapshot.cmd"

$EbsSnapshotCmd = New-Item -Type File $EbsSnapshotCmdFileName -Force

Add-Content $EbsSnapshotCmd 'powershell.exe -ExecutionPolicy Bypass -file $EbsSnapshotPsFileName'

Add-Content $EbsSnapshotCmd 'exit $?'

再创建第二个名为“ebsSnapshot.cmd”脚本文件,用来执行之前创建的PowerShell脚本。

$VssScriptFileName = "C:/tmp/scriptVss.txt"

$VssScript = New-Item -Type File $VssScriptFileName -Force

Add-Content $VssScript 'reset'

Add-Content $VssScript 'set context persistent'

Add-Content $VssScript 'set option differential'

Add-Content $VssScript 'begin backup'

$Drives = Get-WmiObject -Class Win32_LogicalDisk |? {$_.VolumeName -notmatch "Temporary" -and $_.DriveType -eq "3"} | Select-Object DeviceID

$Drives | ForEach-Object { Add-Content $VssScript $('add volume ' + $_.DeviceID + ' alias Volume' + $_.DeviceID.Substring(0, 1)) }

Add-Content $VssScript 'create'

Add-Content $VssScript "exec $EbsSnapshotCmdFileName"

Add-Content $VssScript 'end backup'

$Drives | ForEach-Object { Add-Content $VssScript $('delete shadows id %Volume' + $_.DeviceID.Substring(0, 1) + '%') }

Add-Content $VssScript 'exit'

第三个名为“scriptVss.txt”的文件包含了DiskShadow命令。DiskShadow是一个包含在Windows Server 2008及以上版本中的VSS工具。这个脚本在EBS上为每一个逻辑卷创建一个副本拷贝,再为这个EBS创建一个快照,最后删除副本拷贝来释放磁盘空间。

diskshadow.exe /s $VssScriptFileName
Exit $LastExitCode

最终,在脚本模式中来运行DiskShadow命令。

这个脚本将保存在一个新的SSM Document中并关联到一个维护窗口中,在每天的午夜时间在每一台标签“consistentsnapshot”等于“windowsvss”的实例上运行。

在AWS console中快速实践

1.  使用AWS CloudFormation快速创建一组资源,包括:

a)   VPC和互联网网关

b)   VPC中创建一个子网和一个新的路由表,来实现互联网连接和AWS APIs

c)   创建一个IAM角色来赋予EC2实例相应的权限

d)   创建一个安全组,来允许来自internet的RDP访问,稍后将要通过远程登录到这个EC2实例中

e)   在子网中使用IAM角色创建和启动一个Windows实例,并分配好安全组

f)   创建一个包含上面例子中脚本的SSM document文件,来创建数据一致EBS快照

g)   创建另一个SSM document文件,其中的脚本来恢复逻辑卷中的数据,这些脚本将在下面的章节中详细说明

h)   创建一个能够生成Maintenance Windows的IAM role

2.  创建一个Maintenance Window

a)   在EC2 Console中选择:Systems Manager Shared Resources -> Maintenance Windows -> Create a Maintenance Window

b)   Name:ConsistentSnapshots

c)   Specify with:CRON/Rate expression

d)   CRON/Rate expression:cron(0 0 * * ? *)

e)   Duration:2 hours

f)   Stop initiating tasks:0 hour

g)   选择Create maintenance window

3.  为Maintenance Window关联一组目标:

a)   在Maintenance Window列表中选择刚刚创建的维护窗口

b)   在Actions中选择Register targets

c)   Owner information:WindowsVSS

d)   Select targets by:Specifying tags

e)   Tag Name:ConsistentSnapshot

f)   Tag Value:WindowsVSS

g)   选择Register targets

4.  给Maintenance Window分配一个任务

a)   在Maintenance Window列表中选择刚刚创建的维护窗口

b)   在Actions中选择Register targets

c)   在Document中选择此前创建的用于创建EBS快照的SSM document文件名

d)   在Target by中选择刚刚创建的目标

e)   在Role中,选择在CloudFormation中创建的IAM Role

f)   在Execute on中,Targets:1,Stop after:1 errors

g)   选择Register task

运维窗口和一致性快照操作已经创建完毕,你可以在Maintenance Windows窗口中的History页面查看每一次任务的执行情况。

如何将逻辑卷恢复到数据一致状态

在本文上面的例子中,我们会注意到,在给EBS进行快照的脚本中,我们实际上是先使用DiskShadow进行了副本拷贝操作,这个操作中已经包含了对I/O操作的冻结和释放,在此之后再进行了EBS的快照操作。而在这两个操作之间的瞬间如果数据发生改变,那么EBS快照中的数据就可能不能保持数据一致状态。

解决这个问题有两个方向,其一是自己创建一个VSS provider来创建EBS快照,而不是使用DiskShadow采用的windows内置的VSS provider来执行,在自己创建的VSS provider中做到先创建EBS快照再释放I/O操作,来保持数据一致性。

本文会介绍另一个解决方向,就是检查在EBS快照中的每一个逻辑卷数据,如果发现数据不一致的情况,就将其恢复到此前的副本拷贝(副本拷贝中的数据被VSS writer保持了数据一致性)。

步骤如下:

1.  在EC2 console中,选择Instances

2.  搜索获得EBS进行了快照的实例,注意这个实例所在的AZ

3.  选择Snapshots

4.  选择最新的快照,再选择Actions,Create Volume

5.  选择与此前相同的AZ,然后选择Create, Volumes

6.  选择刚刚创建的Volume,然后选择Actions, Attach Volume

7.  在Instances中选择进行了EBS快照的实例,然后选择Attach

8.  选择Run Command, Run a command

9.  在Command document中选择恢复EBS的脚本Document,在Target中选择这个Windows实例,然后选择Run

恢复EBS的脚本如下:

$OfflineDisks = (Get-Disk |? {$_.OperationalStatus -eq "Offline"})

foreach ($OfflineDisk in $OfflineDisks) {

  Set-Disk -Number $OfflineDisk.Number -IsOffline $False

  Set-Disk -Number $OfflineDisk.Number -IsReadonly $False

  Write-Host "Disk " $OfflineDisk.Signature " is now online"

}

$ShadowCopyIds = (Get-CimInstance Win32_ShadowCopy).Id

Write-Host "Number of shadow copies found: " $ShadowCopyIds.Count

foreach ($ShadowCopyId in $ShadowCopyIds) {

  "revert " + $ShadowCopyId | diskshadow

}

foreach ($OfflineDisk in $OfflineDisks) {

  $CurrentSignature = (Get-Disk -Number $OfflineDisk.Number).Signature

  if ($OfflineDisk.Signature -eq $CurrentSignature) {

    Set-Disk -Number $OfflineDisk.Number -IsReadonly $True

    Set-Disk -Number $OfflineDisk.Number -IsOffline $True

    Write-Host "Disk " $OfflineDisk.Number " is now offline"

  }

  else {

    Set-Disk -Number $OfflineDisk.Number -Signature $OfflineDisk.Signature

    Write-Host "Reverting to the initial disk signature: " $OfflineDisk.Signature

  }

}

通过比较,将数据不一致的逻辑卷恢复到了数据一致状态,这个EBS就回到了数据一致的状态。

本次的介绍就到这里。如对AWS混合云架构解决方案感兴趣,请联系我们:yuwangcn@amazon.com

 

作者介绍:

王宇,AWS企业容灾解决方案业务拓展经理,目前负责AWS中国区的混合云、容灾和DevOps产品和解决方案。曾服务于VMware等传统私有云厂商,熟悉传统IT架构和私有云、混合云、公有云的解决方案融合。

利用 Amazon CloudWatch 监控 GPU 利用率

深度学习需要进行大量的矩阵相乘和向量运算,而 GPU (图形处理单元) 可以并行处理这些运算,因为 GPU 拥有数以千计的核心。Amazon Web Services 为您提供的 P2 或 P3 实例非常适用于运行深度学习框架,如 MXNet,该框架强调加速部署大型深度神经网络。

数据科学家和开发人员在微调网络时,希望优化其 GPU 的利用率,以使用最适当的批处理大小。在这篇博文中,我将向您展示如何使用 Amazon CloudWatch 指标监控 GPU 和内存的使用情况。至于 Amazon 系统映像 (AMI),我们建议您的实例使用 Amazon Deep Learning AMI

要监控和管理已启用 GPU 的实例,目前常见的有益做法是使用 NVIDIA 系统管理接口 (nvidia-smi),这是一个命令行实用程序。用户可以利用 nvidia-smi 查询 NVIDIA GPU 设备的 GPU 利用率、内存消耗情况、风扇使用情况、功耗以及温度信息。

由于 nvidia-smi 的基础是 NVIDIA Management Library (NVML),所以我们可以使用这个基于 C 的 API 库捕捉相同的数据点,并作为自定义指标发送给 Amazon CloudWatch。如需了解有关此库的更多信息,请转至参考手册。在这篇博文中,我们将使用此库的 Python 包装程序 pyvnml

Amazon CloudWatch 可以非常出色地监控您在 EC2 实例上的工作负载,无需设置、管理,也无需为它扩展系统和基础设施。默认情况下 CloudWatch 可提供 CPU 利用率、磁盘读取操作、磁盘写入操作、网络输入和网络输出等指标。(点击此处了解适用于您的实例的完整指标列表)

除了提供这些指标,我们还能够使用 API、软件开发工具包或 CLI 通过 Amazon CloudWatch 自定义指标推送我们自己的数据点。我们将使用 Python Boto3 软件开发工具包。

(more…)

不要错过:了解 AWS 的一些最新发布

如此多的发布和云创新,正在以令人难以置信的速度接踵而来。这篇迟来的博文会概要介绍今年夏天直到九月底发布的一些非常棒的服务和功能。

今天我希望与您分享的发布和功能有:

  • 对 RDS MySQL 和 Amazon Aurora 的数据库用户使用 AWS IAM 进行身份验证
  • Amazon SES 声誉控制面板
  • Amazon SES 打开和单击跟踪指标
  • 解决方案构建器团队推出的无服务器映像处理程序
  • 解决方案构建器团队推出的 AWS Ops Automator

现在就让我们来深入了解一下吧!

对 RDS MySQL 和 Amazon Aurora 的数据库用户使用 AWS IAM 进行身份验证

您是否一直希望能够使用 AWS IAM 管理对 Amazon RDS 数据库实例和集群的访问权限?现在您的梦想成真了。Amazon RDS 已发布了这个功能,您可以使用 IAM 管理对 Amazon RDS for MySQL 和 Amazon Aurora 数据库的访问权限。

对于这个全新服务功能,最令我欣喜的是它非常容易上手。要使用 IAM 对数据库用户进行身份验证,您需要在创建、修改或还原您的数据库实例或集群时选择启用 IAM 数据库身份验证复选框。您可以使用 RDS 控制台、AWS CLI 和/或 Amazon RDS API 启用 IAM 访问。

对数据库进行 IAM 身份验证配置后,客户端应用程序可提供由 IAM 安全令牌服务生成的临时安全凭证,从而对数据库引擎进行身份验证。可以使用这些凭证代替向数据库引擎提供密码。

您可以查看 Amazon RDS 用户指南,进一步了解如何使用 IAM 针对 MySQL 和 Aurora 提供权限并进行身份验证。

Amazon SES 声誉控制面板

我非常激动地宣布,我们发布的声誉控制面板可以针对电子邮件发送情况提供综合报告,从而帮助 Amazon Simple Email Service 客户更好地利用发送电子邮件的最佳实践指南。该控制面板有助于主动管理所发送的电子邮件,使得客户能够全面掌握账户的运行状况、发送指标、合规性以及执行状态。

声誉控制面板将提供以下信息:

  • 账户状态:账户运行状态的说明。
    • 正常 – 目前没有影响账户的问题。
    • 试用 – 账户处于试用状态;必须解决导致账户处于试用状态的问题,才能避免账户暂停
    • 试用结束决策待处理 – 您的账户处于试用状态。在采取行动前,Amazon SES 团队成员必须检查您的账户。
    • 关闭 – 您的账户已关闭。无法使用 Amazon SES 发送电子邮件。
    • 关闭待处理 – 您的账户处于试用状态;导致账户处于试用状态的问题未解决。
  • 退回邮件率:被退回的已发送电子邮件百分比,以及退回邮件率状态消息。
  • 投诉率:在已发送电子邮件中,收件人报告为垃圾邮件的百分比,以及投诉率状态消息。
  • 通知:与账户声誉相关的其他消息。

Amazon SES 打开和单击跟踪指标

Amazon SES 最近新增的另一项激动人心的功能是,支持电子邮件打开和单击跟踪指标。现在,SES 客户可以利用电子邮件打开和单击跟踪指标功能跟踪他们发送的电子邮件何时被打开,并跟踪电子邮件中的链接何时被单击。使用此 SES 功能,您可以更好地跟踪电子邮件营销活动的参与度及效果。

该功能的工作原理?

如果使用电子邮件打开跟踪功能,SES 会在您选择跟踪的电子邮件中添加一个微型透明图像。当这封电子邮件被打开后,邮件应用程序客户端会加载上述跟踪标记,从而触发 Amazon SES 的打开跟踪事件。对于电子邮件单击 (链接) 跟踪,电子邮件和/或电子邮件模板中的链接应替换为自定义链接。自定义链接被单击后,SES 中会记录一个单击事件,自定义链接会带电子邮件用户转到原始电子邮件中的链接目的地。

您可以在 SES 中新建配置集,或更改现有配置集,从而使用全新的打开跟踪和单击跟踪功能。您可以选择 Amazon SNSAmazon CloudWatchAmazon Kinesis Firehose 作为接收“打开和单击指标”的 AWS 服务,然后只需要选择一个新的配置集,就可以针对您要发送的任何电子邮件成功启用这些新功能。

AWS 解决方案:无服务器映像处理程序和 AWS Ops Automator

AWS 解决方案构建器团队一直在努力工作,帮助所有用户解决常见的体系架构问题,从而更轻松地在 AWS 上生成并运行应用程序。您可以在 AWS Answers 页面上找到这些解决方案。今年初秋在 AWS Answers 上发布的两种全新解决方案是无服务器映像处理程序AWS Ops Automator
开发无服务器映像处理程序是为了提供一种解决方案,以帮助客户动态地处理、操作并优化在 AWS 云中对映像的处理。这个解决方案结合了用作缓存的 Amazon CloudFront,动态检查映像及修改映像的 AWS Lambda,以及用于存储映像的 Amazon S3 存储桶。此外,无服务器映像处理程序还可利用开源映像处理套件 Thumbor 进行额外的映像操作、处理和优化。

AWS Ops Automator 解决方案可使用基于时间和基于事件的触发器帮助您将手动任务自动化,从而实现快照调度等任务的自动化。该解决方案可以提供自动化任务的架构,并包括任务审计跟踪、日志记录、资源选择、扩展、并发处理、任务完成处理以及 API 请求重试。该解决方案包括以下 AWS 服务:

  • AWS CloudFormation:一个模板,用于启动微服务核心框架,和由解决方案生成的任务配置
  • Amazon DynamoDB:存储任务配置数据的表,用于定义事件触发器、资源,并保存操作结果和错误。
  • Amazon CloudWatch Logs:提供日志,用于跟踪警告和错误消息
  • Amazon SNS:向订阅电子邮件地址发送消息的主题,解决方案会向该地址发送日志记录信息

祝您探索和编程愉快。

Tara

全新 – AWS Direct Connect 网关 – 跨区域 VPC 访问

准备写这篇文章时,我回顾了一下 2012 年当我们推出 AWS Direct Connect 时我写过的博客文章。应企业客户的要求,我们创建了 Direct Connect 让他们建立到 AWS 区域的专用连接,以追求更高的私密性、更多数据传输带宽和更易预测的数据传输性能。从开始时的一个 AWS 区域、一个 colo,Direct Connect 现在遍布每个公有 AWS 区域,并且可从分散在全球各地的数十个 colo 进行访问 (上次统计超过 60 个位置)。我们的客户现已全心投入于 Direct Connect,我们也添加了一些功能,例如 链接聚合Amazon EFS 支持CloudWatch 监控HIPAA 资格。仅在过去五周内,我们就已在休斯顿 (德克萨斯州)、温哥华 (加拿大)、曼彻斯特 (英国)、堪培拉 (澳大利亚) 和 珀斯 (澳大利亚) 增加了 Direct Connect 位置。

如今,我们通过增加 Direct Connect 网关让 Direct Connect 变得更简单但更强大。我们还在为所有区域中的 Direct Connect 客户提供创建公有虚拟接口的能力,公有虚拟接口可以接收我们的全局 IP 路由,并且可以访问我们的服务的公有终端节点和更新 Direct Connect 定价模型。

下面我们来了解一下上述每项功能。

新的 Direct Connect 网关
您可以用新的 Direct Connect 网关跨越分布在多个 AWS 区域的 Virtual Private Cloud (VPC) 建立连接,而不再需要为每个 VPC 建立多个 BGP 会话,从而减少了您的管理工作负担和网络设备负载。

使用此功能,您还可以从任意 Direct Connect 位置连接到参与连接的任何 VPC,进一步降低跨区域使用 AWS 服务所产生的成本。

下图显示了借助 Direct Connect 网关 (每个“锁”图标表示一个虚拟专用网关) 可以实现的简化。简化前:

简化后:

引用特定 Direct Connect 网关的 VPC 的 IP 地址范围一定不能重叠。现在,这些 VPC 必须全在同一 AWS 账户中;我们计划以后提高此要求的灵活性。

每个网关都是一个跨所有公有 AWS 区域存在的全局对象。区域间通过网关进行的所有通信都跨 AWS 骨干网进行。

创建 Direct Connect 网关
您可以通过以下方式创建 Direct Connect 网关:使用 Direct Connect 控制台或通过从代码中调用 CreateDirectConnectGateway 函数。我要使用控制台!

首先,我打开 Direct Connect 控制台并单击 Direct Connect Gateways

列表是空的,因为现在还没有网关。我单击 Create Direct Connect Gateway 改变这一状况:

为网关指定一个名称,输入我的网络的私有 ASN,然后单击 Create。ASN (自治系统编号) 必须位于在 RFC 6996 中定义为私有的某个范围内:

我的新网关稍后会显示在其他 AWS 区域中:

我在俄亥俄州有一个 Direct Connect 连接,我将用它来创建 VIF:

现在我创建一个私有 VIF,它引用该网关和连接:

几秒后就可以用了:

我已经有了一对 CIDR 不重叠的 VPC,每个还挂载了一个虚拟专用网关。这些是 VPC (为方便演示,我会将它们显示在同一区域中):

下面是虚拟专用网关:

我返回 Direct Connect 控制台并导航到 Direct Connect Gateways。选择我的网关,然后从 Actions 菜单中选择 Associate Virtual Private Gateway

然后选择我的两个虚拟专用网关并单击 Associate

如果我的 VPC 在不同的 AWS 区域中 (通常如此),同样的过程适用。在本篇文章中,向您演示一次操作就够了。

虚拟网关关联大约在一分钟左右完成 (状态开始为 associating):

当状态变为 associated 时,您的本地网络和 VPC 之间就可以通过 AWS Direct Connect 连接通信了,无论 VPC 在哪个 AWS 区域。

用于服务终端节点的公有虚拟接口
现在您可以创建公有虚拟接口,这些接口允许您通过 Direct Connect 访问在任意 AWS 区域 (AWS 中国区域除外) 运行的 AWS 服务的 AWS 公有服务终端节点。这些接口 (通过 BGP) 接收 Amazon 的全局 IP 路由。您可以在 Direct Connect 控制台中创建这些接口,第一步是选择 Public 选项:

更新定价模型
鉴于 AWS 区域和 AWS Direct Connect 位置的不断增加,数据传输现在基于 Direct Connect 和源 AWS 区域的位置进行定价。与基于 AWS Direct Connect 位置的旧模型相比,新定价模型更为简单。

现在提供
这一新功能现已推出,您可以立即开始使用。您可以免费创建和使用 Direct Connect 网关;只需根据端口小时和数据传输支付日常 Direct Connect 价格

Jeff

Apache MXNet 版本添加了对新的 NVIDIA Volta GPU 和 Sparse Tensor 的支持

我们对 Apache MXNet 版本 0.12 的发布感到很兴奋。MXNet 社区的参与者密切合作,为用户带来了新的增强功能。在此版本中,MXNet 添加了两项新的重要功能:

  • 对 NVIDIA Volta GPU 的支持,这使用户能够大大减少神经网络模型的训练和推理时间。
  • 对 Sparse Tensor 的支持,这使用户能够以最有利于存储和计算的方式使用稀疏矩阵训练模型。

对 NVIDIA Volta GPU 架构的支持

MXNet v0.12 版本添加了对 NVIDIA Volta V100 GPU 的支持,这使客户训练卷积神经网络的速度比 Pascal GPU 的速度快 3.5 倍。训练神经网络涉及数万亿次的浮点数 (FP) 乘法与加法运算。这些计算通常已使用单精度 (FP32) 完成以实现较高的准确度。但是,最近的研究表明,用户可以通过使用半精度 (FP16) 数据类型的训练获得与使用 FP32 数据类型的训练相同的准确度。

Volta GPU 架构引入了 Tensor Core。每个 Tensor Core 每个时钟周期可执行 64 次乘法和加法混合运算,约为每个 CUDA 核心在每个时钟周期内执行的 FLOPS 的四倍。每个 Tensor Core 执行如下所示的运算:D = A x B + C,其中 A 和 B 是半精度矩阵,而 C 和 D 可以是半精度或单精度矩阵,从而执行混合精度训练。利用新的混合精度训练,用户可以通过对网络的大多数层使用 FP16 并在必要时使用更高精度的数据类型来获得最佳训练绩效,且不会降低精度。

MXNet 使用户能够轻松使用 FP16 训练模型以利用 Volta Tensor Core。例如,您只需在 MXNet 中通过将以下命令选项传递到 train_imagenet.py 脚本即可启用 FP16 训练。

--dtype float16

最近,我们宣布推出一套新的 AWS Deep Learning AMI,它们预安装了针对 Amazon EC2 P3 实例系列中的 NVIDIA Volta V100 GPU 进行了优化的各种深度学习框架,其中包括 MXNet v0.12。只需在 AWS Marketplace 中单击一下鼠标即可开始;或者,您也可以按照此分步指南操作,开始使用您的第一个笔记本

(more…)

混合云架构顿悟时刻

每周,我都会与好几个高管会面,他们正在使用云改变技术为其业务带来价值的方式。开始使用云的动机各不相同,但在我的谈话中,一个始终如一的主题是云可让组织将更多的资源投放在其核心业务上、更快地移动且更安全。

这种转变不会在一夜之间发生,我经常将这个过程称为旅程。在此期间,您的企业仍然需要运营现有 IT 资产以保持业务正常运行。虽然我提及的大多数企业都正在将其 IT 项目组合中的部分或全部项目迁移到云,但他们也意识到,云并不是一个“全有或全无”的价值主张。当每个企业都意识到这一点时,他们就能够将其本地 IT 资产与云联系起来,并利用这种联系逐渐将其 IT 项目组合的重心迁移到云。

去年,我写了有关云中的混合架构的三个神话的文章,时至今日,我在与高管讨论混合云架构时仍会遇到这些问题。如果您仍在梳理有关您的组织的混合云架构的观点,我建议您考虑一下我在那篇文章中提到的要点。

这篇文章的其余内容详述了当我担任 Dow Jones 的首席信息官以及我们首次实现混合云架构时,我的团队和我的“顿悟”时刻。

混合顿悟时刻

2012 年,我的老板 (随后成为了 Dow Jones 的首席执行官) 提出了一个假设,我们都认为这是一个巨大的商机:如果华尔街日报 (Dow Jones 旗舰 B2C 产品之一) 的所有订户拥有全球大部分财富,Factiva 和 Dow Jones Newswires (Dow Jones 的 B2B 产品) 的所有订户管理全球大部分财富,那么我们可以为他们提供一种用于相互联系和通信的机制来创建一个有价值的平台。

我们从零开始,并且想快速行动。我们组建了一个非常小的工程师和设计师团队来构建这个概念,让他们能够自由地选择他们认为可以完成这项工作的工具。6 周后,通过几个开源的自动化 AWS 服务以及大量的艰苦工作,我们便启动并运行了一个高可用性且不受灾难影响的应用程序。我们新发现的将技术交付给业务的能力很快成为了我们的“英雄”项目,并帮助我们鼓励我的团队和管理层利益相关者与我们一起踏上旅程。

随着我们将此应用程序集成到我们的更多产品中,我们发现还需要将它与我们的一些仅限内部使用的身份管理系统集成。这些系统中的一些系统不会 (也不应) 公开到 Internet 上,因此无法通过我们的在公共 Internet 中的 AWS 上运行的应用程序进行访问。

我们的网络、基础设施和开发团队的工程师已开始寻找解决这个问题的方法。经过一番研究,我们发现我们可利用 Amazon VPC 在我们内部的 IP 地址空间内创建一个虚拟网络并将我们的应用程序放入 VPC 中。

在阅读 AWS 文档并决定我们如何使用我们的内部防火墙规则管理 AWS 安全组的集成之后,团队便开始工作了。在 45 分钟内,他们创建了 VPC、为我们在公共 Internet 上运行的实例拍摄了快照,使实例出现在 VPC 中 (在其中为实例分配了内部子网中的 IP 地址)、将入站流量路由至新实例、实现了从实例到内部身份系统的连接并完成了迁移。

我们对于此过程如此简单感到惊讶,而让我们感到更惊讶的是,我们发现有机会通过在云中构建的系统来增强和扩展现有的旧系统。

在接下来的几年里,我们的开发运营团队 (也称为我们的云卓越中心) 通过实现 VPC 创建和监管的自动化,将我们从此练习中学到的知识编入到一些参考架构中以用于我们的各个业务方面。借助这个简单而强大的策略,我们使用此混合架构模型在云中构建和增强所有现有系统,而无需立即迁移所有系统。

从那时起,我已与拥有类似的“顿悟”时刻的高管进行了谈话。一旦他们意识到无需放弃所有现有的基础设施投资并且仍可利用云,就会产生大量的可能性。这使其团队有时间进行学习,安全实施现有投资/折旧计划,并且仍从云的弹性、敏捷性、安全性和成本特性中受益。

您在设置您的混合架构时是否有顿悟时刻?请一定告诉我!

不断构建,
-Stephen
orbans@amazon.com
@stephenorban
http://aws.amazon.com/enterprise/

注:实现混合架构是我在企业云之旅系列文章中撰写的第 6 个最佳实践 (共 7 个最佳实践)。其他 6 个最佳实践为:提供执行支持给您的员工培训创造试验文化吸引合作伙伴创建云卓越中心和实施云优先策略。请保持关注以了解有关每个最佳实践的更多信息,并查阅此处的电子书集合

 

向员工传授云知识时需要考虑的 11 个注意事项

告诉我,我会忘掉。教导我,我会记住。让我参与,我能掌握。- Benjamin Franklin

我在上一篇文章中提到,只要让员工接受适当的教育,您就拥有了充分发挥云技术优势所需的资源。

那么,您 (首席变更管理官) 该如何教育员工,以便他们能够加快您的云之旅?每个组织的云之旅都将是独一无二的,但根据我的观察,取得成功的组织还是有一些共通之处的。以下是有关这些共通之处的 11 个注意事项:

1. 从有意义但很基本的事情做起。

当您的团队完成对业务至关重要的事情后,他们会即刻明白云技术的实际优势。我见过有些公司将工作重点放在了无足轻重的小事上面,结果,他们取得的进展比预想的要慢。当然,您肯定不希望在头几个项目上冒太大的风险,但您需要从足够重要、能够展示业务收益的项目开始。这样的项目有很多 — 简单的网站、移动应用程序、简化数据访问的 API 或文件备份/灾难恢复改进项目。如果将团队教育扎根于实际应用之中,他们就能更快地将学到的知识应用于更多的项目。

2. 利用 AWS 培训

我在以前的文章中提到过 AWS 提供的几个很好的培训项目。这些项目帮助了成百上千家公司掌握了云技能。AWS 将每次培训合作都当成是改进的机会,开发了多样化的课程和各种授课机制,允许组织定制满足其特定需求的培训。我在道琼斯工作时,我们团队里的几乎每一位技术人员都接受过培训,这些培训内容后来汇总成了 AWS 技术基础知识课程。除了帮助我们的员工获得新技能以外,这些培训还打消了他们刚刚踏上云之旅时出现的莫名恐惧感。

3. 给团队一些时间进行试验。

营造试验文化是云之旅的下一条最佳实践,在激励员工学习时,这一点非常有用。创新来自于试验。借助云技术,您不必进行大量前期投资就能尝试各种新想法,这可帮助您的团队创造出颠覆性的行业产品。给您的团队一些自由度,让他们以新的方式实现现有项目。

4. 设定鼓励学习和试验的目标。

大多数公司会为员工设定目标和/或关键绩效指标,并将这些目标与绩效挂钩。这些现有机制是强化您的策略并产生您所期望的行为的良好途径。您可以围绕各种主题设置目标,例如:相关培训课程的完成度、释放了多少预算、采用适当的云架构后运营卓越性有多大改善等。这样做可以传递“领导层真心希望为每个人创造试验和学习机会”的信号。

5. 设定时间限制和前进步伐。

当您转向试验文化时,这一点尤为重要。毕竟,结果才是最重要的。您可以通过设定每个项目的截止日期来帮助团队成员在试验和运用其已学到的知识之间取得平衡。有时,您的团队可能会因为这些约束而作出妥协。随着云之旅进程的深入,您需要制定一个应对此类妥协的机制。但是,您的团队将一刻不停地学习和提高技能,以便为下一个项目做好准备。

6. 发现并消除变革阻力。

所有这些注意事项都旨在为员工提供帮助他们获得成功所需的工具,以减少员工对变革的抵制。但即使做好所有这一切,您的组织中还是会有人继续抵制变革。在阐明目的一文中,我对这一挑战作了说明。您需要理解团队的忧虑,心平气和地看待做得好和做得不好的地方,并迅速消除不必要的摩擦。这引出了我要讲述的下一个要点。

7. 不要害怕赋予员工新的角色。

以有意义的方式迁移到云不仅仅是技术转型,同样也是一场文化变革。我发现,给予员工担任新角色的机会可以帮助他们克服对变革的抵制。我一直偏向于首先检视公司内部,因为系统知识非常宝贵,通常是不必要的损失。在 Bloomberg 的 11 年任期里,我担任过六种差异极大的角色。拥有如此多的机会是我一直呆在 Bloomberg 的主要原因之一。寻找为员工提供新机会的方法可加强他们的参与感,有助于留住员工。

8. 向员工指明其在组织整体蓝图中的作用。

当您知道自己在组织大局中的作用时,很容易对自己的工作感到兴奋。请务必考虑到每一个角色,并传达其在团队中的重要作用。我再强调一下,了解组织如何将其目标与部门和/或个人目标协调一致,并找到一种方法来针对每个角色进行调整。

9. 参加行业活动,了解他人在做些什么。

大多数人可从他人的成功和失败经历中学到很多东西。到目前为止,我从事为大型公司制定云支持技术战略的工作已经五年多了。但令我惊讶的是,每次出席 AWS re:Invent、AWS 峰会及其他技术活动,我还是能学到不少的知识。请给您的员工一些时间,让他们梳理知识、了解新思想。了解各种各样的想法 (即使是您确定不会赞同的想法) 是创造教育机会和加强您的策略的良好途径。

10. 向您的合作伙伴学习。

AWS 合作伙伴网络中有成千上万家组织。您可能已经与其中的许多组织建立了稳定的合作伙伴关系,但总会有一些新的合作伙伴值得您学习。据我观察,有非常多的大型企业越来越倾向于与“在云中诞生”的小型、新创办的系统集成商 (如 Cloudreach2nd Watch  Minjar) 合作,以加快自身的云战略进程并革新其 IT 文化。

接下来是最后一个要点。

11. 在组织中建立适合自身的培训制度。

随着云迁移进程的逐步深入,您会发现组织中的一些团队或个人希望与他人分享自己学到的知识。理想情况下,这个组织会是您的云卓越中心 (这是云之旅的另一条最佳实践,稍后我会详细解释这一点)。我在道琼斯工作时,我们的 DevOps 团队会定期举办“DevOps Days”交流会,以便该团队与组织中的其他人分享其开发的云最佳实践、框架和管理模式。我曾与其他几家“财富 500 强”企业交流过,他们也都制定了适合自己组织的类似计划。

您认为还有什么需要补充的吗?请一定告诉我!

不断前进
-Stephen
orbans@amazon.com
@stephenorban
http://aws.amazon.com/enterprise/

 

产品更新 – Amazon EC2 P3 实例多达 8 个 NVIDIA Tesla V100 GPUs 提供支持

自从我们于 2006 年发布最初的 m1.small 实例以来,在客户需求的推动以及不断发展的先进技术的支持下,我们后续推出了各种强调计算能力、超频性能、内存大小、本地存储和加速计算的实例。

新的 P3
现在,我们正在打造下一代 GPU 加速的 EC2 实例,这些实例将会在 4 个 AWS 区域提供。P3 实例由多达 8 个 NVIDIA Tesla V100 GPU 提供支持,可用于处理计算密集型的机器学习、深度学习、计算流体动力学、计算金融学、地震分析、分子模拟和基因组学工作负载。

P3 实例使用运行速度可高达 2.7 GHz 的 Intel Xeon E5-2686v4 定制处理器。有三种大小的实例可供选择 (所有均仅限 VPC 和 EBS):

模型 NVIDIA Tesla V100 GPU GPU 内存 NVIDIA NVLink vCPU 主内存 网络带宽 EBS 带宽
p3.2xlarge 1 16 GiB 不适用 8 61 GiB 最高 10 Gbps 1.5 Gbps
p3.8xlarge 4 64 GiB 200 GBps 32 244 GiB 10 Gbps 7 Gbps
p3.16xlarge 8 128 GiB 300 GBps 64 488 GiB 25 Gbps 14 Gbps

每个 NVIDIA GPU 都封装了 5,120 个 CUDA 核心和另外 640 个 Tensor 核心,最高可以提供 125 TFLOPS 的混合精度浮点、15.7 TFLOPS 的单精度浮点和 7.8 TFLOPS 的双精度浮点。在两种较大的实例上,GPU 通过以高达 300 GBps 的总数据速率运行的 NVIDIA NVLink 2.0 连接在一起。 这使 GPU 可以高速交换中间结果和其他数据,而不必使其通过 CPU 或 PCI-Express 结构进行。

什么是 Tensor 核心?
我在开始写这篇文章之前,从未听说过“Tensor 核心”这个词。根据 NVIDIA 博客上的这篇非常有帮助的文章的介绍,Tensor 核心是专为加快大型、深度神经网络的训练和推理而设计的。每个核心可以快速高效地将两个 4×4 半精度 (也称为 FP16) 矩阵相乘,然后将得到的 4×4 矩阵与另一个半精度或单精度 (FP32) 矩阵相加,最后将得到的 4×4 矩阵以半精度或单精度的形式存储起来。下面是摘自 NVIDIA 博客文章中的示意图:

此运算发生在深度神经网络训练进程的最内层循环中,这个出色的示例展示了如今的 NVIDIA GPU 硬件是如何为应对非常具体的市场需求而专门打造的。顺便提一下,有关 Tensor 核心性能的混合精度这个限定词意味着,它非常灵活,完全可以处理 16 位和 32 位浮点值组合使用的情况。

性能视角
我总是喜欢将原始的性能数字放入到实际生活视角中,这样,这些数字与生活的关系就会更加密切,并且更有意义 (希望如此)。考虑到单个 p3.16xlarge 上的 8 个 NVIDIA Tesla V100 GPU 可以每秒执行 125 万亿次单精度浮点乘法,要将它与现实相联系就变得异乎寻常地困难。

让我们回到微处理器时代之初,想想我在 1977 年夏天购买的 MITS Altair 中的 Intel 8080A 芯片。该芯片使用 2 MHz 时钟频率,每秒可以执行大约 832 次乘法 (我使用了此处的数据并更正为更快的时钟速度)。p3.16xlarge 比该芯片快了大约 1500 亿倍。然而,从那年夏天到现在才过去了 12 亿秒。换言之,我现在一秒钟所做的计算,比我的 Altair 在过去 40 年里可以完成的计算的 100 倍还要多!

1981 年夏季发布的 IBM PC 有一种可选配件,那就是创新型 8087 算术协同处理器,它的情况又如何呢?该处理器使用 5 MHz 时钟频率和专门打造的硬件,每秒可以执行大约 52,632 次乘法。从那时到现在已经过去了 11.4 亿秒,而 p3.16xlarge 要比它快 23.7 亿倍,因此,这台可怜的小 PC 在过去 36 年里完成的计算量勉强才达到现在 1 秒钟可完成的计算量的一半。

好了,Cray-1 又如何呢? 这台超级计算机最早出现在 1976 年,执行矢量运算的速度为 160 MFLOPS,p3.x16xlarge 比它快了 781,000 倍。在推出以后的这些年中,这台计算机针对某些有意思的问题迭代改进了 1500 次。

考虑到您可以将 P3 视作一台超级计算机中可以根据需要启动的分步重复组件,因此更难将 P3 与现在的横向扩展型超级计算机进行比较。

立即运行一个实例
要充分利用 NVIDIA Tesla V100 GPU 和 Tensor 核心,您需要使用 CUDA 9cuDNN7。这些驱动程序和库已经添加到最新版本的 Windows AMI 中,并且将会包含在计划于 11 月 7 日发布的更新的 Amazon Linux AMI 中。新的程序包已经在我们的存储库中提供,如果需要,您可以在您现有的 Amazon Linux AMI 上安装它们。

最新的 AWS Deep Learning AMI 将会预装在最新版本的 Apache MxNet、Caffe2 和 Tensorflow 中 (均支持 NVIDIA Tesla V100 GPU),并且在 Microsoft Cognitive Toolkit 和 PyTorch 等其他机器学习框架发布对 NVIDIA Tesla V100 GPU 的支持之后,AWS Deep Learning AMI 将会进行更新,以使用这些框架来支持 P3 实例。您也可以针对 NGC 使用 NVIDIA Volta Deep Learning AMI。

美国东部 (弗吉尼亚北部)美国西部 (俄勒冈)欧洲 (爱尔兰) 亚太地区 (东京) 区域,P3 实例以按需、竞价、预留实例和专用主机的形式提供。

Jeff

现已推出 – 兼容 PostgreSQL 的 Amazon Aurora

去年年底,我提到过我们向 Amazon Aurora 添加 PostgreSQL 兼容性的计划。公告发布后不久,我们推出了封闭测试版,并于今年年初发布了一个公开预览版。在测试版和预览版期间,我们收到了很多极好的反馈,我们将倾尽全力确保产品满足乃至超出大家的期望!

现已正式发布
非常高兴告诉大家:兼容 PostgreSQL 的 Amazon Aurora 现已正式发布,您现在就可以在四个 AWS 区域 (将在更多区域发布) 使用它。它兼容 PostgreSQL 9.6.3,可自动扩展为支持高达 64 TB 的存储 (后台采用 6 路复制技术以提升性能和可用性)。

与兼容 MySQL 的 Amazon Aurora 一样,这是一个完全托管版本,非常容易设置和使用。在性能方面,吞吐量最高可达您自己运行 PostgreSQL 时的 3 倍 (可以参阅 Amazon Aurora: Design Considerations for High Throughput Cloud-Native Relational Databases 了解我们如何做到这一点)。

您可以从 RDS 控制台启动兼容 PostgreSQL 的 Amazon Aurora 实例:引擎选择 Amazon Aurora,版本选择 PostgreSQL 兼容版,然后单击 Next

然后选择实例类、单可用区还是多可用区部署 (分别适用于开发/测试环境和生产环境)、设置实例名称和管理员凭证,然后单击 Next

有六个实例类 (2 到 64 个 vCPU/15.25 到 488 GiB 内存) 供您选择:

db.r4 是 Aurora 和 RDS 新增的实例类,在高端类别提供更大的规模。db.r4.16xlarge 具备更高的写入性能,让您能够使用单一 Aurora 数据库代替两个或更多的分片数据库。

在下一页上,还能设置许多高级选项,从网络选项 (如 VPC 和公开可用性) 开始:

可以设置群集名称及其他数据库选项。加密功能很方便使用,默认为启用;您可以使用内置默认主密钥或选择自己的密钥:

还可以设置故障转移行为、快照备份保留周期、启用“增强监控”功能以收集详细的 (操作系统级别) 指标:

根据自己的偏好设置完成后,单击 Launch DB Instance 继续!

新实例 (指定多可用区后的主实例和辅助实例) 将在几分钟内启动和运行:

每个 PostgreSQL 兼容实例都自动向 CloudWatch 发布 44 个指标:

启用增强监控功能后,每个实例都会收集额外的每实例和每进程指标。此功能可在启动实例时启用,也可在启动实例后通过 Modify Instance 启用。下面是启用增强监控功能后收集的部分指标:

单击“Manage Graphs”可以选择要显示的指标:

此外还提供了每进程指标:

通过创建 Aurora 副本 (最多 15 个) 可以扩展读取容量:

群集提供可供您访问的单一读取器终端节点,以便在副本间实现请求的负载平衡:

Performance Insights
我之前提到过,Performance Insights 是自动启用的。此 Amazon Aurora 功能直接连接数据库引擎,让您能够深入了解每个查询、查看查询使用的数据库资源及其在总体响应时间中的占比。初始视图如下:

可以按 SQL 查询分割视图,以便查看每个查询有多少并发副本在运行:

除此以外,Performance Insights 还有很多其他的视图和选项,此处无法全部列出;有关更多信息,请参阅使用 Performance Insights

迁移到兼容 PostgreSQL 的 Amazon Aurora
AWS Database Migration ServiceSchema Conversion Tool 随时可以帮助您将存储在商用和开源数据库中的数据迁移到 Amazon Aurora。Schema Conversion Tool 快速评估您的数据库架构和代码,帮助您在 MySQL 和 PostgreSQL 之间作出选择。我们新推出的限时免费 DMS 计划允许您免费使用 DMS 和 SCT 迁移到 Aurora,并可在 6 个月内访问多种类型的 DMS 实例。

如果您已在使用 PostgreSQL,应该会乐于知道我们支持大量扩展 (包括 PostGISdblink)。

现已推出
兼容 PostgreSQL 的 Amazon Aurora 已在美国东部 (弗吉尼亚北部)欧洲 (爱尔兰)美国东部 (俄勒冈)美国东部 (俄亥俄) 区域正式发布,并将尽快在其他区域发布。

Jeff