巨人网络游戏自动化平台介绍
1、背景
巨人网络游戏平台有征途系列、征途2系列、巨人系列、代理系列等,随着游戏在线人数上升,游戏区玩家人数随之增长,并且游戏数量也快速增多,运维的日常工作量也呈直线上升趋势(如下图所示,发布在日常工作量中占有很大比例)。之前的手工运维、脚本运维已经让运维人员非常吃力,运维工作重复无趣、人工操作容易出错、效率低下、多游戏多区组同时发布导致运维人员手忙脚乱。于是我们开始考虑自动化运维,从根本上来解决这些问题,提升运维价值。
2、版本发布过程
QA测试完成之后,把版本打包放在版本服务器上,通知产品制定发布计划,产品在游戏内、官网、BBS等地方推送维护公告,然后通过流程管理系统Maximo提交发布单给运维人员,到运维人员之后,主要经历如下几个阶段:
1)游戏停机前
在游戏停机前,会传输好心的版本,做好补丁,修改好配置文件,版本检查。
2)游戏停机
到预定停机时间,运维停止游戏
3)游戏停机后
备份数据库,修改数据库(如果有),修改防火墙规则拒绝用户进入
4)启动游戏
启动游戏之后,通过防火墙规则不让外部玩家登陆,通知产品及运营测试
5)对外开放
在产品功能测试没问题之后,修改防火墙规则,对外部玩家开放
3、工具原型
最初的工具就是基于以上过程来设计的,首先把每一个步骤的操作都原子化,脚本做到可以多次重复执行不会影响结果,然后通过工具来整合每一个小任务,从而完成整个大任务。从以上步骤可以看出:有些步骤是可以提前完成(例如传输版本);有些步骤是需要精确的时间点做的(例如游戏停机),需要工具提供定时执行小任务的功能,而有的步骤是有顺序的(例如备份数据库一定要等游戏停机之后),这就需要工具提供小任务的顺序执行功能,而对外开放这个动作,是要等产品通知之后才可以操作,没有时间规律,所以只能手动操作。另外每款游戏可能会有不同,所以需要提供模板功能。
通过后台可以很方便的编辑模板,自定义操作节点,任意添加任务。
如下图所示,为一次游戏开区的任务列表,把复杂的开区任务拆解成了n多个小任务,通过工具的串联最终来替代人工完成开区任务。
4、部分业务自助化
一些小的变更,之前需要产品通过运维来操作的,直接在工具上提供给产品自己使用,产品随时可以很方便的操作,如下图所示,游戏维护的时候,产品测试完成,不再需要通知运维同学对外开放了,产品点一下就能完成,比如游戏里面的双倍经验的开关,产品自助即可完成。
5、主要功能介绍
5.1 服务器初始化
通过工具可以很方便的初始化大量新上架的服务器,而不再需要登录到服务器上去操作。
自动更换备机,当有机器硬件故障的时候,是比较头疼的事情,需要去找备机,并对备机做一些初始化设置,然后顶替故障服务器,通过自动化工具可以做到自动查找备机信息,并且自动初始化服务器设置,然后自动顶替故障服务器,基本做到了一键更换备机,不需要运维人员手动操作,大大降低了操作时间,并且降低了运维人员手工操作,大大降低了操作时间,并且降低了手忙脚乱的出错率。当然这块还要改进的空间,和监控结合起来,自动触发更换备机的动作,这样将更加高效。
5.2 迁服自动化
游戏开服频繁,新服人数暴多,而一周之后大幅下降,之后继续下降,为了提高资源利用率,所以游戏区迁服比较频繁,人工操作步骤繁琐,很容易出现失误,而在工具上只需要输入几个参数,就可以全自动完成,提高了效率并且降低了失误率。
5.3 自动化部署新服
游戏开区是一项比较重要的工作,因为公司在每次新区上都会投入大量的广告,如果新区出现问题,大量的广告费将打水漂。把开新区的动作分拆成N个小的任务,然后由自动化工具整合调度执行,基本达到了90%以上的自动化程度,有力的保证了新区的稳定性。
5.4 自动化合服
游戏区人数变化很快,有些人数很少的区就需要合并以增加人气,并降低服务器成本,所以合区需求一直比较旺盛,合区过程相对比较复杂繁琐,对操作人员水平要求较高,所以合区一直是问题的高发区。通过运维和开发人员一起努力,把合区的整个过程全部描述了出来,做到了在工具里边一键完成合区动作,后续只需要定时更新数据库SQL脚本即可。
5.5 单人回档
由于各种原因,会有大量的玩家需要回档的服务请求,之前都需要dba手工操作,工作量大,并且还容易出错,固化到工具上之后,客服就可自助操作了
6、自动化运营的重要性
自动化运维是运维体系中的非常重要的一环,是整个运维体系的不可或缺的一部分
日常变更发布的量从统计来看还是比较大的,没有自动化工具的情况下占用了大量的人力成本
自动化工具帮我们处理了大部分的发布和变更,大大提高了运维人员的工作效率,降低了出错率,并且能让运维人员腾出精力去做更多业务相关的事情,从而提升运维价值。
总结:自动化运维解决了那些问题?
1)降低人工操作失误率
2)轻松应对多游戏多区同时发布的问题
3)提升事故处理效率
4)部分发布和变更、在线数据查询等服务做到了自助化
5)由手动到自动,将人力从频繁的更新中释放出来,做对业务更有帮助的事情
6)迁服、合服更将方便、快捷,提高服务器的利用率
7)自动化带动了标准化的进步,标准化又进一步提升了自动化
7、系统架构
自动化运维工具帮助完成了巨人游戏很大一部分的日常工作,起到了非常重要的作用,基本满足了巨人游戏的日常运维自动化需求,但也有一些不足的地方有待改进,故障的自动处理、自动扩缩容等是之后的努力方向。
出处:http://www.cnblogs.com/madsnotes/
声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。