游族网络:我们是怎么玩转千台以上游戏云服务器的

摘要

来自上海游族网络的运维总监李志勇,带来的分享“如何运维千台以上游戏云服务器”,本次分享中重点是云时代的运维,包括游戏上云部署整体方案、游戏服务器批量运维管理,并对企业选择云数据库还是自建MySQL数据库给出了自己建议。

游戏产品架构进化史

图一:游戏产品架构进化史

经过近七年的高速发展,公司游戏服务器从100台增长到10000+台,游族整体游戏架构也经过了三个阶段的演变:

  • 公司早期广泛使用的第一代架构,当时主流的产品都是以DB+计算+前端这样的3个角色开发设计并部署,服务器以物理机为主,一个游戏区组需要2~4台服务器,不同的机器承担不同的角色。这种架构方案效率低,基本上不可能实现一天开100个区组(100个区组大概需要400台服务器);
  • 随着业务量的增长和虚拟化技术广泛使用,游族整体游戏架构更新为第二代架构,全面采用虚拟化技术,把一台高配的物理机器虚拟化成多台符合游戏需求的虚拟机来使用,并实现了ALL IN ONE的系统架构。该架构方案运维效率高,适合规模开展游戏运营,但不具备业务高可用特性,一天开100个区组成为常态;
  • 为了迎合大区大服、全球同服,游族融合了前两代架构的特点,推出了第三代架构,按角色分拆并形成服务集群模式。集群架构结合了物理机与虚拟化的优势,实现弹性扩容,游戏逻辑以服务进程或集群配置项的形式提供服务。该架构方案运维效率更高,可实现秒级开服同时具备业务高可用特性。

图二:游族专有云 OpenStack

基于第二代架构,游族基于OpenStack自己的专有云,最初目标是为了提高服务器利用率、降低成本和实现分钟级开服。运维团队以OpenStack G版为蓝本进行调优并修改;整个网络采用的是VLAN模式,保证最大限度与现有网络架构保持兼容;存储方面使用本地磁盘作为存储。

通过底层优化后,游族专有云基本上可以满足业务的需求,目前90%游戏业务运行在上面,虚机规模持续保持在10000台以上,游族专有云平台没有提供WEB管理界面,日常所有的操作都是通过命令行和脚本的形式进行操作,但对于虚拟机的增删查改,重新封装了一层简洁的API接口实现与游族运维平台的对接。经过评估测验,在高峰时期,整个专有云资源利用率可达到83%。

运维方式的转变

图三:运维方式的演变

与三代架构相互对应是游族运维的三个阶段:

  1. 在第一代架构上,运维基本是手工运维,技术含量并不高,纯粹是采用人与时间堆积进行,运维同学需要登录每一台服务器,顺序执行相关的命令和脚本。独立的版控服务器,通过主动推送的形式进行版本更新;
  2. 在第二代架构上,通过自动化工具进行批量运维,团队推出了使用expect写的auto批量脚本,所有操作只需登录一台集控服务器执行批量并发操作的脚本,独立的版控服务器,通过并行的主动推送;
  3. 在第三代架构上,可以实现系统化运维,多个运维系统相互协调配合实现,例如:CMDB、业务树、作业平台等。游戏区组搭建的时间基本上可以忽略(可按需求实现按条件触发或手动触发搭建操作),所有的更新操作在WEB管理平台就可完成。

游族作业平台UJOBS

图四:UJOBS架构及其游戏更新流程

系统化运维过程中使用的作业平台(UJOBS)是属于C/S的架构,其核心部分由任务调度器和agent组成,通过调用API接口完成多种形式的指令下发。UJOBS简单的来说是为服务器管理提供了执行命令的通道,将所有的执行命令和脚本在目标服务器横向执行完,把输出结果记录日志里面,同时可通过WEB界面实时查看分析。任务调度器是用来全局策略控制,进行并发量控制。任务列表里面保存任务的完整信息。指令仓库保存常用的命令个脚本和上下文关联的命令组合。

在UJOBS平台上,游戏版本更新流程如下:

  1. 版本库的版本变更自动触发构建;
  2. 从版本库拉取变更后的版本文件;
  3. 通过构建操作后,推送目标程序到分布式的全局版控服务器集群;
  4. 在作业平台下发更新操作后,UJOBS的agent取得该次更新的版控服务器地址、变更清单以及版本信息;
  5. 从版控服务器拉取更新文件到本地执行预定的更新脚本;

