亚马逊AWS官方博客

Deadline 使用 SPOT Event Plugin 开启低成本渲染农场

Deadline 与 Thinkbox

Deadline是 AWS 下属的 Thinkbox 软件公司一款渲染农场软件,很多影视作品如《美国恐怖故事》( American Horror Story )、漫威公司《神盾局特工》( Agents of S.H.I.E.L.D. ),《阿凡达》《哈利波特与死亡圣器2》《变形金刚3》《复仇者联盟》《暮光:新月》等都有 Thinkbox 产品系列的贡献。

Deadline的基础架构

Deadline渲染农场管理系统基础架构包括以下3个基本部分:

1.Deadline 数据库,基于 MongoDB

2.Deadline 仓库

3.一个或者多个 Deadline 客户端

  • 渲染过程中,由 Deadline 客户端或者由2D/3D软件的 Deadline 插件提交渲染任务,而由安装渲染软件如 MAYA, 3DS MAX, BLENDER 等软件的 Deadline 渲染节点( Render Node )进行具体的渲染工作。 Deadline 渲染农场的强大之处在于,可以利用本地的渲染软件或者直接利用云上的计算资源来同步完成渲染工作,加速渲染进程。大大节省影视工作者时间。而使用 AWS EC2 SPOT 实例*,更可以在可预测的低成本中开启大规模的计算资源,从而进一步优化工作负载的成本和性能 ** 为此, Deadline 开发了 SPOT Event Plugin 插件,来使 Deadline 更加容易的自动在渲染过程中调用 SPOT 实例。节省大量人力操作。

Deadline 客户端安装配置

先决条件

  • Deadline 客户端需要 GPU 支持以安装渲染软件
  • 基于 Windows Server 2016 base 搭建
  • 应用组件会安装在 D:\Deadline 目录下,需要事先挂载一块 EBS 并创建文件夹
  • 安装部署需要管理员权限

Deadline 服务端 EC2 实例创建

1.启动一台 EC2 实例

2.在添加存储步骤的过程中,添加一个数据卷用于 Deadline 应用安装

3.远程登录 Deadline 服务器,打开磁盘管理器以格式化 D:\ 盘:

a.点击左下角的 “Windows” 按钮,然后点击 ”Powershell”

b.在 Powershell 窗口中,输入 “diskmgmt.msc” 并回车

c.在磁盘管理器里会看到一个标记为 “Unknown” 和 ”Offline” 的磁盘,右键点击该磁盘并点击 “Online”

d.等该磁盘状态变为 “Unknown” 和 “Not Initialized”,右键选择并点击 “Initialize Disk”

e.在弹出窗口中保持默认设置,并点击 “OK”。等磁盘状态变为 “Basic” 和 “Online”

f.右键点击阴影区域,并选择 “New Simple Volume”

g.点击 “Next” 直到出现 “Assign the following drive letter”, 从下拉列表中选择 “D” 并点击 “Next” 直到完成向导

h.等到格式化完成之后,查看磁盘状态是否为“Healthy”

4.返回桌面,打开文件管理器,进入 D:\ 盘并创建文件夹“Deadline”

Deadline 仓库和 Deadline 数据库搭建

1.从https://downloads.thinkboxsoftware.com/#/ 下载 ” Deadline-10.0.24.2-windows-installers.zip (sha256) ” 和 “ CertificateInstaller-10.0.24.2-windows-installer.exe (sha256) ”

2.解压缩 zip 包,然后在 D:\Deadline\DeadlineRepository10 安装 “DeadlineRepository-10.0.24.2-windows-installer.exe”

a.安装一个新的 MongoDB 数据库

i.MongoDB 的安装路径为 D:\Deadline\DeadlineDatabase10

ii.指定 MongoDB 的主机名和端口 ( eg, <servername>;<ip address> and 27100 )

iii.MongoDB 可以通过 SSL/TLS 安全访问,在这个安装过程中暂不启用,之后也可以配置

