游戏驱动下的云后端架构演进

 

本次的分享主要包含以下两个部分:1.大型端游如何走进G云?2.面对页游、手游,G云后端架构该如何?...





G云定制云

大家好,首先非常荣幸能成为这次的分享嘉宾,为大家分享一些关于G云后端的技术。

本次的分享主要包含以下两个部分:

1. 大型端游如何走进G云?

2. 面对页游、手游,G云后端架构该如何?

在开始这次分享之前,先为大家简单介绍一下G云

很多朋友听到盛大G云这个名字,可能第一反应会想到“盛大云”,或许是因为“盛大云”的名气太大了。正因如此,我在此需要说明一下,G云和盛大云是两个独立的产品,属于两家独立的公司,G云属于盛大游戏,也就是说G云与盛大云无关。

G云的前身是盛大游戏内部的私有云,盛大游戏早在2008就开始实践虚拟化,并开始在实际的游戏中应用。历经了七八年的实践,已经经历了盛大游戏内部几十款游戏的考验。所以,G云天生就具有了游戏云的基因,目前的G云是在沿用原后端架构的基础上又做了大量的优化和改进,并开发了用户界面,大家现在所看到G云 https://www.gcloud.com.cn,可以说是原盛大游戏内部私有云的升级版。好了,废话了那么多,下面开始进入本次的正题。

首先讲第一个,大型端游如何走进G云?

提到大型端游,大家会想到哪些关键字?

服务器架构复制,服务器角色众多,服务器压力大,数据库压力大等等。

如下是某大型端游的服务器架构图



图上包括了,9种不同类型的服务器,简单做个说明

Game server ,login server,village server 这些都是服务器组,每组包含多台服务器。LoginServer 用于玩家认证登陆,GameServer  副本服务器,villageServer村庄服务器类似于游戏大厅。master server 可以将用户负载均衡到各个主机组里的中的具体的某一台服务器上,决定分配玩家是在Game server还是village server,相当于一些LB,里面也包含计费的一些东西。DB m/w ,log DB M/W 是连接到数据库的中间件,玩家数据通过他们写入数据库GSM 是相当于统一管理后台的一个IIS服务器,所有服务器配置都在这台服务器上,统一管理。

Account/Char DB,Log DB具体用于存放玩家数据和日志数据。

这些角色的服务器对于机器的压力是各有侧重village占用CPU比较多,Game占内存,网络方面的话,整体架构内部都是内网,玩家外网可以连接login,Game和village这只是盛大游戏很多大型端游中一个,架构并也不是最复杂的,面对这样的大型端游,如何将它的接入G云,我们专门制定了一套接入流程,下面就来详细的介绍一下整个接入流程。

第一步,通常需要确定,这款游戏所处的生命周期,大致分为内测期、初期、中期、后期。不同阶段的游戏,接入的方式略有不同。

对于内测期的游戏,大部分精力在于压力及性能测试,测试通常会通过游戏机器人,得到人数与服务器压力对应的曲线。在这个过程中,得到服务器压力模型,确定云主机分布,得到虚拟化比例。

对于处于初期的游戏,它存在较大的不确定因素,比如因为活动或者渠道玩家导入,会产生人数的突增,服务器压力也会随之增大。接入该阶段的游戏,除了需要做好性能采集之外,还需要在实施过程中,进行资源预留。通常会预留宿主机30%的性能。

对于处于中期的游戏,这类游戏通常已经趋于平稳了,人数波动基本上很小,偶尔会有一些突发,量一般不会很大,所以对这类游戏,资源分配上可以适当充分的利用。

对于接近后期的游戏,这类游戏服务器的压力,普遍很小,因为玩家数量不多,这个时候,就考虑最大限度的利用宿主机的性能,在保证满足现有游戏正常的前提下,不再预留宿主机资源。

第二步,服务器性能数据采集

在了解游戏所属生命周期之后,我们都会提供一个用于抓取服务器性能的工具给游戏运维,让其抓取最能体现该游戏最大负载时间段的性能数据,其中包括CPU,磁盘,网络,内存,各方面的压力数据。

将这部分采集到的性能数据提交到我们的性能分析系统,由系统做自动分析,并生成图形及报表。通过报表,可以看到服务器的压力模型。

以此初步确定是否适合接入G云,目前G云后端的资源大致可以分为3类。

第一类,配备了纯SSD硬盘的宿主机资源,单台云主机读写IOPS 10000+,这类资源主要针对高磁盘IO的应用,针对IOPS要求极高的应用,还有配置了pcie SSD的宿主机资源可供选择

第二类,针对高密度计算的应用,G云后端提供高主频多核的E5系列CPU支持。

第三类,配备了全万兆接口,这类宿主机资源,主要针对网卡高吞吐,发包率的应用,发包率性能可以达到20万+。

根据性能采集数据,来配置这3类宿主机资源的比例,确定云主机配置,及云主机的虚拟化比例。

第三步,少量接入测试及调整

在这个过程中,会根据直接运行的状况,对云主机配置,及分布做一些微调。最终得到一个模版,模板主要包括,云主机配置、虚拟化比例、宿主机资源类型配比,之后其他的区组都会按这个模版来操作。