同时在UJOBS执行的过程中可实时查看输出的日志。当游戏版本更新出现异常,有两种回滚方式:第一种,游戏服务器上保留历史版本,异常时回退到历史版本;第二种,覆盖回滚,将老版本再次发布进行回滚。

数据库备份与恢复

图五:数据库备份方案

相对于游戏版本更新备份而言,数据库备份更为重要。ALL IN ONE模式或者非集群模式的游戏业务场景下,会存在多达好几千个MySQL实例,若是要按常规的MySQL备份方案来实施,管理难度和成本都要翻好倍。因此游族网络采用Xtrabackup在主库上直接备份数据文件方式,备份文件暂存本地;本地备份完成后在备份系统选举一台远程服务器进行异地备份;备份策略每小时一次备份,半小时本地备份半小时远程备份。该备份方法在单主库业务场景下可能是最靠谱的数据备份方案,但备份过程对主库会有影响、(限制IO操作),最坏情况下可能出现1小时的数据丢失(业务接受少量的数据丢失)。

在数据恢复方面,通过一键恢复工具,只需要提供恢复的IP、时间段和业务信息(如库名)即可实现数据恢复;24小时内的数据通过本地的数据恢复(结合二进制日志),超过24小时的数据通过异地数据恢复。

云上迁移历程

图六:老游戏的平滑迁移方案

现在游族已经将几款老游戏迁移到阿里云上。在将ALL IN ONE架构平滑迁移到云上的过程中,首先要求就是迁移过程不能长时间停服,只能接受正常的版本更新的停服时间。整个迁移过程分为以下几步:

第一步提前准备资源,在阿里云提前申请好资源,初始化环境并把专有网络与自有机房的网络打通,实现内网互通为数据同步做好准备;

第二步提前同步数据,使用Xtrabackup备份在线把MySQL配置成主从同步模式,将数据同步到阿里云ECS,在一段时间后完成数据迁移。

第三步正式迁移,正常的游戏停服维护时间(0.5~2小时)就可完成业务上阿里云的迁移。目前已经平滑完成3款游戏产品的迁移,每款产品准备时间3~5天,正式迁移用时1~2小时,在阿里云平台使用的虚机超过1000台。

图七:新游戏上阿里云部署方案

上图为ALL IN ONE架构迁移在阿里云后的游戏部署:游戏逻辑运行在云服务器上,业务中使用专有网络,通过自建的ULB对外提供服务。游族网络下一步计划将集群模式部署在阿里云平台上,游戏逻辑将在云服务器集群运行,后端数据存储在云数据库集群中,前端通过SLB和负载均衡保证业务高可用,同时会接入LOG和大数据计算服务MaxComputer确保大数据业务。

图八:阿里云技术支持保障

在迁移到云的过程中,阿里云的技术支持起到了关键作用,线上线下及时沟通,以及特定技术的定制,保证了整个迁移过程的顺利进行。

如何去选择合适的数据库?

图九:自建MySQL与云数据库选择

在游戏迁移过程中,遇到了很多困难,其中一点是选择自建MySQL还是云数据库。根据游戏迁移经验,解决该问题,他认为应从以下三个因素进行考虑:

1.实例数量:实例数量多且业务规模小(无需进行针对性的优化)适合自建MySQL服务;实例数量不多业务相对会比较集中,数据库负载较高需要针对性的进行优化适合使用云数据库服务;

2.数据大小:数据量的大小会直接影响到数据库性能和数据备份的机制,数据量越大越需要对数据库进行精细化管理,数据的备份难度也越大,这种情况下建议使用RDS服务,反之可自建;

3.成本核算:从实例规格来看云数据库会比云服务器自建MySQL要贵,但若是必须用到云数据库的某些特性(如:数据安全和稳定性)时成本也就不会放在首要位置了。

与此同时,大数据量的自建MySQL可以采用延时同步的方法,此方法已在游族网络的女神联盟(手游)的集群架构方案中在使用。游族运维团队独创的数据备份系统、UJOBS、业务网关等独具特色解决方案确保了其业务量在行业内处于领先地位。

QA环节:

1、游族目前的运维人员数量是多少?

