游戏运维的最佳实践:搜狐畅游自动化运维之旅

简介: 本文讲的是游戏运维的最佳实践:搜狐畅游自动化运维之旅【编者的话】本文作者见证了畅游游戏自动化运维平台的从无到有,通过在其中踩过的坑、解过的结,他向大家来阐述游戏运维的进阶之路。本文主要围绕畅游游戏管理体系与运维自动化的演变历程、运维自动化的实现及未来运维四方面展开。
本文讲的是游戏运维的最佳实践:搜狐畅游自动化运维之旅【编者的话】本文作者见证了畅游游戏自动化运维平台的从无到有,通过在其中踩过的坑、解过的结,他向大家来阐述游戏运维的进阶之路。本文主要围绕畅游游戏管理体系与运维自动化的演变历程、运维自动化的实现及未来运维四方面展开。

【3 天烧脑式基于Docker的CI/CD实战训练营 | 北京站】本次培训围绕基于Docker的CI/CD实战展开,具体内容包括:持续集成与持续交付(CI/CD)概览;持续集成系统介绍;客户端与服务端的 CI/CD 实践;开发流程中引入 CI、CD;Gitlab 和 CI、CD 工具;Gitlab CI、Drone 的使用以及实践经验分享等。

畅游运维管理体系与运维自动化的演变历程

畅游运维管理体系演变历程

从 2008 年毕业以实习生的身份进入搜狐畅游,我同公司一起成长,经历了整个运维管理体系从小到大的过程。

整个运维管理体系是从最初石器时代(脚本化),之后的青铜时代(半自动化)、蒸汽时代(DevOPS)一路演变过来,现在处于自动化和智能化过渡阶段。

畅游运维自动化演变历程

如下图,是畅游运维自动化的步骤,分别是数据总线统一、业务自动化、标准化统一、服务驱动和智能运维。
01.jpg

对于已发生故障进行分析发现,40% 的故障由数据不准确导致。出现这样情况,是因为自产信息或很多系统之间交互信息带来的问题。

所以首要做的是数据的系统、准确性、调用及引用接口的统一。之后对数据和文件分发研发了一系列平台,还有各个平台标准化的统一。

如下图,是畅游运维体系架构:
02.jpg

最底层采用的是混合云的模式,在这基础上,又建设了多个如海豹、集中配置管理、管理和服务相关的支撑系统,还有最重要的天使和监控告警系统。

天使系统的主要职责就是权限管理,畅游各运维人员所负责的游戏各有不同,由于游戏版本的特殊性,一旦泄露,会对整个游戏的营收造成很大影响。

所以,要严格管理每个工程师的权限。监控警报系统之所以重要,是因为涉及到所有游戏玩家的体验和收入。

畅游游戏运维自动化实现

游戏运维的特点和痛点

面对这样的运维体系架构,畅游都在哪些部分做了自动化呢?我们先来看看游戏运维有哪些特点和痛点。

每个游戏的构架和应用场景,乃至于所使用的数据库和开发语言完全不同。还有不同国籍开发的游戏,整个操作系统和数据库环境、版本都存在大量的不同点。这样一来,运维整个平台和环境都要面临很大挑战。

游戏运维的痛点有很多,如:
  • 运维脚本及工具零散、数量多、难复用。
  • 资源需求弹性大。
  • 成本、效率与可用性的平衡。
  • 大流量的高并发。
  • 故障需要实时处理且尽快恢复。
  • 多版本管理。

为克服这些痛点,近四五年,畅游运维做了很多事情,业务和工程师人数等方面都有变化。

从 2014 年到 2016 年,业务每年实现 20% 的增长,全职工程师在不断的减少,这是因为 2014 年到现在,我们做了大量的自动化工具,利用自动化平台和资源整合,每年资源成本减少 30%。

2016 年 CMDB 海豹系统上线,对所有在线资源进行整合,公共集群建设的完成,把单游戏和每一组游戏所需公共服务放在一起,使得资源成本减少 50%。