有朋友可能会问,对于游戏,每个区的人数可能都不相同,如果按最高人数的区组来配置云主机是不是会产生浪费呢?如果真这样,那肯定是会有浪费了,但是对于游戏还有一个特殊的地方,就是合区,只要有一个稳定的基准,下面的事,就可以交给游戏运维来完成了。同时还可以在运行一段时间之后,根据压力,做一些适当的调整,也是很好的避免资源浪费的办法。

第四步,整体接入

到这步,就开始大量提供资源了,批量,自动化这些,在宿主机初始化中同样可以使用。像puppet,ansible,salt等等,哪个工具最能hold住,就用哪个,目的只有一个,快速提供标准化的后端宿主机资源。

目前G云后端全部是用puppet来实现自动化的,不论单台还是多台,大约5分钟。可以完成全部初始化操作,加入资源池,上线使用。

下面看,今天分享的第二点

面对页游、手游,G云后端架构该如何?

不同于大型端游,页游和手游的架构就简单多了,服务器角色,通常有gs、db、Web,Memcached等。页游和手游一个比较大的特点是,区组更新非常快,服务器压力相对都不高,一个区一台云主机甚至一台云主机几个区都有。

举例两个场景

场景一,将除DB以外,所有的程序安装在一台云主机中,并将这台机器做成模板,新开区的时候,只需更改配置再加一个DB实例就可以了。

场景二,一个区中包含多个GS,前端有负载均衡做调度,同样所有的GS都是可以通过模板来快速开区。

这两个场景都有一个特点,都没有包括DB。云主机上的程序都是一样的,不同的仅仅是配文件。对此,我们使用KVM集群的方式,来提供这类云主机,G云前后经历的两代集群的更替。第一代,前端,使用配备高性能CPU、大内存的普通服务器或者刀片服务器;后端,使用商业存储;通过IPSAN的方式连接。

以下是集群的架构图



IPSAN网络结构图



采用两台交换机堆叠,多链路冗余的方式,存储双控制器4根万兆,两两上联存储网交换机,服务器两个网卡接入SAN,服务器内部使用multipath做多链路冗余。在这种架构下,存储控制器单个失效、存储网交换机单个故障、服务器单网卡故障,单网线故障。对整个集群中的云主机均无感知。

第一代KVM集群架构,因为使用了商业存储,所以在存储部分的管理,相对简单,也因为这点使它具有了先天的劣势,比如受制于商业存储的价格,容量,性能等因素,使得集群的成本较大,所以G云演进了第二代KVM集群架构

以下是第二代KVM集群总体架构



前端,采用刀片服务器或者普通服务器。

后端存储采用分布式存储,目前使用Ceph,虚拟机数据全部跑在Ceph上。存储节点统一采用万兆光纤接入存储网络。宿主机采用双网卡绑定,提供冗余。无论是单存储节点故障,单存储网交换机故障、服务器单网卡故障,或者单网线故障。对整个集群中的云主机都是无感知的。

KVM集群架构,在盛大游戏内部数几十款页游,手游中得到了验证,G云可完全兼容此架构。

采用KVM集群架构,可以实现故障自动切换,当某个宿主机出现故障时,云主机可以在正常宿主机中开启,同时可以做到秒级在线迁移

因为手游和页游的GS没有用户数据,所以非常适用这种架构的云主机。

目前混合云的概念已经铺天盖地了,G云在提供云主机的同时也提供物理服务器,游戏GS使用KVM集群,DB服务器使用物理机,内网全万兆互联,资源独占。对于有一定量业务的用户来说,这是一个不错的选择。

好了,本次的分享就到这里结束了,谢谢大家。

Q&A

1、Q1:请问下“将这台机器做成模板”,这里的“模板”具体是个什么?

A1:虚拟机克隆镜像

2、QQ群—KVM1群—Q1:后端存储采用分布式存储 .这个还是使用廉价存储还是物理机?

A:后端存储节点,主要是大容量的存储,也有配置高性能磁盘的缓存节点

3、QQ群—OpenStack群—Q2:虚拟机和物理机网络互通有使用 SDN 的技术吗?

A:SDN与物理直连都有,根据业务压力而定,压力大的环境,采用物理直连

4、QQ群—KVM2群—Q1:分布式存储,现在的最佳速度如何。

A:吞吐和IOPS性能,可能满足手游和页游的需求

5、QQ群—KVM1群—Q2:存储节点统一采用万兆光纤接入存储网络。宿主机采用双网卡绑定,提供冗余。

存储使用光纤接入,宿主机和存储之间是如何通讯的,

A:通过SAN网络连接宿主机和存储

6、QQ群—KVM1群—Q4:osd采用什么样的块设备 SSD?

A: OSD有SATA盘和SSD盘两种

7、QQ群—KVM2群—Q2:ceph和商业存储问个问题,我们最近使用一款商业存储,包括去重、快照,克隆等功能,特别是去重,100个10g的镜像只需要20g-30g左右空间,对于前端价值非常大,ceph有这样的功能吗?

