【转】手游公司运维之从一我的运维到运维主管

去年阴差阳错地进入了我目前的公司,一家定位于创业型公司的手游公司,公司目前有一款游戏在线运营,还有两款游戏在内测和开发当中。回首在这家公司 工做的这段时光,感概颇深,半年时间掌握的知识是我以前两年多掌握的还要多,在这边工做半年好像是工做了一年半。之前我在大公司的时候,以为工做时间太清 闲,想要得到更大的发展空间,想要学到更多的时候,更重要的是在大公司,没有存在感和成就感。在大公司,不少东西作得很完善了,我只须要去适应大公司里面 的工做流程,去作那些已经作得很模块化的工做,可是他们是怎么样从一团混乱发展成流程标准化,我不得而知,也没人讲解过,当时就以为在这家大公司里面,很 多东西都不是我作的,我只是一名简单的运维小工,作些常规的简单操做,因而,我用尽心思去了解运维方面的底层架构,我当时在想,若是我有机会,我必定会亲 手把一个公司的运维部发展成这家大公司的模式。前端

我去目前公司面试的当天收到两个offer,一个是另一家游戏公司,有必定规模, 公司大概几层楼,有几百人。还有就是当前这家公司。这家公司的状况是刚成立不久,收购了另一家公司的项目组,收购的项目刚开始运营,公司缺一个运维人 员,可是干得工做比较杂乱,统管公司的全部的运维工做,又当网管又要管理线上的服务器。当二老板面试个人时候,说我以前一直作的服务器运维工做,可是在这 边既要当网管又要作游戏运维时,我想了想,仍是很坚决地说愿意到这边来工做。当时我想,虽然搞桌面维护是我很是不肯意干的事情,可是公司正处于发展阶段, 刚开始不免会苦一点,只要过了这个阶段,个人发展空间将会很大。一周事后,入职的第一天就和二老板去搬电脑,入职次日修电脑和安装操做系统,第三天就要 直接管理线上的服务器。总之,以后的天天都是忙忙碌碌,好多天都是早上上班带的早餐,等到10点过才顾得上吃,不是帮同事处理桌面服务就是和开发讨论游戏 上线的问题,因为一些缘由,项目组原来的成员陆续都离职,包括策划,美术,客户端和服务端,不少部门新来的同事都是不到一周就要被逼接手工做,公司一团混 乱,新来的策划尚未熟悉游戏资源配置,新来的服务端程序尚未熟悉游戏代码,运营那边就催促要更新资源,要发布上线。很长一段时间你们都是处于赶鸭子上 架的状态,硬着头皮上,慢慢去摸索。除了工做交接的问题外,更可气的是原项目组成员隔三差五就捣乱,致使咱们常常加班,四处救火。最严重的一次就是去年国 庆以前的一天,公司自主运营的几个游戏区服玩家忽然都进入不了游戏。这可急坏了咱们,觉得游戏服务器遭攻击了,或者有竞争对手捣乱,觉得是 Nginx,PHP-FPM参数没有配置适当,觉得是MongoDB数据库不稳定,又请ucloud的技术支持帮忙处理,到当天晚上1点过,最终肯定为 MongoDB索引丢失致使PHP代码查询MongoDB数据库链接超时,进而玩家没法进入游戏。我和几个程序员都快要哭了的感受,觉得玩家的游戏数据全 坏了,还上什么班啊,卷铺盖走人得了。以后的一两个月里,几乎一到周末就有某些区玩家进入不了游戏,因为有以前的案例,就再次添加索引玩家又能进入游戏 了。奇怪的是,很过区服刚添加过索引不久,MongoDB索引又丢失了,咱们处处高手问,网上查找资料,为何MongoDB索引会平白无故就丢失呢,很 多高手给的答案就是要么换掉MongoDB数据库要么从新审查MongoDB的表结构的业务逻辑。当时我看官方文档说MongoDB是内存映射型数据库, 我就怀疑是否是因为内存不够致使MongoDB数据丢失的状况,可是明明内存是够的啊。最后开发同事无法了就开始审核代码,最终发现游戏代码里面有后面程 序,经过调用PHP的eval()能够执行任意代码,再经过MongoDB的操做记录发现,MongoDB索引丢失的时间段里,有不少删除操做。代码修复 后,后面基本上就没有出现过相似事件了,他娘的,这不是要坑人吗,咱们为此加了多少班,浪费了多少时间,为此,我决定之后有空了必定要对开发的上线代码进 行关键字过滤。物理机房断电,物理机房调整防火墙,游戏域名没有备案被当局墙掉,公司BI系统遭受CC攻击等等相似的事情还有不少,一我的扛过来了,受益 也颇深。刚来公司的时候,一边老板要让弄打印机,弄RTX,另外一边老大又要让处理线上问题,两头都为难。还有就是游戏频繁上线代码的问题严重得很,又要项 目一直没有发布分支,致使不少时候测试刚测好,放到线上就又出问题了,缘由是策划那边又改资源了,我这边也要频繁上线。刚开始经过rz,sz将开放打包的 代码上传到服务器,后来实在受不了,就想法写了同步脚本,可是频繁登陆到服务器去执行脚本,我又受不了最近研究Rundeck,终于实现了在WEB界面去 发布代码,后续会写文章讲解。python

