开发者社区> 【云行】> 正文

Cmdb、Saltstack、Web化,莉莉丝游戏云上运维心得分享

简介: 在2017游戏行业全球同服和安全攻防技术沙龙上,来自莉莉丝游戏的蒋海洋分享了《莉莉丝游戏云上运维之路》。他通过介绍莉莉丝游戏的概况、进化历程,引出了莉莉丝游戏使用的cmdb,Saltstack以及Web化技术,并且分享了莉莉丝游戏在运维方面的心得。
+关注继续查看

在2017游戏行业全球同服和安全攻防技术沙龙上,来自莉莉丝游戏的蒋海洋分享了《莉莉丝游戏云上运维之路》。他通过介绍莉莉丝游戏的概况、进化历程,引出了莉莉丝游戏使用的cmdb,Saltstack以及Web化技术,并且分享了莉莉丝游戏在运维方面的心得。

 

以下内容根据直播视频整理而成。

 

目前概况

莉莉丝游戏采用的是云上架构,目前拥有两个运维工程师,4款运营中游戏,500+云主机,200+RDS。线上没有一台物理、实体的服务器,也没有使用任何物理的机房。

进化历程

之前做的比较好的一款游戏是《Dota传奇》,蒋老师进入莉莉丝游戏之后初步了解过该游戏的运维情况。《Dota传奇》运维的基本方式是以txt文档来管理基本的主机资源,比如IP、数据库、游戏的服务器名字,如果需要进行操作的话使用Python写的脚本,利用里面的expect模块以及多线程进行操作,其存在的问题是速度特别慢,比如在发布版本部署文件的时候。

在做美版发行的时候,莉莉丝引入了cmdb用来管理基础的资源信息等,远程执行则使用了开源的软件saltstack来进行操作。做完这些之后,服务器的同事想要自己做制作的操作等,所以需要web化开放出来。

Cmdb

cmdb是构建自动化流程的基础,所有的资源等信息都在其中进行管理,比如游戏和配置等都是从cmdb中拉取出来的,包括里面的充值等都是从cmdb拉取。之前使用txt进行管理的时候,很多地方都有对应的东西,如果有一个地方需要进行变更的话,其他地方如果没有关联到就可能出现问题。cmdb的管理纯粹是基于云平台上的配置管理,没有物理服务器的话不用像实体机房一样关心服务器的位置、端口,只需要管理IP的信息、硬盘、ERP等。

c7c2974607ec1f256f033dc061dc2ff626cb6bdc

上图是莉莉丝自制的管理平台,主要分为三层结构:业务管理,包括游戏等;拓扑模型,比如游戏的集群模块等;业务实例,每个模块下面的实例。

e9502446116de820af2b6c4e7adadccb4fe9f737

莉莉丝拥有的资源如上图所示,主要为云上的资源,固资编号是根据云厂商的ID得到的,又相对实例化,还涉及到后期的按项目拆分账单等。将资源都管理起来之后,底层调用了云的API,如果需要买一些组件的话只可以直接在里面点一下,客户端会联动云平台的API把资源灌到里面来,然后把资源分配给项目使用。

saltstack

saltstack是开源的快速远程执行平台,是基于Python开发的,部署简单方便,有自己的API便于进行二次开发。

ccc675d8e1d865ce5a30e5f254a8950214668a15

最上方是一个Master,下面会挂很多minion,Master可以对minion进行远程的操作。如果在阿里云上用了很多的区域,相当于在中间加了一些Syndic节点进行统一管理。我们会根据业务关系去调cmdb里面存储的业务信息,比如需要对某个模块进行操作的时候会到cmdb里面去找需要操作的命令有哪些,然后将这些命令下发下去。执行完命令会将结果返回回来,中心Master就会看到这些返回的结果,整个的执行速率非常快。

Web

后期,一些开发同事也想用saltstack,但是纯粹的命令行会让人觉得不太方便。所以做了一个web化的东西方便使用。它也成了一个交互平台,比如想要知道增加一个模块每db需要多少机器,那么可以告诉他需要在db的集群下面开一个模块,分好机器之后告知提问者可以直接进行操作即可。Web化可以降低使用门槛,固化操作流程可以减少失误。

9b68668faf5effa3a3d0fec3fedca83e7e6400b3

上图是可视化作业平台,有几个常见的功能:如果想看某个文件是否下发下去或者当前的状态,可以点击快速脚本执行,可以在下面直接进行脚本编辑,然后指定执行的目标路径、执行账户,通过配置平台选择执行的机器,按照模块把所需要的集群都勾选上,执行完之后把最后的执行结果返回回来在业务平台上展示出来。这样对于开发的同学非常方便。

心得

首先,莉莉丝的人力非常少,所以考虑用开源的软件,比如监控使用小米的open-falcon。在游戏行业,标杆行业腾讯的运维平台蓝鲸已经做到了2.0版本,自己做平台的时候也可以参考这些企业的运维平台,但是由于担心安全问题可以不直接使用。

莉莉丝使用了很多成熟的云产品,阿里云的RDS已经做得非常成熟,可以做主从同步,出现问题时也可以回滚到任意时间点,小公司使用起来非常方便,没有必要自己来搭相关数据库。这样就不需要自己做备份相关的事情,可以省很多时间和能力,而且可以动态扩容。如果用主机来搭数据库的话需要考虑到了瓶颈需要怎么做,早期成本会比较高,用RDS可以先选择比较小的量,到了一定阶段的时候再进行扩容即可。很少用到CDN做云栈,只需要用OSS上传回源。由于曾经受到了DDos攻击,所以使用了阿里云的anti-ddos进行防范。

利用好阿里云的API接口,通过写一些脚本来使用API接口可以提高效率。最好一开始就寻求专业支持,在架构设计阶段就可以联系做架构的指引,这样对于后期的维护相对简单很多。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
技术分享:如何在阿里云服务器上部署网站
在云服务器上部署网站前,首先必须确保您有云服务器的管理权限,或者是云服务器的空间和接口程序。拥有云服务器的空间和接口程序,在云服务器上实现网站应用的步骤如下
11288 0
Linux问题情报分享(1):内核Stack Clash补丁导致Java程序启动失败
突然发现Java程序无法启动。或者内核升级后Java程序无法启动。那么,很可能是内核Stack Clash补丁导致的。
2499 0
免费 | 开发部署效率提升 12 倍,这款应用托管服务让云上运维更简单
应用托管服务,顾名思义,就是一个用来构建和部署应用的全托管式平台,简化部署和运维过程。 在使用应用托管服务之前,上线一款简单的应用,需要经历: 购买 ECS; 配置 VPC; 配置 RDS; 配置 SLB; 前前后后可能有12个步骤,而借助阿里云Web应用托管服务,可省去云端资源的申购与编排、软件运行时环境的安装与配置、应用程序的启停与维护、部署环境模板的分发与重放等多个环节,一步便能实现赢得上线。
2396 0
运维平台的建设思考
自己最近也在琢磨如何搭建出一个完善有效的运维平台,当然这个工作不是一朝一夕就能完成,前行的道路上肯定会有各种各样的困难和牵绊,但是自己还是能够学以致用,把一些重复性,繁琐性的工作都能解放出来,能够更加关注于更高的一个层级来看待整个系统。
753 0
+关注
【云行】
下载频道官方账号。
84
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载