YY游戏私有云平台实践 (转BOSS的InfoQ发文 )

作者 风河 发布于 2016年1月13日 | 讨论

编者按:YY游戏的页游早在2013年就在云平台上运行,其Cloud 1.0已经支撑几十万的同时在线用户。日前,YY游戏云平台进行了Cloud 2.0的改造,其主要目标是支撑端游,同时也将继续服务页游、手游的运营。

这次架构升级是一次完全重构——抛弃OpenStack,网络、计算、存储业务都是自己实现。作为YY游戏云平台的负责人,风河在本文里主要描述了YY游戏需要建设一个什么样的云平台,以及如何建设这个云平台的。

YY游戏的业务需求变迁

YY游戏早在2013年就运行在云平台上。在开发云平台之前,游戏运营面临的问题是:

  • 页游开服快、密度大、周期短,导致运维变更频繁。
  • 传统开服、合服涉及大量的运维人工操作,例如安装服务器、配置网络、部署游戏、配置数据库等。
  • 用物理机开服,资源分配不合理,一个物理机上分配较多游戏进程,会导致风险过高;分配较少进程,又导致成本浪费。

  • 数据备份、监控、故障转移在传统模式下都成为挑战。

针对这些痛点,我们在OpenStack的基础上,开发了第一代云平台,即Cloud 1.0。云平台上线后,资源管理更加灵活,在性能和成本之间取得良好均衡,并极大的增强了运维自动化能力。目前Cloud 1.0支撑了几十万同时在线的游戏用户,截至到2015年12月,YY云平台接入游戏50多款,资源总数约15,000个。

如下是Cloud 1.0的基础架构,它包括云主机、云DB、云存储、云缓存、云网关五大核心产品。用户可通过控制面板访问它们,也可通过API在应用程序里来调用它们。

随着云平台规模越来越庞大,慢慢暴露了OpenStack的一些弱点,比如结构复杂、可靠性一般、扩展性弱,导致我们在云的可控性方面大为被动,从而产生了第二代云平台的需求。

那么我们需要一个什么样的云呢?首先,它是基于私有云。其次,这个私有云一定满足我们业务的特点,比如游戏行业与金融行业,业务特点截然不同。再次,这个云一定要可管理、可扩展、可控。对于一个平台服务,它存在性能短板、运行故障并不可怕,可怕的是出问题后用户无法跟踪和定位,从而失去可控性。

云平台架构的演进

在Cloud 1.0里,我们并没有实现租户网络,不同的游戏厂家都接入同一Flat网络,这对隐私和安全都不利。网络架构如下:

上述图里,云网关是游戏平台里一个重要产品,请参考腾讯游戏的TGW。简言之云网关有两个重要作用,一是收敛公网IP,节省IP成本;二是集中安全防护,降低单个云主机被DDoS的可能性。我们所有的云主机都只有内网IP,运行在云网关后面。除了云主机外,还有云DB、云缓存、云存储等配套产品,都是游戏服务需要的。

在Cloud 2.0里,重点解决租户网络(VPC)的实现问题。出于前面提到的原因,我们并不打算采用OpenStack的租户网络方案。在充分调研和学习的基础上,自主设计了一套基于硬件的解决方案,其中VPC、子网、路由、云网关都采用硬件实现。架构图如下:

我们看到图里标明了3个租户,实际上我们会有数K个租户,每个租户都有自己的虚拟私有网络,也就是租户网络(VPC)。每个VPC保持独立性,彼此隔离。我们采用VxLAN技术来实现VPC,因为传统的VLAN有规模限制(4K),我们不能做一个将来无法扩展的平台。而VxLAN的16M规模可以充分满足需求。

VM的数据包进入接入交换机(TOR)后,由TOR加上VxLAN头部,并进行转发。一般来说如果同一租户同一子网的数据包,由本地TOR直接转发到邻居TOR。如果是同一个租户不同子网的数据包,先发给汇聚交换机,由汇聚交换机转发到下一个TOR。汇聚交换机在这里充当VxLAN网关的角色,第一它负责VxLAN网络里不同子网间的路由;第二如果数据包需要离开VxLAN,它会剥离VxLAN头部,将包转发给因特网网关。

数据包离开汇聚交换机后,到达网关就是普通的包。当然,由于我们支持多租户,每个租户的子网可能是重叠的,所以汇聚交换机和网关之间通信走VRF。另外,我们的VM默认都没有公网IP,所以需要网关兼具如下功能:

  • SNAT:VM出到公网的数据包由网关根据VRF进行源地址转换。
  • DNAT:VM的某个端口需要被外网访问,由网关根据端口进行目的地址转换。
  • Floating IP:少数VM需要一个独立的公网IP,在网关上进行一对一的映射。

