巨人网络游戏自动化平台介绍

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、系统架构

 

 

   自动化运维工具帮助完成了巨人游戏很大一部分的日常工作,起到了非常重要的作用,基本满足了巨人游戏的日常运维自动化需求,但也有一些不足的地方有待改进,故障的自动处理、自动扩缩容等是之后的努力方向。

posted @ 2016-09-23 22:49  每天进步一点点!!!  阅读(961)  评论(0编辑  收藏  举报