暴雪Overwatch背后的功臣——OpenStack Senlin

暴雪娱乐已转向OpenStack的Senlin集群服务,为其大规模流行的第一人称射击游戏Overwatch提供自动缩放的基础设施,而将虚拟机(VM)使用量减少了40%。


Overwatch现在给暴雪带来的收入超过10亿美元,十分流行。通过使用在全球11个数据中心的私有云基础设施上的、运行在OpenStack上的虚拟游戏服务器,暴雪运营着多款经典的多人游戏,如《魔兽世界》和《暗黑破坏神》。


在开放式基础设施峰会小组讨论会上,暴雪云工程师Duc Truong和高级云软件工程师Jude Cross概述了Senlin如何帮助暴雪游戏服务器集群运行,将延迟对Overwatch4000万注册玩家产生的影响降低到微乎其微——要知道几秒钟的延迟足以让人抛弃这款游戏。


怎么做到的


暴雪于今年年初开始使用OpenStack自动缩放其游戏服务器。但该公司与OpenStack的关系实际上可以追溯到2012年——当时它开始使用这一开源基础设施平台来托管其私有云。该公司主要在Rocky上运行,但有一些服务在Pike上运行,而Senlin则在最新的OpenStack版本Stein上运行。


“在公有云中进行自动缩放,其好处非常明显。”Truong说,“使用更少的实例,成本也会降低。但是在像暴雪这样的私有云中,你可以想象,我们拥有有限的容量 ,而且没有自动缩放,这些容量会被不同的游戏所分割。“


“每个游戏分配一定数量的虚拟机,以能够在该游戏的生命周期内处理该游戏的高峰流量。”


在非高峰时段,负载在这些VM之间传播,这意味着每个VM都没有被充分利用。启用自动缩放后,负载在非高峰时段更紧密地打包到现有VM中,未使用的VM转换为可用容量,然后可以将其重新分配以支持其他游戏。


另一个好处是,通过使用自动缩放,游戏开发团队能够更轻松地执行部署——例如,如果发布新地图,团队可以启动一个有新内容的游戏服务器集群,而新内容可以在此进行测试。当发布准备好上线时,流量将从旧集群切换到新集群,并在称为draining的过程中慢慢缩减原始集群。


如果流量出现不可预测的峰值——例如,Twitch流媒体登录在用户尝试加入时出现峰值,服务器可以根据需要进行扩展,并在流量减少时删除。此外,由于容量不断扩大或缩小,这些虚拟机的使用寿命比传统游戏服务器(可能启动并运行数周、数月或更长时间)短得多,从而减少与长时间运行的服务器相关的bug,如内存或连接泄漏。


但是,由于个人游戏会话可能会持续数小时,因此玩家的排空可能需要很长时间才能完成。因此,团队使用Senlin实现生命周期钩子,在删除集群之前排空节点。


生命周期钩子允许暂停实例的创建或删除,并实现了实例生命周期中主要事件的可见性。


“它的主旨在于游戏中的任何中断(无论是不是只有一秒),都会极大地影响玩家的体验。当对服务器基础设施进行任何类型的更改时,需要维持服务器的状态。”


Senlin


自2017年以来,该团队最初在其公有云实例中使用了AWS自动扩展,并考虑切换到OpenStack编排引擎Heat,但最终选择了Senlin,因为这些生命周期钩子对服务器的释放提供了支持。


Senlin还与公司正在进行的AWS自动缩放紧密匹配,但此外,还提供了用于扩展集群的REST API,以及编写Gophercloud和Terraform扩展以支持这些集群的能力。


传统的自动缩放依赖于CPU和内存使用等虚拟机的指标,以便做出缩放决策。Cross说,游戏服务器保留了VM上的所有RAM,并且CPU利用率可能会根据物理计算或服务器内是否发生某些事情而激增。


“这些并不是用于游戏服务器或让人们离开游戏服务器的真正可靠指标。”他补充说,“因此,我们让游戏服务器独立计算其负载定义,这使我们能够将负载暴露给自动调节服务,并且自动调节服务能够根据此进行缩放决策。”


然后,暴雪的自动缩放实现包括用于创建和管理游戏服务器集群的Senlin,在控制平面上作为Docker容器运行,以及Zaqar提供生命周期钩子消息(也作为Docker容器运行),并与暴雪自动缩放服务结合(一个用Go编写的自定义应用程序,作为VM边车在集群上运行),而除了使用OpenStack私有云之外,如果需要额外的资源,它还可以很好地与AWS配合使用。


自动缩放确定游戏服务器的负载,并请求Senlin按比例放大或缩小。如果它正在扩展,那么它将通过OpenStack VM配置工具Nova请求或创建服务器。如果缩小规模,暴雪服务将与Senlin进行对话,后者随后标志需要定位的节点。该服务触发该节点的耗尽,一旦所有玩家离开服务器,Senlin认为删除是安全的,就是请求Nova”杀死“它。


挑战


当然,当许多集群启动并运行时,存在挑战——不仅仅是数据库效率低下,还有行动列表和客户列表操作滞后。


为了解决这个问题,暴雪的云团队更新了其数据库模型,并以惊人的1000%删除了不必要的数据库调用。


该团队还遇到了数据库锁定——当团队运行大量同时的缩放请求时,这会导致数据库失效。故障检查也是异步发生的,导致暴雪自动缩放服务出现问题——多个放大或缩小请求位于队列中,模糊了集群状态的可见性。他们通过Senlin将相互冲突的行为暴露给API来解决这个问题,因此如果一个错误的请求进入,团队将“fail fast” ——例如,API告之他们已经在扩展或缩小。


但最终,Senlin的自动扩展服务有助于使暴雪将在其私有云环境中的虚拟机减少40%。



原文链接:

https://www.computerworlduk.com/open-source/why-blizzard-entertainment-used-openstack-senlin-for-autoscaling-3696150/


获取更多开源云技术资讯&大咖交流&免费活动,欢迎添加开源云中文社区小助手,备注开源云!

640?wx_fmt=jpeg

(长按识别二维码添加)




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值