图里描述的接入交换机、汇聚交换机、网关都是独立的物理设备。但是,汇聚层和网关层也可以是PC服务器集群,既充当VxLAN网关,又实现NAT功能。

云平台架构选型与实现

VPC的实现是Cloud 2.0与1.0的主要区别。在1.0里我们使用OpenStack的Provider Networking网络类型,它就是一个大的混合网络。随着规模的扩展,这种网络类型已经不能满足我们需求。所以2.0的建设重点是实现每个租户拥有独立的VPC。比如用户A,跟用户B,拥有两个互不相通、彼此隔离的二层网络。用户A和B都可以自定义他们的网络地址段、路由、访问控制策略。关于VPC的架构借用AWS的一张图来描述:

怎样实现VPC

VPC有很多种实现方式,既有软件的也有硬件的,有VxLAN类型也有NvGRE类型。我们在Cloud 2.0设计阶段综合考虑到性能、稳定性、开发成本、上线时间等因素,决定第一期采用基于硬件的VxLAN来实现VPC。

在跟同行公司的交流中,我们得知业界在实现VPC时也有非硬件的解决方案。比如阿里云在VSwitch层面做了大量工作,用软件对流表隔离的方式来实现彼此独立的租户网络。这种方案比较灵活,对硬件设备的依赖少,不过开发周期长,在生产环境里不容易搞稳定,我们暂不考虑此方案。

VxLAN网络由接入交换机和汇聚交换机组成,数据包在它们之间传输时,会带上VxLAN头部,从而隔离成一个个独立的二层网络。数据包在进入接入交换机之前,以及在离开汇聚交换机之后,都没有VxLAN头部,是普通的数据包。VxLAN网络规模理论上可以达到16M,也就是16M个VPC实现。当然,由于VRF数量有限,在实际中并不能产生这么多的VPC,除非这些VPC都不需要访问公网。

图的下半部分,Hypervisor代表计算节点的宿主机,它们接入独立的管理网络,这只是一个物理的二层网络,非虚拟网。管理网络里除了有宿主机外,还有控制器、管理数据库、分布式存储等。控制器的作用不言自明。分布式存储是VM运行的数据支撑层,我们的VM不管是操作系统自身,还是数据盘,都运行在分布式存储上。这样既保证数据安全,又满足云平台的特性,比如VM快速启动和迁移。

云平台包含三个关键部分:虚拟计算、虚拟网络、虚拟存储。这里面虚拟网络是基础,它的结构决定了整个云平台的实现架构。如果把虚拟网络搞定,那么虚拟计算、虚拟存储都问题不大,这也就是为什么在Cloud 2.0里,我们敢于抛弃OpenStack的原因。我们需要开发一套应用程序,完成对这三套底层系统的调用、调度、监控和反馈。而这套应用程序就是自己的云平台实现,它的架构参考如下:

因为虚拟网络(又称软件定义网络、SDN)一直是我们的重点,所以本文谈的也基本围绕它进行。虚拟网络实现的本质是控制器的实现,控制器是虚拟网络的灵魂。VxLAN网络里大量的数据交互,都需要控制器参与。

比如控制器要记录每个VM的虚拟Mac,并下发到TOR,这样VM在发起ARP查询时,TOR才能进行ARP代答。再比如某个VM的网络请求进入到TOR,TOR需要查表才知道这个VM属于哪个VxLAN。还有同一子网里数据包在不同TOR之间转发、以及不同子网数据包在VxLAN网关里的路由转发,都需要查控制器的表项来决定。

关于SDN部分

SDN控制器是目前非常热门的技术方向,有很多开源项目参与进来,但成熟的产品很少。它的开发工作量很大,华为公司研发敏捷控制器的部门就有一百多人。而我们的Cloud研发部门总共才十几个人,很难有精力搞一套自己的控制器,所以倾向于采取跟第三方公司合作的方式来完成。

我们期待的是一个简单的控制器北向接口,它完成VPC、Subnet、Router、Port、Floating IP等网络基本要素的管理,参考此说明。而控制器自身的实现方式,目前对我们来说不是特别重要。比如有的控制器北向接口就是Neutron API,南向是自己实现的Drive,这个也完全可以。

我们VPC的实现主要由硬件交换机驱动的VxLAN来完成。VPC除了有内网,还需要跟外部通信,以及外部能访问VPC的服务,这些都使用硬件网络设备来实现。控制器要完成对这么多设备的串通联调,是一个非常大的挑战。