b.开启 Windows 防火前端口

i.点击左下角的 Windows 按钮,并点击“Powershell”

ii.在 Powershell 窗口中,输入并运行如下命令:

New-NetFirewallRule -Group 'Deadline' -DisplayName "Deadline MongoDB Access" -Action Allow -Description "Allow TCP 27100" -Direction Inbound -Enabled True -LocalPort 27100 -Profile Any -Protocol TCP | Out-Null

仓库配置

1.创建一个本地账户 “deadlineuser” 用于文件共享:

a.点击左下角的“Windows” 按钮,并点击 “Powershell”

b.在 Powershell 窗口中输入“lusrmgr.msc” 并回车

c.在本地用户和组窗口中,在左边栏右键选择 “Users”,并点击“New User…”

d.在“User name” 处输入 “deadlineuser” 并键入密码,取消选中 “User must change password at next logon”,然后点击 “Create”


2.共享仓库

a.右键选择仓库目录 ( D:\Deadline\DeadlineRepository10 ),点击 “Properties”

b.选择 “Security” 标签卡,并点击“Edit…” 修改权限

c.将 “Authenticated Users” 和 “Everyone” 从组中移除,即选中相应的组后点击 “Remove” 按钮

d.添加 “deadlineuser” 并给与限定权限

i.点击“Add…” 按钮,在文本框中输入 “deadlineuser”,并点击 “OK”

ii.从 “Group or user names” 列表中,选择“deadlineuser”

iii.确保“deadlineuser” 只有 “Read, Read & execute, and List folder contents” 的权限,然后点击 “OK”

e.按照如下操作给予“deadlineuser” 对仓库目录下的 “jobs/”、”jobsArchived/” 和”reports/” 三个子目录的读写权限:

i.右键选择子目录并点击 ”Properties”

ii.选择“Security” 标签卡并点击 “Edit…” 修改权限

iii.在“Group or user names” 列表中选择 “deadlineuser”

iv.确保“deadline” 有修改和写的权限

v.点击 “OK” 保存权限设置

f.共享仓库目录 (D:\Deadline\DeadlineRepository10)

i.在文件管理器中,来到仓库的安装目录(D:\Deadline\DeadlineRepository10)

ii.右键选择仓库目录,点击 ”Properties”,选择“Sharing” 标签卡,并点击 “Advanced Sharing” 按钮

iii.在“Advanced Sharing” 窗口中,标记 ”Share this folder”,并点击 “Permissions” 按钮

iv.确保“Everyone” 有完全控制的权限,并点击 “OK”

Deadline 客户端 EC2 实例创建

1.启动 一台带有 GPU 的 EC2 实例(e.g. g3s.xlarge)

2.余下的创建步骤可以参照 “Deadline 服务器 EC2 实例创建”

Deadline 客户端安装配置

1.从https://downloads.thinkboxsoftware.com/#/ 下载 “Deadline-10.0.24.2-windows-installers.zip (sha256)” 和 “CertificateInstaller-10.0.24.2-windows-installer.exe (sha256)”

2.在 Deadline Client 上配置 Deadline 仓库共享

a.点击左下角的“Windows” 按钮,并点击 “Powershell”

b.在 Powershell 窗口中,输入 ”net use \\xx.xx.xx.xx /user:deadlineuser” 并输入 deadlineuser 的密码


3.配置 Deadline 客户端用户

a.点击左下角的“Windows” 按钮,并点击 “Powershell”

b.在 Powershell 窗口中,输入 ”lusrmgr.msc” 并回车

c.在本地用户和组窗口中,在左边栏右键选择 “Users”,并点击“New User…”

d.在“User name” 处输入 “deadlineclient” 并键入密码,取消选中 “User must change password at next logon”,然后点击 “Create”

4.解压缩zip包,然后在 D:\Deadline\DeadlineClient10 安装 “DeadlineClient-10.0.24.2-windows-installer.exe”