答:游族网络最初运维团队在二十人以上,经过技术优化后,目前团队人数在十人左右。从原来的十几款产品到现在的三十几款产品,运维业务量增长一倍,整个运维团队人员缩减一半。团队不断将技术转化为生产力,这是一个持续推进的过程。

2、从运维小白到总监的成长过程?

答:首先,我对运维这个行业保持很高的兴趣。从游戏对战平台接触运维开始,就愿意持续花时间投入游戏运维,曾耗费两天三夜的时间来处理运维中遇到的故障。当然最初也是从底层的运维人员做起,团队管理是被逼出来的,是一个慢慢成长的过程。在团队中,学习应居于首位,每个运维人员需要不断地学习,提升自己的能力。

3、DB除了MySQL还有其他类型吗?比如NoSQL这类数据库是如何管理和部署的?

答:游族网络的产品绝大多数都是使用的MySQL,有少数产品使用了Mongodb,因为量少暂时还是通过手工管理;缓存业务有使用Redis但不存储关键数据,Redis的数据备份使用数据备份系统进行集中管理,所有的软件部署都是通过标准化的业务模板进行管理的。

4、在新方案中,大数据计算服务MaxComputer的应用场景是什么?

答:在游族之前的架构中,游戏日志是分开存储,易丢失。在新的架构中,通过Log服务将游戏日志搜集到大数据计算服务MaxComputer,对后续的游戏和运维数据分析提供便利支持。

5、数据库的部分是单DB多实例吗?有没有启用分布式DB的架构呢?

答:ALL IN ONE架构下,在一个MySQL实例中只运行一个业务;在集群架构下,在单DB实例下,会运行多个业务,分布式DB架构也相应是必备的。

6、游族专有云是用的OpenStack,本身组件很多,后续和公有云之间如何衔接的?

答:目前游族使用OpenStack仅限于机房,短时间内不会与社区版本同步,机房内修改和使用都很简单,整个OpenStack定制和修改不多,更多着重于框架的使用。

7、国际节点和国内节点的高可靠链路如何建立?

答:该链路使用的基本资源是遍布全球的阿里巴巴骨干网,阿里云是将自己的资源分享出来给使用VPC的客户,实现国内外高可靠链路的建立。

关于分享者

李志勇,2010年加入游族网络,目前担任游族网络运维总监,全面负责游族网络运维业务。他具有十年运维工作经验,八年游戏行业从业经验,专注于游戏虚拟化技术和网络优化。

游族网络:游族网络是全球领先的轻娱乐供应商,成立于2009年,于2014年登陆资本市场,成为国内A股主板第一游戏股,其核心业务包括:全球游戏发行、互联网流量经营、IP开发与运营、互联网产品研发和泛娱乐产业投资。

转自:https://yq.aliyun.com/product/325

原文地址:https://www.cnblogs.com/panchanggui/p/9873780.html

时间: 2024-08-08 15:31:41

游族网络:我们是怎么玩转千台以上游戏云服务器的的相关文章

干货推荐:如何运维千台以上游戏云服务器——游族网络

干货推荐:如何运维千台以上游戏云服务器——游族网络 来自上海游族网络的运维总监李志勇,在3月4日云栖社区中带来的分享“如何运维千台以上游戏云服务器”.本次分享重点是云时代的运维,包括游戏上云部署整体方案.游戏服务器批量运维管理,并对企业选择RDS还是自建MySQL数据库给出了自己建议. 关于分享者: 李志勇,2010年加入游族网络,目前担任游族网络运维总监,全面负责游族网络运维业务.他具有十年运维工作经验,八年游戏行业从业经验,专注于游戏虚拟化技术和网络优化. 分享正文: 游戏产品架构进化史  

马上拥有一台自己的云服务器

在这网络时代,很多工作已经是远程在完成了.随时随地,时空不限已经是常态.如今有了云服务器,电脑也不受物理位置的限制了,只需几分钟,马上就可以拥有一台自己的云服务器,从此,无论在哪里都可随时接入自己的个人桌面. 前言 云服务器可称为互联网电脑,拥有一台互联网电脑,就可以: 随时随地连接并运行任何程序 存储手机里已经容纳不下的图片与文件 发布一个自己的站点 部署一个共享的游戏端 打开你的潘多拉盒,很多事情可以尝试 1. 登录阿里云 在浏览器中进入阿里云网站 https://www.aliyun.co

使用Java管理千台规模Linux服务器_入门