在这边工做,个人脑子天天都在高速运转,天天都在想如何才能减轻本身的工做量,如何才能提升工做效率,不让自 己沉溺于繁琐的重复劳做。还有做为运维主管,如何去推进高效的运维,如何制定运维部内部员工的职业发展路线。我在大公司的时候我深切的体会到在一个公司作 网管几乎就只能一直作网管,很难进行转岗,由于网管基本上只会Windows系统,可是就目前来看,学习Windows是没有太大前途的,除非想一生作 网管。因此我在公司除了桌面系统推行使用Windows系统外,其余的内部服务所有使用Linux服务器,DNS,邮件服务器,域名代理等服务器,让公司 的网管组同事也可以有必定的发展空间,除了常规的Windows桌面维护外,有不少学习Linux 的机会,之后能够直接转岗到游戏运维。同时为了规范化运维工做,我在公司推进搭建公司内部的WIKI系统,不管是网管工做仍是游戏运维工做都要记录到 WIKI系统中,以让新入职的同事可以尽快熟悉本质工做,同事也鼓励公司内部知识分享,将一些工做经验分享到WIKI系统中,逐步完善公司内部的知识库。程序员

2014年咱们须要作的工做还不少,去年经历的不少苦逼事件促使咱们更快的成长,更快地寻找到适合本身发展的方向。主要有如下几个方面面试

第一,尽快完善代码上线流程。从过去的彻底手动上传代码,到编写shell脚本,再到经过WEB方式去点击,总之,一切目的都是为了提升工做效率和避免重复劳动,运维工程师不该该被这些繁琐重复的劳动给拖累,应该去创造更多的价值,应该花更多时间去研究如何优化流程。shell

第二,完善监控系统。在过去因为时间精力有限,我只是使用zabbix初步搭建了一个监控系统,对于不少业务层面上的监控都没有作调整,如游戏域名的正常访问,MongoDB监控等。数据库

第 三,全部的Linux服务器统一帐号管理。在去年,因为状况特殊,项目开发具备服务器的全部权限,去年我晚上睡觉的时候都担忧别人会误操做删除服务器数 据,可是都是使用同一个帐号登陆服务器的,没法得知是谁登陆服务器,因此今年我要仿照以前外企的帐号管理模式,搭建OpenLDAP集中帐号管理服务器, 对不一样人进行访问权限分类。后端

第四,对上线代码进行审核。在去年,因为前项目组程序员在游戏代码中留后门致使咱们常常加班,常常是半夜打车回家的苦逼经历,在从此的代码上线以前必定要对开发的代码进行审核,避免因为有意无心的安全风险。安全

第 五,和开发同事一块儿研究如何优化游戏架构。目前每一个游戏区服都是使用单独的域名,单独的Nginx虚拟主机目录,而后一样的代码要拷贝多份,每一个区服须要 单独配置配置文件,因为程序的架构不支持负载均衡架构。这种方式太坑爹了,既不能合理利用服务器系统资源,运维这边也是干些重复的体力活。在后期咱们会考 虑使用HAProxy+Keepalived做为游戏服的前端,而后根据负载状况增长或减小后端的游戏服。这里须要考虑游戏玩家的session会话和应 用日志处理的问题。ruby

第六,深刻学习MongoDB和Redis。后面的项目,咱们也使用MongoDB和Redis做为游戏的游戏数据库。因此,运维这边有必要深刻了解MongoDB和Redis数据库。服务器

第 七,公司内部邮件服务器切换。因为公司是创业型公司,一直使用的是QQ的免费企业邮箱,随着公司的发展,不管是从企业的私密性要求和邮件的收发效率来说, 使用相似QQ企业邮箱这种免费邮箱会有不少限制和安全性隐患。数据放到本身公司内部才是最安全的,何况部门内部员工邮件沟通走内网也是至关快速的。在去年 咱们使用iRedmail开源邮件方案在公司内部测试,我平时除了正式的工做邮件交流使用公司的正式邮箱,其余的邮件全是使用测试邮箱帐号进行收发邮件, 如接受zabbix监控报警邮件,注册国外网站使用的邮箱,包括公司内部一些系统的通知邮箱地址,如xwiki系统,redmine,代码发布系统全是使 用测试邮箱帐号。从使用情况来看,iRedmail开源邮件解决方案仍是比较高效和稳定的,因此,今年咱们会抽时间将邮件服务器从QQ免费企业邮箱迁移到 iRedmail邮件服务器。

第八,推动自动化运维。工做第一年我花时间研究了puppet,结果没有使用,如今也没有再去研究了,因为 puppet是使用ruby语言写的,puppet的配置语言和ruby也相似。我决定直接放弃puppet,选用SlatStack做为咱们的自动化运 维工具,它由python编写,很方便进行二次开发,同时正在使用的自动化工具Rundeck也能够整合SaltStack,因此,StaltStack 是今年咱们须要研究的重点。

2014年,是一个充满机遇和挑战的一年,我会更加努力努力去作好本身的本职工做,带领团队成员打造优秀的运维团队。

 转自:http://john88wang.blog.51cto.com/2165294/1370276

相关文章
相关标签/搜索