1. 手游的特点
1) 基本都是linux系统;
2) gs服务器CPU、网络压力高、磁盘压力低;
3) db服务器CPU压力低、磁盘、网络压力高;
4) 生命周期相对较短;
5) 游戏开组并组频繁;
2. 手游方案设计目标
1) 满足性能的前提下,保证稳定、可靠;
2) 最大程度的平衡调度资源,提高资源利用率,以达到节省成本的目的;
3) 灵活快速,比如可以在几个小时之内提供数百台主机。
4) 方案生命周期长,从整体角度,综合多个游戏项目,长远来看,能节省大量重复性硬件投入成本;
5) 扩展灵活,可以设计成以1-2个机柜的模块,根据业务灵活扩展;
6) 管理方便,平台化、自动化的主机生命周期管理。
手游方案的技术特点:
1) 硬件和软件解决高性能的磁盘io;
2) 硬件和软件解决高性能的网路吞吐和发包;
3) 硬件和软件解决较高的cpu压力。
综上所述,如果要满足手游方案的设计要求,必须选择虚拟化,因为只有虚拟化才能实现资源池的概念,实现资源的灵活调配,充分利用;只有虚拟化才能实现业务的灵活部署,快速定制。
3. 虚拟化收益
a) 费用方面
费用方面收益非常明显,如果实现1虚10的比例,原来用10台服务器,现在用1台就可以,原来用10个机柜,现在用1个就可以。
b) 管理方面
因为虚拟机从本质上说就是硬盘上的一个文件,虚拟机生成、维护、销毁、转移要比物理机快速和方便许多,一台虚拟机的创建只需要几分钟,而一台物理机的上架至少需要一个小时,速度可以提升几十倍;
结合游戏项目的需求,为游戏项目的游戏程序的自动化部署等,甚至可以向一键开区的方向去努力,通过虚拟化可以提高游戏运维的效率。
4. 虚拟引擎的选择
目前企业级常用的虚拟化引擎有4种
1) VMWware ESXi系列;
2) 微软的Hyper-V;
3) Xen;
4) KVM;
Hyper-V:
微软的Hyper-V是为windows系统准备的,对微软的产品具有更好的兼容性和集成,手游的系统都是linux,Hyper-V不适合做手游的虚拟化引擎;
Xen
Xen成熟,使用的时间也比较长,但是Xen 3.x 没有进kernel upstream,而4.0 虽然进去内核,但是要求内核版本比较高(kernel 3.0),而且使用维护复杂;
VMWare
VMWware ESXi系列是x86平台上最早的虚拟化引擎,成熟稳定,管理方便,但是费用昂贵,软件的授权费用甚至高过硬件,如果使用VMWware ESXi的免费版,内存只能支持到32G,而且随着数量的增加,管理是个很大的问题;
KVM
KVM架构简单 (Linux内核的一个driver),kvm是Linux内核的一部分,KVM在Linux内核内部部署,这样可以很容易控制虚拟化进程;
KVM在Linux整合中要优于Xen。它不需要重新编译内核,也不需要对当前kernel做任何修改,它只是几个可以动态加载的.ko模块。它结构更加精简、代码量更小。所以,出错的可能性更小。
KVM程序模块能直接与硬件交互,不需要修改虚拟化操作系统。因此性能更好,并且补丁包能够和Linux内核兼容,轻松控制虚拟化进程,同时减轻管理的负担。
KVM是Linux上的标准虚拟化技术 (从 kernel 2.6.20),天生就是为linux系统虚拟化,目前许多的游戏平台都使用kvm作为虚拟化引擎,尤其是页游和手游;管理方面也有许多基于KVM的开源免费管理平台可以使用,比如ovirt convirt等;最要的是kvm开源免费,在软件授权方面不会有任何费用。
综上所述,手游的虚拟化引擎选择使用kvm。
5. 虚拟化方式选择
目前有三种虚拟化方式可以选择:
1) 单机虚拟化:
一台宿主机虚拟几台虚拟机,虚拟机的计算、存储、网络都在这台宿主机内;
2) 集群虚拟化:
由商业存储和若干计算节点组成,虚拟机镜像在商业存储上,虚拟机使用计算节点的计算、内存、网络资源;
3) 分布式文件系统虚拟化:
实际也是虚拟化集群的一种,由若干计算节点和用分布式文件系统组成,用分布式文件系统代替昂贵的商业存储,虚拟机镜像存储在分布式文件系统上,虚拟机使用计算节点的计算、内存、网络资源;
三种虚拟化方式的详细对比
单机虚拟化 | 集群虚拟化 | 分布式虚拟化 | |
---|---|---|---|
部署方式 | 灵活,可以在任意地点部署 | 有限制,必须整体部署 | 有限制,必须整体部署 |
容纳虚拟机数量 | 单台 1-10台 | 50-100台 | 50-200台 |
成本 | 低 单台宿主机成本 | 高 需要商业化存储 | 中 使用PC SERVER搭建 |
高可用 | 不支持 | 支持 | 支持 |
在线迁移 | 不支持 | 支持 | 支持 |
资源池化 | 有限支持 | 支持 | 支持 |
虚拟机自动部署 | 需要管理平台支持 | 需要管理平台支持 | 需要管理平台支持 |
弹性扩展 | 有限支持 | 支持 | 支持 |
适用业务场景 | GS DB | GS DB | GS |
6. 虚拟化实施方案
1) 业务性能分析,提炼业务的cpu 磁盘 网路 内存模型
2) 虚拟化方案设计,根据性能分析,确定虚拟化比例和方案
3) 基本的性能测试,主要测试虚拟机性能
4) 业务模拟测试,业务部门在试验环境上测试
5) 小规模部署:
6) 全面部署阶段
7. 虚拟化运维方案
虚拟化开始部署,就进入虚拟机运维阶段,虚拟化运维包含以下几个方面:
1) 持续的性能监控和报警
性能监控包括一些内容
a) 宿主机性能(CPU,内存,io, 网络流量,功耗)
b) 虚拟机性能(CPU,io,网络流量)
c) 网络(流量)
d) 故障监控和告警
e) 服务器硬件故障
2) 持续的优化,发现业务变化导致的性能瓶颈
通过性能监控手段,不断的发现系统瓶颈,并和开发、业务一起持续优化;
3) 日常备份
a) 虚拟机的配置数据
b) 关键虚拟机的数据备份
c) 宿主机mbr metadata等数据备份
4) 应急响应预案
5) 模板管理
根据要求,定制虚拟机模版。
6) 系统补丁
关注KVM相关信息,有重要补丁发布,及时更新补丁。