a.选择“Repository” 作为连接类型,并点击 ”Next”

b.输入 Deadline 仓库的共享路径,如“\\xx.xx.xx.xx\DeadlineRepository10”,并点击 “Next”

c.先跳过 SSL 配置,点击“Next”

d.在许可模式处选择“Standard”,点击 “Next” 并指定许可服务器

e.标记“Install Launcher As Service”,输入 “deadlineclient” 及密码,点击 “Next”

f.指定 “deadlineclient” 作为远程连接服务器使用的用户,并取消选中“Enable TLS(HTTPS)”,然后点击 “Next”

g.准备就绪,点击 ”Next” 安装

验证 Deadline 环境

在 Deadline 客户端服务器上打开 “Deadline Monitor 10”, 如果客户端连接不上仓库,会报连接失败的错误


Deadline 部署参考

Deadline SPOT Event Plugin 的配置与使用:

本文将以开源免费 Blender 3D 建模软件为例,简述 Deadline 如何调用 SPOT Event Plugin 渲染 Blender 作品。

安装并配置 Deadline 与 Blender 镜像

1.启动 AWS EC2 实例(本文以 Windows 2016 为例)并安装Blender软件

2.EC2 Windows 实例的启动过程请参考:https://aws.amazon.com/cn/getting-started/tutorials/launch-windows-vm/

a.由于 Blender 的初始图形配置界面依赖显示卡,所以推荐在初始安装过程中使用 G 系列 AWS EC2 实例

b.下载并安装 Blender :请参考官方 https://docs.blender.org/manual/zh-hans/dev/getting_started/installing/index.html

3.安装 Deadline Client 并配置 Blender:

安装指南请参考:https://docs.thinkboxsoftware.com/products/deadline/10.0/1_User%20Manual/manual/quick-install-client.html

4.安装后, Deadline Client 中有默认 Blender 的执行文件位置,可以在渲染任务执行时,自动调用 Deadline 进行渲染,可以通过以下方式进行确认:

a.启动 Deadline Monitor ,点击 Tool 菜单,开启 Super User Mode。然后在 Tools 菜单中选择 Configure Plugins 选项,弹出界面如下:

b.可以看到 Blender 执行文件的目录,如果之前自定义安装 Blender ,安装于其它路径,就右击…进行路径添加。

5.如果想在 Blender 界面中进行提交,可以运行保存在 <Deadline仓库目录>/submission/Blender/Installers的Submitter Installer ,并参考:https://docs.thinkboxsoftware.com/products/deadline/10.0/1_User%20Manual/manual/app-blender.html#integrated-submission-script-setup

制作包含 Blender 软件的 Deadline 渲染节点镜像:

由于 Deadline 客户端会以计算机名标识渲染节点,为保存镜像启动后计算机名不一样,所以在计划制作成启动镜像(AMI)的安装 Blender 软件的渲染节点上通过计划任务来制作启动脚本来保证启动后自动修改计算机名并重启生效。

1.制作启动脚本:

脚本 ps1 内容如下,功能是取32个随机大写字母重命名为机器名,并重启,脚本保存于路径C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\ 脚本运行后建立一个文件做标识renamed.txt。来记录,以实现第一次启动才要做重命名

if(!( Test-Path C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\renamed.txt))
{
$computername = -join ((65..88) | Get-Random -Count 32 | % {[char]$_})
Rename-Computer -NewName $computername -Force
"" | Out-File C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\renamed.txt
Restart-Computer -Force
#write $computername
}

2.建立计划任务

a.在 Windows 管理工具中,执行“计划任务”,配置如下:

i.触发器:在启动时触发

ii.操作配置:

iii.程序: C:\Windows\System32\cmd.exe

iv.参数: /C C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -NonInteractive -NoLogo -ExecutionPolicy Unrestricted -File “C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\renamecomputer.ps1”