两个核心功能

除了VPC的实现,Cloud 2.0还需要提供两个核心能力,一个是管理API,一个是按需使用的计费能力。我们在Cloud 1.0里已提供了完整API,可以实现对资源的创建和管理。2.0里也一样,用户可以使用API来管理网络、服务器、数据库等云资源。对游戏厂家来说,这是他们自动化运维的基础。

  • 计费我们在1.0里做的不好,2.0应该予以完美实现。用户的计费模型,纵轴是时间维度,横轴是容量或能力维度。容量包括内存大小、磁盘大小、带宽多少等,能力包括CPU计算性能、磁盘读写性能等。提供灵活的计费能力,按需使用,用多少算多少,无疑对我们客户具备更大的吸引力。这一点Vultr的平台做的非常好,我在使用它们按需计费的能力后深觉方便,就在最近把Linode上用了5年的云主机,迁移到了Vultr。
  • 关于系统的扩展性,主要存在租户规模上。如果租户一直扩张,虽然内部VPC的16M规模可以充分满足,但是网关的VRF数量会面临不够。参考业界的解决方案,今后如果租户规模扩张到很大,我们也会考虑开发PC服务器集群的VxLAN网关,来代替目前的硬件网关方案。
  • 这个VxLAN网关实现了现在架构里的汇聚交换机和硬件网关的功能。VxLAN网关在设备层面基于高性能转发架构,如Intel的DPDK,实现VxLAN Overlay网络L3 GW功能;在控制层面是基于标准南向控制接口的SDN网元,支持的协议包括Openflow+Netconf。架构上它是一个服务器集群,每个节点都能处理VxLAN封装、卸载、路由等功能,以及网络地址转换(NAT)。接入交换机的VxLAN数据包需要发给网关时,寻址方式可以在控制器里由预定义的策略决定。集群理论上支持无限的水平扩展,在保证性能的同时,保持了经济性。
  • 最后说到可控性,在Cloud 1.0里我们虽然使用了OpenStack,却远没达到掌控自如的程度。OpenStack庞大复杂,众多的组件、复杂的交互关系、以及并不太好的软件质量,让我们望而止步。所以在2.0里,我们的基本目标之一是可控。现在虚拟网络自主实现,虚拟计算和虚拟存储也有经过验证的可行方案,那么只需要业务层做好整合,整个系统就具备可控性。过去的云平台出了问题,难以发现原因,即使发现了也难以深层次跟踪问题。现在Cloud 2.0里所有调用和调度都自己实现,出问题后跟踪和分析能力要大为提升。

小结

我们的Cloud 2.0还在开发阶段,在实现过程中肯定还会遇到各种问题和困难。期待它上线后能改善现有的问题,带来更好的性能、扩展性和安全性。如果您对我们的技术方案有任何疑问或

时间: 2024-08-04 04:48:15

YY游戏私有云平台实践 (转BOSS的InfoQ发文 )的相关文章

软交所“猎豹移动运营环境云平台实践”主题沙龙成功举办

2014年8月6日下午,由软交所举办的"猎豹移动运营环境云平台实践"主题沙龙活动在中关村知识产权大厦二层软交所第一会议室成功举办. 为向各会员企业普及私有云的概念,促进会员企业之间相关业务交流,软交所特邀请猎豹移动(金山网络)技术VP 杨钢为大家分享了猎豹移动在复杂运营环境中逐步实施私有云方案的一些经验.新致软件.中科同向.数讯达通信.广点广告传媒.IT决策人网.唐密科技.飞鸟视界科技.麒麟网.中电普华.达沃时代.简单科技等40余家会员单位的企业领导.代表参加了本期沙龙. 分享嘉宾:杨

江湖风云再起——全球最高性价比私有云平台解决方案发布

武汉闻风多奇软件有限公司致力于成为全球领先的云计算解决方案供应商,通过多年技术攻关,与台北.波斯顿两大海外研发中心联合发布了一套具有全球最高性价比的自主知识产权私有云解决方案.全新发布的私有云解决方案是一体化集中式云管理服务平台,已经形成涵盖IaaS.PaaS.SaaS三个层面整体解决方案服务能力,凭借闻风高端服务器.海量存储.云管理平台.信息安全技术为客户打造领先的云数据中心,并且全方位满足政府与企业信息化需求. 闻风私有云解决方案Winphone Virutal Mangement(WVM)

新一代的免费私有云平台 Nano 0.3.1 全功能一览