这里值得一提的有趣现象是 2014 年到 2015 年的人为故障数量基本持平,这是自动化带来的副作用,2016 年人为故障下降了 30%,此时自动化的作用开始发挥出来了。

2014 年到 2015 年的全局故障率(网络故障、硬件故障等所有的故障)减少了 20%,2016 年故障率下降了 35%。

我们为什么可以在业务增长的情况下,依然可以做到故障下降和成本节约?

分析原因如下:
  • 40% 的人为故障是由于信息不准确或是人为操作失误导致的。
  • 30% 的人为故障是由于跳流程操作和研发的沟通壁垒。
  • 50% 以上的成本来自于空闲资源和故障资源,以及服务器性能资源未能充分使用。

针对这些原因,畅游运维做了很多事情,下面主要分享如何通过海豹系统做信息的统一化和标准化、PaaS 平台实现 Devops 自动化交付以及 Docker 容器技术和混合云架构等内容。

游戏运维自动化平台的技术及逻辑架构

对于游戏运维自动化平台应用来说,是既定的计划,可以当做任务来执行,所有开服、关服、更新、数据回档及档案恢复等所有操作都可以定义成任务或工作流,之后把所有的设计全部按照任务系统的架构来设计即可。
03.jpg

在平台设计过程中,系统主要使用 Python 来进行开发。因为从 2015 年开始,我们发现,如果全部用 Java 来开发的话,运维人员的参与度会非常低。

假设运维人员对 Java 不了解,运维和开发之间需求沟通就不顺畅。这里的解决方案就是一线运维人员必须要懂 Python,而且要参与到开发过程中。

如下图,是自动化运维任务的系统架构:
04.jpg

自动化运维任务系统是结合开源技术与公司现有资源的运维的基础操作平台。不仅支持脚本执行、定时任务等基础运维场景外,还提供了流程式开发框架,使运维人员能开发自己需要的业务维护功能。

海豹系统(CMDB)

海豹系统承载畅游硬件层、应用层和网络层等运维层所有信息的记录,如设备、配置、关联权限、关联拓扑、关联环境、关联流程等。基于这些信息,以应用为核心,通过业务场景进行驱动。

如下图,是海豹系统(CMDB)的功能架构:
05.jpg

整个功能架构从下至上分为数据来源、数据层和应用层部分。用以管理系统中心的服务器及相关的软硬件资产信息,是所有系统资产信息的来源。数据层对所有资产进行查询、变更及管理,通过统计报表模块图展示资产的情况。

如下图,是海豹系统(CMDB)的功能架构和技术架构:
06.jpg

这是海报系统的最初时期,由不足五人用 Java 写的核心架构。引擎部分,之所以还在用 JSP 和 Freemarker 引擎,是为了兼顾老的系统。

如下图,是海豹系统(CMDB)的界面:
07.jpg

所有的端游、手游的信息会集中到海报系统,意味着资产管理专员可以通过这个平台做所有资源初始化和分配调度。

PaaS平台

通过业务逻辑把各个资源统筹起来,资源所见即所得,更容易的实现了持续集成,通过各项基础服务的组合,实现代码自动化发布、应用管理、环境初始化部署、线上运维一体化集成,提升项目代码编译、测试、发布效率。
08.jpg

PaaS 平台主要职责如下:
  • 提供一致性环境保障。
  • 提供应用多租户隔离以及资源的多租户隔离。
  • 提供服务发现、可弹性伸缩、状态管理、资源分配、动态调度等能力。
  • 支持预发布、一键发布、一键回滚以及自动化部署。
  • 提供透明化的监控、容灾能力。
  • 提供运维、开发、测试多角度业务场景。

如下图,是 PaaS 平台的主要技术选型:
09.jpg

从上图可以看出,PaaS 平台里也包含外部组件,Docker 也包含其中。因为游戏公司大量代码基本都放到 SVN,所以我们也会选在 SVN 来管理。