http://www.oschina.net/code/snippet_222919_11734 代码分享 当前位置: 代码分享 » Java  » 网络编程 搜 索 [饶过] 使用Java管理千台规模Linux服务器_入门 rgone 发布于 2012年07月09日 10时, 24评/2769阅 分享到:  收藏 +43 踩顶0 前东家是一家游戏公司,老板很好,当时工作也留下了很多自己原创的管理脚本.现在分享一下在办公环境使用Java.Jsch登录VPN管理Linux的脚本(此处实现JAVA调

在VMware Workstation中批量创建上千台虚拟机(上)

VMware Workstation 是我们经常使用的虚拟机软件,其功能强大,性能较好.大多数用户都会在"图形界面"中创建虚拟机.修改虚拟机配置.添加虚拟机参数,或者使用"克隆"功能创建多个虚拟机,这些都无需介绍. 但是你有没有想过 ● 将 VMware Workstation 创建的虚拟机,供网络中其他用户使用呢? ● 如果你想使用模板,创建几十.上百甚至上千个虚拟机,怎样才能做到呢? 本节通过两个具体的案例介绍这些应用. [说明] 这是"使用VMwar

在VMware Workstation中批量创建上千台虚拟机(下)

2 快速克隆100台Workstation虚拟机方法 在上一节的内容中,无论是创建"完全克隆"的虚拟机还是"克隆链接"的虚拟机,都是在VMware Workstation的图形界面中以向导的方式创建的,每次创建一个虚拟机都需要多个步骤才能完成.在创建的虚拟机数量有限的情况下,使用图形界面创建虚拟机还可以接受,如果需要批量创建多台虚拟机,例如创建几十台.上百台甚至上千台虚拟机时,反复的操作会让人"崩溃".本文介绍采用VMware 提供的命令行工具v

配电自动化终端安防改造用配电加密模块(产品已经在10KV线路上数千台配电自动化终端进行过安防改造)

本产品已经在10KV线路数千台配电自动化终端进行过安防改造.产品运行稳定,即插即可,美观大方.本文以广州市智昊电气技术有限公司所研发的ISU-208配电终端加密模块装置为例说明在国网现场应用的方案场景及开通方法步骤,为广大的使用 目 录1 产品概述 32 现场接线 43 配置模块参数 43.1系统参数配置 43.2串口参数配置 53.3网络参数配置 54 加密模块证书请求文件的生成 65 加密模块内主站.网关正式证书导入 6 1 产品概述ISU-208N是智昊电气针对配电自动化终端信息安全升级改

数千台服务器,千万用户量:居然之家两年云原生改造历程

导读:传统企业的决策链路通常是自上而下的形式,因此在互联网化改造中,不仅仅是研发层面,整个公司的管理人员都需要做好知识升级和观念更新,这也是躺平设计家在过去几年的上云之路所经历的.本文将聚焦居然之家利用阿里云容器服务(ACK) 进行云原生实践历程,期待能帮助读者了解传统企业从传统单体架构向云原生演变的实践路径. 2009 年,居然设计家 (Homestyler) 研发团队正式成立,开始进行第一个版本的探索:如今,十年已过,居然设计家正式更名为躺平设计家,用户量近千万.在两年多的云原生实践改造过程

架建一台LINUX的DHCP服务器

要求,1.DHCP的IP192.168.1.252 2.分配192.168.1.10-200的IP地址, 3.A主机,固定IP A    00:0C:29:A8:43:F0             192.168.1.100 步骤: 一.安装DHCP服务 rpm -ivh dhcp-3(tab) 二.配置文件 1.配置本机IP地址 vim /etc/sysconfig/network-scripts/ifcfg-eth0   永久配置 DEVICE=eth0 BOOTPROTO=static I

两台装有Ubuntu系统的服务器搭建VPN(一台为本地服务器,另一台为云服务器)

我们搭建VPN采用的是openvpn,搭建过程总体需要经过三大步骤:   1.openvpn的安装与配置    2.端口转发    3.系统重启iptables规则自动生效  注意:以下所有名令在root权限下输入(进入root权限命令 sudo su) 一.openvpn的安装与配置 openvpn安装与配置教程,此链接中的内容介绍了openvpn的安装与配置步骤(图文并茂) 二.端口转发 第一步完成后,本地服务器与云服务器组成了一个局域网(我们配置后的本地服务器虚拟网卡IP为10.8.0.6