3.制作启动镜像 AMI(AMAZON Machine Image),图形部署如下,具体文档参考:https://docs.aws.amazon.com/zh_cn/AWSEC2/latest/WindowsGuide/Creating_EBSbacked_WinAMI.html

a.还没有AWS中国区域帐户,点击https://www.amazonaws.cn/sign-up/ 进行注册

b.配置如下:

c.点击“创建映像”之后,会弹出下面信息框,记录ami-xxxxx的AMI映像编号:

配置 AWS EC2 SPOT 实例

  • 登陆进入 AWS 中国区域服务目录,选择“EC2”,在界面左边选择“Spot请求”,点击“请求竞价实例”,在跳转的页面中选择“Flexible Workloads”,然后在点击”自定义AMI”,弹出框中填写刚刚记录的“ami-xxx”,并点击选择,如下界面

配置 Deadline SPOT Event Plugin

  • 进入 Deadline Monitor后,打开 Super User Mode,点击 Tools->Configure Events… 界面如下:

  • 要启用 SPOT Event Plugin,首先在 State 中选择 Global Enabled.
  • Access Key ID 与 Secret Access Key 请在 AWS 界面选择  IAM 服务 -> 左右选择用户名 -> 安全凭证 中下载文件中找到
  • Region 选项: 如果使用北京区域的 SPOT 实例,请选择 cn-north-1,使用宁夏区域,请选择 cn-northwest-1
  • SPOT Fleet Request Configurations 选项: SPOT Event Plugin 会在请求的渲染节点组(假设名称为 spot-group ) 进行渲染时,调用刚刚配置 JSON 文件的 SPOT 实例舰队来进行渲染,配置办法是:
{
"<spot-group>": {<刚刚下载的JSON文件内容>},
"<2nd_group_name>":{<spot_fleet_request>}
}
//请将 <spot-group> 等<>内的内容,更换成实际的组名称与 SPOT 配置 JSON 文件内容。

 

开始渲染作业

  • 在 Deadline Monitor 中点击 Submit->3D->Blender 中提交 Blender 渲染作业,界面如下: Group 选项刚刚 SPOT Fleet Request Configurations 中配置的 spot-group,以使渲染工作开始时,自动激活 SPOT 实例加入到渲染节点中。

  • Submit 提交之后如下,SPOT 实例激活并参与到渲染工作当中。

总结

  • 到这里,我们完成了从 Deadline 从安装配置到启动 SPOT Event Plugin 的过程。可以看到,我们可以配置 Deadline 渲染农场中的 SPOT Event Plugin 使用非常经济,大规模的 EC2 SPOT 实例来优化并加速影视作品渲染的过程。从而优化工作负载的成本和性能。
  • 关于 AWS EC2 SPOT 实例,请参考 AWS 官方对于 SPOT 实例介绍:https://aws.amazon.com/cn/ec2/spot/
  • 请参考 Scripps Networks Interactive 公司如何使用 Deadline 控制 AWS EC2 SPOT Instance 来将  CGI  渲染时间缩短了 95%  https://aws.amazon.com/cn/solutions/case-studies/scripps/

 

本篇作者

劳佳琦

AWS中国团队的解决方案架构师,负责基于AWS的云计算方案架构咨询和设计,同时致力于AWS云服务在国内教育行业的应用和推广。在加入AWS之前,他曾服务与英孚教育,微软等跨国公司。劳佳琦平时热爱足球和音乐,同时也乐于和他人分享自己的各种经历。

 

张洋

AWS中国团队的解决方案架构师,负责基于AWS的云计算方案架构咨询和设计。同时致力于AWS云服务在国内的应用和推广。现专注于HPC超算与物联网相关领域的研究。在加入AWS之前,他曾服务于EMC, Oracle, Flextronics等跨国IT公司。张洋乐于分享,并且是一名业余游泳教练,热爱游泳和跑步,已经完成7次马拉松比赛。