对于交流中提到的前端部分,感觉都不是高io应用,部署ceph是否成本更高呢

A:每台云主机的磁盘都是独立的,所以并没有去重的功能,采用Ceph做为后端存储,IO性能没有本地存储快,但是这样的性能已经足够满足手游,页游,甚至大部分一般IO的应用,就ceph的部署成本来看,要看副本的保留分数,默认是3份,成本较大一些

8、QQ群—OpenStack群—Q3:虚拟机用的系统盘也放在 ceph 里吗? 延时高不高?

A:是的,存储网络纯万兆环境,延迟不高

9、KVM社区2群  Q1:谢谢分享 请问1.G云后端的三类资源,高并发时对IOPS肯定也高? 2.G云后端资源分配能否动态分配? 3.G云底层是什么系统?

A: 1.这个和应用类型有关系。2.后端宿主机资源类型,是评估之后确定了,调整需要人工接入进行迁移操作。3.G云宿主机使用Centos系统

10、KVM社区5群  Q3:kvm后端存san采用双活方式还是主备方式,如何实现存储宕机,kvm快速热迁移?

A:采用商业存储的情况下,双控是主备的。如果极端情况,存储完全宕机,所有虚拟机都会从备份存储上重新开启。主存储和备份存储之间,采用商业存储只带的同步复制机制

11、KVM社区5群  Q2:能大概说一下外网区域与内网区域之间的网络安全用的什么方案么?

A:内外网络物理隔离

12、KVM社区5群  Q4:ceph和vmware vsan哪个好用,速度对比呢???

A:VSAN我并没有在实际环境中使用过,所以不好比较

13、QQ群—KVM1群—Q5:问一下,G云最大的优势(技术层面)有哪些区别于其他主流云?对于端游,手游,页游,有什么特点特别对应的技术措施伐?端游,手游,页游有哪些行业典型案例伐?

A:G云最大的特点是定制,从宿主机,网络,到存储,都可以提供定制化。盛大游戏内部几十款端游,手游,页游都运行在G云平台上,每一个都是案例,有大家熟知的传奇世界,龙之谷,热血传奇等等

14、QQ群—KVM1群—Q6:自动迁移时间多久?

A:迁移时间与业务类型有关系,具体的原理,可以参见libvirt 在线迁移相关内容

15、Ceph 中国社区交流3群  Q1:请问目前对数据使用什么冷备份方案?

A:现在快照,集中冷备

16、KVM社区3群  Q1:请问之前提到的性能分析系统是基于什么做的?

A:自己开发的

17、QQ群—KVM1群—Q6:这种环境下,一般是对前端虚拟机备份,还是后端存储数据做备份呢?

A:集群架构虚拟机都在存储上,前端只提供计算资源,所以前端不需要备份

18、KVM社区5群  Q6:基于ceph的同步复制是怎么做的?

A:同步不是对Ceph做的,是采用商业存储架构下,有商业存储提供的特性

19、微信云实名技术   Q1:请问你们全ssd的主机做了缓存吗?比如qemu的缓存  文件系统的缓存 .或者raid卡的缓存是怎样配置的?

A:做缓存的,配置RAID卡的服务器都是配置WriteBack的

20、QQ群—OpenStack群—Q8:请问下ceph后端的规模是多大呢,如果不分pool的话ceph后端规模大了是不是会有问题呢

A:Ceph后端规模,初始是一个机柜,后期根据使用情况,再做调整,会区分不同的pool

21、KVM社区5群  Q7:平台判断的误判率是否可以有效控制?之前我们开发的监测系统刚起步的误判率比较高,一直处于改进中,我想生产环境,尤其是大型的游戏,如果不能有效控制这个误判的话,会很浪费资源,请问是通过什么手段来降低误判率?

A:你指的是什么误判率?没太明白。

22、QQ群—KVM1群—Q8:集群HA是基于虚拟机操作系统+应用程序吗?

A:KVM集群没有HA

23、KVM社区4群: Q1:混合云和企业私有云有什么优势?企业如何抉择?

A:混合云能提供更加丰富的资源,因为确实有些应用在云上是跑步起来的,比如某些安全系统。对于企业来说,根据自己的业务类型,压力情况来选择合适自己的产品

24、Q8的问题是问,集群是不是用KVM机里的操作系统+应用来做的集群,或者说KVM如何做集群,又或者说KVM通过什么 方式保持机器不间断服务

A:集群和单机的差别在于,云主机运行的介质,如果运行在本地磁盘,就是单机,如果运行在共享存储上,就是集群。如果是计算节点物理硬件故障,一定会导致云主机宕机。集群架构相比单机,恢复速度要快很多。

25、QQ群—KVM1群—Q9:没有HA怎么迁移?

A:集群和单机的差别在于,云主机运行的介质,如果运行在本地磁盘,就是单机,如果运行在共享存储上,就是集群。需要详细了解KVM集群,可以参考一下《深度实践KVM》。


    关注 KVM虚拟化实践


微信扫一扫关注公众号

0 个评论

要回复文章请先登录注册