Docker 容器技术

PaaS 平台的设计中,核心部分是 Docker。那搜狐畅游的 Docker 是如何设计的呢?

如下,是原 Docker 架构图:
10.jpg

如下,是最终版的 Docker 架构图:
11.jpg

从 2014 年至今,我们已经迭代过两个版本,搜狐畅游在容器监控数据共享、稳定性和镜像管理等方面进行了优化。

如下图,是技术演化对比:
12.jpg

因 Ceph 副本之间不稳定,不支持集群共享,所以改成 NFS + DRBD。因 Consul 集群 Leader 切换频繁,业务数据不同步,负载过高,改成 Etcd,来保证数据同步统一。

为应对 cAdvisor 无法汇总,无法查看历史数据的问题,我们自研了 Hunter。操作系统从 2.6 升级到 3.18,应对运行久了后 DeviceMapper 的信息无法写入导致系统异常的问题。

混合云结构

畅游运维体系最底层采用的是混合云结构,开始考虑的方式是直接接入所有公有云,用专业的方式打通,但游戏需要 BGP(网关协议)。

这意味着必须多线接入,除电信、联通外,所有的小区宽带,第三方宽带也必须要接入,所以需要选择混合云的结构。
13.jpg

选择混合云相比畅游 IDC 降低成本在 20% 左右,并且使资源弹性,云上云下,扩缩容更快速。在可靠性方面,不仅可实现异地双活,还有抗攻击、DNS 劫持、冗余可靠等优势。

畅游运维管理体系的下一步探索

畅游运维管理体系的下一步将把持续交付的分层能力和公共服务标准化作为探索方向。

持续交付的分层能力

14.jpg

在畅游运维做自动化时,会利用可持续交付的理念和原则去做。工具开发过程中,一定要注意的问题是:工具越多,工具与工具之间的调用就会出现大量的问题。

所以一定要进行平台化和做成集群式服务,否则成本不会降低,反而故障依旧会很多。

公共服务标准化

如下图,是公共服务平台整合架构:
15.jpg

畅游把 Redis、Nginx、MySQL 等集群全部接入,不需要做其他的事情。

写在最后

畅游运维做整个自动化过程中的心得有三个:
  • 简单有效,不要做特别花哨,因为对应用最实际才是有用的,对应用或开发人员来说,最有效及效率最高是最好的。
  • 符合实际业务,不是脱离研发和应用。
  • 高效,游戏特性决定必须高效,快上快下,快速决策。

原文链接:游戏运维的最佳实践:搜狐畅游自动化运维之旅(作者:黎志刚)

原文发布时间为:2017-07-27

本文作者:黎志刚

本文来自云栖社区合作伙伴Dockerone.io,了解相关信息可以关注Dockerone.io。

原文标题:游戏运维的最佳实践:搜狐畅游自动化运维之旅