简介 Nano是基于CentOS/KVM构建计算资源池并提供云主机实例管理服务的新一代IaaS(架构即服务)软件平台.用户可以通过在普通x86服务器上安装Nano模块,将服务器集群转换为私有云平台,并且提供云主机服务. Nano使用Go语言开发,在极低的资源占用下能够提供强大而稳定的服务,同时避免Openstack等传统云平台需要大量外部组件依赖,维护复杂并且稳定性差的问题.所有模块均编译为独立运行的二进制包,模块升级时直接替换即可,无需考虑复杂的外部依赖,极大降低了维护难度和工作量. Nano

私有云平台CloudStack V4.11安装和配置连载1

CloudStack 的安装和使用 1. CloudStack简介:   Apache CloudStack是一种开源软件,旨在部署和管理大型虚拟机网络,作为高度可用,高度可扩展的基础架构即服务(IaaS)云计算平台.CloudStack被许多服务提供商用于提供公共云服务,并由许多公司提供内部(私有)云产品,或作为混合云解决方案的一部分.   CloudStack是一个开箱即用的解决方案,包括大多数组织希望使用IaaS云的整个"堆栈"功能:计算编排,网络即服务,用户和帐户管理,完整和开

开源私有云平台 Nano v0.6.1发布 - 新增云主机地址池管理/Windows server虚

大家好,新一轮迭代完成,我们距离1.0正式发布又近了一步. 上一轮社区投票中得票最多的地址池管理功能在0.6.1中已经开发完成.地址池功能允许管理员添加多个IP地址网段绑定到计算资源池,当该资源池新建实例时,就会自动从地址段中分配IP地址,并且通过DHCP方式通知虚拟机操作系统.实例删除时,该IP地址释放回地址段,可以重新分配给其他实例. Nano为云主机分配的IP地址由平台管理,保持稳定,即使实例出现故障切换或者手工迁移到其他宿主机节点上,IP依然保持不变. 地址池功能能够让管理员更有效地规划

Proxmox【超融合】实现低准入高效构建企业内部私有云平台,让企业轻松步入云时代

"超融合"这个概念,可以简单理解为:将虚拟计算平台和存储融合到一起,将每台服务器里面自带的硬盘组成存储池,以虚拟化的形式提供数据中心所需要的计算.网络.安全以及存储等IT基础架构.在这里,也讲解一下超融合相对于传统虚拟化方案的优势. 横向与纵向的扩展性顾名思义,横向扩展就是当发现存储和计算资源不够用了,按需添加服务器即可.比如,当用户的共享存储写满了,用户不得不花大价钱去购买一个新的存储机柜,然而此时存储机柜的资源利用率是很低的.而使用超融合方案的用户,他们只需要投入较少的费用去购买一

搜狐视频Redis私有云平台CacheCloud

一.CacheCloud是做什么的 CacheCloud提供一个Redis云管理平台:实现多种类型(Redis Standalone.Redis Sentinel.Redis Cluster)自动部署.解决Redis实例碎片化现象.提供完善统计.监控.运维功能.减少开发人员的运维成本和误操作,提高机器的利用率,提供灵活的伸缩性,提供方便的接入客户端 二.CacheCloud提供哪些功能 监控统计: 提供了机器.应用.实例下各个维度数据的监控和统计界面. 一键开启: Redis Standalon

免费的新一代私有云平台Nano v0.3.1发布:云主机快照及媒体管理

官方网站: https://nanos.cloud/zh-cn/ 下载地址: https://nanos.cloud/zh-cn/download.html 详细更新记录:https://nanos.cloud/zh-cn/changelog.html 主要变更: 增加云主机快照管理:快照创建.删除.恢复.查询 支持实时在云主机中插入光盘镜像和弹出光盘镜像,状态界面增加显示是否有镜像插入标识 长时间运行的磁盘操作执行时锁定磁盘卷,避免多任务同时读写影响数据 增加镜像创建.修改时间和实例创建时间

开源私有云平台Nano v0.7.1发布 - 新增用户权限管理及系统初始化

各位新年好,0.7.1带着用户管理功能来了 当用户首次打开Nano页面时,系统会提示创建初始的超级管理员账号:成功登陆后,管理员可以在用户页面管理多用户.用户组和菜单角色. 有了用户鉴权和权限控制,您可以在自己的组织和企业里更加安全地体验和管理Nano了 用户登录后可以在界面底部看到当前用户 点击按钮可以注销已登录的会话信息 当某云主机需要还原或者安装为新操作系统时,可以使用我们新增的重置系统功能,一键完成新系统安装,不需要再反复新建实例. 当云主机安装旧操作系统出现无法识别磁盘或者网络时,可以