返回 登录
0

视觉中国——通过容器云解决跨洋数据运维难题

视觉中国集团集团数据间调用复杂且低效,运维维护成本高,在采用了基于容器云的同城双活微服务架构后,系统克服单体应用不足的同时,每一个微服务都是集群部署,在高可用、运维SLA提升方面效果显著,也使得持续部署成为可能。

业务背景

视觉中国集团(Visual China Group)是中国领先的视觉影像产品和服务提供商。集团应用分布在北京市各区的5个机房,数据间调用复杂且低效,运维维护成本高,每年的IT预算给企业带来很大的负担。

此前,视觉中国采用的是云主机走公网落地数据机房的形式,面对跨洋数据的传输问题,由于公网的不稳定及数据校验的问题导致数据到达率低,重传率又很高。海量数据存储的高可用也是比较棘手的,运维团队不止一次的遇到多块数据盘同时挂掉的情况。同时,跨机房监控数据汇总统计带来的延迟;分布在多地机房的协同发布;以及多地传统机房的安全防护;在业务异常时,跨域的数据联调,问题定位及修复,这些问题对运维及研发人员提出极高的要求,而问题又亟需解决。

技术方案

解决方案调研/技术选型

Docker是近年来发展最迅速的开源项目之一,短短两年多的时间,建立在Docker容器软件内的应用被下载超过5.35亿次。全球有超过400万人在使用Docker,约有150,000个在线应用靠Docker容器运行。视觉中国希望结合Docker容器和虚拟化技术,利用虚拟机提供弹性基础架构,解决安全隔离,动态热迁移。利用容器技术实现简化应用部署、运维,实现弹性应用架构。为了摆脱旧有的运维困境,结合Docker技术的特点和优势,视觉中国决定IT系统云化,通过容器云的方式解决运维难题。容器服务提供高性能可伸缩的容器应用管理服务,支持用Docker容器进行应用生命周期管理,提供多种应用发布方式和持续交付能力并支持微服务架构。容器服务简化了容器管理集群的搭建工作,整合了虚拟化、存储、网络和安全能力,从而打造Docker云端运行环境。视觉中国在考察了腾讯云、华为云,百度云等厂商后,重点调研了容器的灵活扩展、地域和网络等重要参数,最后选择了阿里云平台。在选型过程中,视觉中国总结了几个关键技术点:

  1. 该云计算平台的海外节点恰好是业务集中区,尤其是用于海量存储的对象存储oss及ecs,这使得视觉中国的全球分布数据能够快速的传递过来,保证数据的高效反馈。
  2. docker hub的容器云服务,与视觉中国全面docker化的技术构想相符合,依托于云计算的容器平台,视觉中国能够快速搭建,扩容集群,创建应用,运维同学也十分关注编排工具的使用。
  3. 视觉中国是中国领先的视觉影像产品和服务提供商,对图片处理、过滤方面有很高的需求。。在鉴黄、暴恐等敏感信息过滤,以及未来计划推出的智能识图,按场景分析等应用,云计算平台都能给予很好的大数据支撑。

视觉中国采用了同城双活微服务架构,它保证服务的高可用的同时,也在CI、CD方面对视觉中国有所帮助。使用到的产品有ECS、RDS、OSS、REDIS、消息通知服务、DATAV、QUICKBI、切图服务、RAM、容器云、云盾,SLB等十几种。

技术实现过程/开发过程

首先进行线下实体机房的微服务的搭建及测试,确保服务可用后进行云化的考量。整个应用迁移过程分为几个步骤:

  • 资源申请,包括ecs,rds及oss等
  • 容器云测试,简单搭建几个docker测试可用性
  • 部署微服务,基于consul+template+registrator进行部署
  • 代码部署,把jar包等通过jkenins进行部署
  • 功能测试
  • 性能测试
  • 灰度发布,A/B test
  • 部分应用迁移
  • 观察期
  • 整体业务上线
  • 观察期
  • 迁移完毕

整体交付完成之后,视觉中国的CI、CD基本上做了实践,研发发布代码无需经过运维干涉,自动发布,自动部署一键完成。

架构解析/优化

图片描述

架构要点解读:

  1. 容器集群是Region级别的服务,集群内可以包含多个可用区的ECS。
  2. 容器服务支持将同一个服务的容器调度在不同的可用区(zone)里,这是通过编排模板中的availability:az=xx标签来实现。为了使应用有更高的可用性,容器服务支持将同一个服务的容器调度在不同的可用区(zone)里。当某个可用区发生故障时,应用依然能够提供服务。
  3. SLB本身具有跨机房高可用特性,使用主、备在不同可用区的SLB类型即可。

详细解读:

整体架构是基于容器云的同城双活架构,有devops功能区,开发环境区,测试环境区及生产环境区(蓝绿发布)四个区。其中devops功能区用于实现gitlab代码版本管理,jenkins打包及通过docker file制作docker镜像,上传至阿里云docker hub供开发、测试、生产环境使用。Jenkins执行命令示例代码如下:

图片描述

开发人员在开发环境进行代码功能的开发,同时提交代码到dev分支。测试人员在测试环境合并gitlab代码至test分支进行性能及功能的测试,然后合并master分支在生产环境采取蓝绿发布方法进行发布。

交付采取镜像的交付方式,最后将镜像推送至生产环境,生产环境采取双consul多数据中心模式,可用区A连接位于A区的consul master,同时将注册信息同步至位于可用区B的consul master,这样保证多区的微服务集群高可用。

两个区共用基础资源,RDS通过DTS同步至测试环境,测试环境和dev环境共用一套RDS。架构在满足持续交付,持续部署的同时也满足了高可用的需求。每个微服务都是集群,这样基于容器层、ECS层、consul层、微服务层,任何节点出现问题对用户都是不可见的,实现了高可用。

企业收益

运维SLA提升

通过部署容器云架构,视觉中国的运维服务水平协议SLA达到了99.99%,较以往有大幅的提升。以往可能要花数小时集群扩容,现在已经缩短至秒级别。持续部署方面,一次部署和回滚的时间控制在1分钟内。

安全防护

在安全防护方面,系统可以有效抵挡DDos攻击5次,其中最大的一次数据流量达到了40G,安全防护做到了多层次的保障,极大提高了视觉中国的服务安全性。

运维成本

从目前统计的预算及机房花费来看,部署新系统好可节省20%成本(不包括下线的老应用),通过随时关注费用中心自行进行分析,运维成本已做到有效的控制,可以随时做到服务的升降级。

高可用性

容器云帮助视觉中国实现了故障主机的实时迁移,保障了业务的可用性,简化了运维难题,支持自定义云也满足了监控的需求。

经验总结

杨光宇列举了运维过程中一些重要功能的实现方式,这些将成为此次上云实践过程的重要经验总结。

  • 在运维过程中,视觉中国把对象存储oss同步大文件有数据重传问题及日常传输方案,稳定性建议采取高速通道,日常传输采用multipart分块实现,ossfs实现oss子账户授权只能看到自己目录的内容。
  • 通过UDF可实现云端支持批量上传数据的压缩,及打包、下载、解压缩等功能。
  • 通过跨境消息通知机制,可实现跨境oss数据接收后无法确认删除的文件。
  • 智能识图可完成根据不同图片主题进行切图、参数匹配的功能;
  • 通过datav和quickbi实现数据大屏的展示;
  • 高防ip及waf防火墙可以实现针对DDos的攻击防护;使用 sls克实现容器云日志采集和查看。

用户声音

“新架构上线后,产品方面的变更能够快速迭代到生产,让用户能及时看到我们的更新正是我希望看到的”。——视觉中国高级产品经理,一夫

“基于容器云架构的实施,使我们的视角从具体的结构设计转换到内部关系调用,逻辑设计等,这恰恰更能体现架构师的价值”。——视觉中国架构师,小康

“容器云的监控、报警、数据采集及统计分析,弹性扩容等方面的特性,极大的提升了运维效率,使我们更有精力关注产品”。——视觉中国高级运维工程师,老耿

案例人物

图片描述

杨光宇

视觉中国高级运维经理
微信:elitist1234
Email:ygy0315@126.com
作者简介:
毕业于北邮,先后供职于方正集团,用友畅捷通,阿里巴巴等。专注运维技术11年,在运维自动化,运维管理,架构设计及云解决方案有丰富经验

公司简介

视觉中国集团(Visual China Group)创立于2000年6月,是中国领先的视觉影像产品和服务提供商。视觉中国集团是以“视觉创造价值,视觉服务中国”为愿景的A股唯一互联网文化创意上市公司(股票代号000681,股票简称:视觉中国)。视觉中国集团以“视觉内容与服务”、“视觉社区”和“视觉数字娱乐”三大业务板块为核心,拥有中国最大的视觉内容互联网版权交易平台,同时为国内的主题公园、城市综合体提供领先的数字娱乐整体解决方案。旗下包括华盖创意(Getty Images China)、汉华易美(China Foto Press)、东星娱乐(TungStar)、视觉ME社区(shijueme)、艾特凡斯(Advance)等业界著名品牌。集团拥有近万名签约摄影师和艺术家,并同海内外数百家图片社、影视机构、版权机构广泛合作,为媒体、企业主、广告公司等各类客户提供专业的图片、影视、音乐、特约拍摄、创意众包、视觉化营销等一站式服务。

评论