相关文章
|
3月前
|
运维 Linux Apache
,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具
【10月更文挑战第7天】随着云计算和容器化技术的发展,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具,通过定义资源状态和关系,确保系统始终处于期望配置状态。本文介绍Puppet的基本概念、安装配置及使用示例,帮助读者快速掌握Puppet,实现高效自动化运维。
85 4
|
18天前
|
人工智能 运维 监控
AI辅助的运维流程自动化:实现智能化管理的新篇章
AI辅助的运维流程自动化:实现智能化管理的新篇章
357 22
|
11天前
|
Kubernetes Java 持续交付
小团队 CI/CD 实践:无需运维,Java Web应用的自动化部署
本文介绍如何使用GitHub Actions和阿里云Kubernetes(ACK)实现Java Web应用的自动化部署。通过CI/CD流程,开发人员无需手动处理复杂的运维任务,从而提高效率并减少错误。文中详细讲解了Docker与Kubernetes的概念,并演示了从创建Kubernetes集群、配置容器镜像服务到设置GitHub仓库Secrets及编写GitHub Actions工作流的具体步骤。最终实现了代码提交后自动构建、推送镜像并部署到Kubernetes集群的功能。整个过程不仅简化了部署流程,还确保了应用在不同环境中的稳定运行。
49 9
|
2月前
|
机器学习/深度学习 运维 监控
智能化运维:从自动化到AIOps的演进之路####
本文深入探讨了IT运维领域如何由传统手工操作逐步迈向高度自动化,并进一步向智能化运维(AIOps)转型的过程。不同于常规摘要仅概述内容要点,本摘要将直接引入一个核心观点:随着云计算、大数据及人工智能技术的飞速发展,智能化运维已成为提升企业IT系统稳定性与效率的关键驱动力。文章详细阐述了自动化工具的应用现状、面临的挑战以及AIOps如何通过预测性分析和智能决策支持,实现运维工作的质变,引领读者思考未来运维模式的发展趋势。 ####
|
2月前
|
机器学习/深度学习 数据采集 人工智能
智能化运维:从自动化到AIOps的演进与实践####
本文探讨了智能运维(AIOps)的崛起背景,深入分析了其核心概念、关键技术、应用场景及面临的挑战,并对比了传统IT运维模式,揭示了AIOps如何引领运维管理向更高效、智能的方向迈进。通过实际案例分析,展示了AIOps在不同行业中的应用成效,为读者提供了对未来智能运维趋势的洞察与思考。 ####
123 1
|
2月前
|
机器学习/深度学习 数据采集 人工智能
智能运维:从自动化到AIOps的演进与实践####
本文探讨了智能运维(AIOps)的兴起背景、核心组件及其在现代IT运维中的应用。通过对比传统运维模式,阐述了AIOps如何利用机器学习、大数据分析等技术,实现故障预测、根因分析、自动化修复等功能,从而提升系统稳定性和运维效率。文章还深入分析了实施AIOps面临的挑战与解决方案,并展望了其未来发展趋势。 ####
|
2月前
|
机器学习/深度学习 数据采集 运维
智能化运维:机器学习在故障预测和自动化响应中的应用
智能化运维:机器学习在故障预测和自动化响应中的应用
73 4
|
3月前
|
存储 运维 监控
高效运维:从基础架构到自动化管理的全面指南
【10月更文挑战第11天】 本文将深入探讨如何通过优化基础架构和引入自动化管理来提升企业IT运维效率。我们将从服务器的选择与配置、存储解决方案的评估,到网络的设计与监控,逐一解析每个环节的关键技术点。同时,重点讨论自动化工具在现代运维中的应用,包括配置管理、持续集成与部署(CI/CD)、自动化测试及故障排除等方面。通过实际案例分析,展示这些技术如何协同工作,实现高效的运维管理。无论是IT初学者还是经验丰富的专业人员,都能从中获得有价值的见解和实操经验。
125 1
|
3月前
|
运维 监控 测试技术
构建高效运维体系:从监控到自动化的实践之路
【10月更文挑战第9天】 在当今信息技术飞速发展的时代,运维作为保障系统稳定性与效率的关键角色,正面临前所未有的挑战。本文将探讨如何通过构建一个高效的运维体系来应对这些挑战,包括监控系统的搭建、自动化工具的应用以及故障应急处理机制的制定。我们将结合具体案例,分析这些措施如何帮助提升系统的可靠性和运维团队的工作效率。
73 1
|
3月前
|
存储 运维 监控
高效运维管理:从基础架构优化到自动化实践
在当今数字化时代,高效运维管理已成为企业IT部门的重要任务。本文将探讨如何通过基础架构优化和自动化实践来提升运维效率,确保系统的稳定性和可靠性。我们将从服务器选型、存储优化、网络配置等方面入手,逐步引导读者了解运维管理的核心内容。同时,我们还将介绍自动化工具的使用,帮助运维人员提高工作效率,降低人为错误的发生。通过本文的学习,您将掌握高效运维管理的关键技巧,为企业的发展提供有力支持。