写点什么

从太平洋保险 DCOS 实践看传统企业的魅力变革

  • 2016-03-21
  • 本文字数:3415 字

    阅读完需:约 11 分钟

云计算驱动企业 IT 架构演进

随着云计算的快速普及,传统企业越来越关注基于云计算的下一代 IT 架构变革了。回顾企业 IT 架构演进历史,主要经历了“传统孤岛”、“x86+ 虚拟化”和“云化”这三个阶段。

最初的“传统孤岛”,软硬件堆栈各层间缺少统一的工业标准化,呈现出内聚与耦合的特征。随后的 x86 标准化带来计算、存储、网络、操作系统、中间件、应用层等多层次水平分工架构,为了提升 IT 灵活性和资源利用率,虚拟化开始在数据中心部署,IaaS 实现了虚拟机级弹性伸缩,但 IT 基础设施扩张很快,系统层层堆叠,各层间集成交付的难度越来越大,同时,仅虚拟化也难以满足不断增加的业务对资源的变化需求。

于是企业开始期望将服务作为 IT 核心,提升业务敏捷性,同时大幅降低 TCO,这时 PaaS 和应用资源池化实现了集群级弹性伸缩,很大程度上缓解了 IT 资源与业务发展之间的矛盾,让企业更专注于上层业务逻辑的运营。如果说 IaaS 属于云化的“初级”阶段,PaaS 和应用资源池化就是云化的“进阶”阶段。而今天故事的主角 DCOS 实现了数据中心级弹性伸缩,使它称得上“深度”云化的发动机了。

回顾:DCOS 是什么?

数据中心操作系统(Data Center Operating System,简称 DCOS)是为整个数据中心提供分布式调度与协调功能,实现数据中心级弹性伸缩能力的软件堆栈,它将所有数据中心的资源当做一台大型计算机来调度,可以视作这个大型主机的操作系统。下表给出了 Linux OS 与 DCOS(以基于 Mesos 为例)的类比:

Linux OS

DCOS

资源管理

Linux Kernel

Mesos

进程管理

Linux Kernel

Docker

任务调度

Init_d、cron

Marathon、Chronos

内部进程通信

Pipe、Socket

ActiveMQ、RabbitMQ

文件系统

ext4

HDFS、Ceph

太平洋保险 DCOS 平台关键技术选型

在今年春节期间,太平洋保险联合上海天玑数据,采用 DCOS 平台改造微信应用系统来支撑推出的“除夕夜摇红包”、“初五迎财神”等系列活动。活动期间 DCOS 轻松支撑高达每秒 10 万笔交易的业务高峰,仅除夕当夜微信增粉量就超过 1300 万。

这次太平洋保险进行综合评估技术选型后,最终选择了基于 Mesos + Docker 搭建 DCOS 平台。功能框架如下:以 Docker 为基础封装各类应用和运行环境,以 Mesos、Marathon 为核心实现容器资源的分布式调度与协调,以 HAProxy、Etcd 为辅助实现服务注册引流。

1. 应用封装:Docker

Docker 为开源的应用容器引擎,在标准的 LXC 之上融合 AUFS 分层镜像管理机制,抛弃传统虚拟机试图模拟完整机器的思路,而是以应用为单元进行“集装封箱”,是轻量级的虚拟化技术。

  • Docker Engine 可以自动化部署应用到可移植的的容器中,这些容器独立于硬件、语言、框架、打包系统。一个标准的 Docker 容器包含一个软件组件及其所有的依赖,包括二进制文件,库,配置文件,脚本等,实现持续集成与部署,快速迭代应用程序。
  • Docker 容器可以封装任何有效负载,几乎可以在任何服务器之间进行一致性运行。开发者构建的应用只需一次构建即可多平台运行。运营人员只需配置他们的服务,即可运行所有应用。

2. 资源调度: Mesos

Mesos 是为构建和运行其他分布式系统提供服务的分布式系统。它将 CPU、内存、存储介质以及其它计算机资源从物理机或者虚拟机中抽象出来,构建支持容错和弹性的分布式系统,并提供高效的运行能力。

Mesos 以 Framework(框架)的形式,提供了“两级调度机制”,将任务的调度和执行分离。

  • Mesos Master 负责将资源分配给各个框架,而各个框架的 Scheduler 进一步将资源分配给其内部的各个应用程序。
  • Mesos 能和不同类型的 Framework 或 Application 通信,每种 Framework 或 Application 由相应的应用集群管理。
  • Mesos Slave 的 Executor 具备调用 Docker 能力,当 Executor 接收到 Task 时启动 Docker,其可以调用 Docker 去启动一个容器。

3. 任务调度: Marathon

Marathon 是基于 Mesos 来做任务调度,Mesos 仅负责分布式集群资源分配,不负责任务调度。

  • Mesos 集群可以混合运行来自 Marathon 的不同类型的任务。
  • Marathon 基于 Mesos 的任务调度为动态调度,即每个任务在执行之前是不知道将在哪一台服务器上执行和绑定哪一个端口。
  • 下图为 Marathon 执行任务调度示意图。9 台服务器(灰色)组成的 Mesos 集群上混合运行各种 Marathon 调度的任务,其中一台服务器坏掉以后,这台服务器上的任务就受影响,Marathon 可把任务迁移到其他服务器上,实现容错。

4. 服务注册与引流: HAProxy + Etcd

HAProxy 提供高可用、负载均衡的解决方案,而 Etcd 是一个高可用的键值存储系统,主要用于共享配置和服务发现,提供了数据 TTL 失效、数据改变监视、多值、目录监听、分布式锁原子操作等功能,可以方便的跟踪并管理集群节点的状态。 Etcd 与 HAProxy 配合能够实现数据中心应用的动态引流。

太平洋保险 DCOS“春节红包活动”实践

为应对这次春节红包活动业务系统的瞬时高峰压力,太平洋保险 DCOS 平台采用 223 个主机节点,其中平台部分由 5 个节点构成 Mesos Master Cluster,80 个节点构成 HAProxy Cluster,138 个计算节点承载 674 个 Docker Container,其中动态计算节点 113 个,静态计算节点 25 个。该平台可在 1 分钟内轻松实现扩展到 1000 个以上 Docker 节点。

DCOS 的实战威力

1. 巧妙分离动静态资源池,大幅提升应用访问速度

考虑到互联网应用中会使用大量图片和动画等静态资源,为提高服务访问速度,该 DCOS 架构通过动静分离,将静态资源服务器和动态资源服务器池化并分开管理(分别放置在 DMZ-WEB 区和 DMZ-APP 区,前者放置静态资源池,后者放置动态资源池,见上图)。于是,静态资源请求可直接通过静态资源池完成,不必再访问后端动态资源池,减少动态资源池的压力。而且采用专门的静态资源服务器,具备 Cache 能力,可大幅提升静态资源的访问速度。

2. 简化网络复杂度,提高网络访问速度

太保原架构 DMZ-WEB 区的请求在穿过防火墙后需再经过 DMZ-APP 区的一个 F5 设备和 HAProxy 才能到达动态资源服务器,这样就多增了两层网络服务器的访问,降低访问速度,当然故障点也增多了。而改造后的架构,将动态资源池的路由信息同步到 DMZ-WEB 区的 HAProxy 中,HAProxy 根据路由信息将动态请求直接转发到动态资源池上,从而极大简化网络路径的复杂度,网络访问速度明显提升。

3. 超强弹性伸缩、快速持续集成

此次除夕微信红包与初五抽奖活动间隔时间紧,若采用繁琐耗时的传统部署方法——得经过主机、操作系统、中间件、数据库和应用的集成部署,还得经过一定调试后才能对外提供服务。而改造后的 DCOS 通过与容器技术的深度结合,实现超强弹性伸缩,快速响应、持续交付,仅在 10 分钟内就完成共享资源的全部调整,有力保障业务的连续。

4. 更细粒度资源调度,实现高资源利用率

DCOS 相较于虚拟机管理,有着基于 CPU、内存的更细粒度的资源调度,多个计算框架或应用程序可共享资源和数据,大幅提升资源利用率,根据统计 DCOS 资源消耗可以节省 50%。

5. 高效的跨数据中心的资源调度

DCOS 平台展现了其在线性动态扩展、异地资源调度等方面的优异性能,1 分钟内快速扩展到 1000+ 的容器(如果应用更轻量启动速度还可以更快),平台和计算节点完全跨机房分布式调度。

6. 分布式架构保障高可用

DCOS 平台所有组件采用分布式架构,应用跨机房分布式调度。自动为宕机服务器上运行的节点重新分配资源并调度,保障业务不间断,做到故障自愈。

结束语

总之,传统企业在“互联网 +”的背景下,IT 基础架构的发展要确保新技术的研究和应用与企业未来业务发展需要相一致。而今,云计算相关技术正在逐渐演化成熟,尤其 PaaS 领域的技术发展更是日新月异。以 DCOS 为代表的下一代轻量级 PaaS 正越来越为业内所关注。DCOS 凭借其数据中心级弹性伸缩能力、快速持续集成等轻量优势,帮助企业快速应对业务需求,为传统 IT 的敏捷转型提供了新机遇。

作者介绍

胡罡,现担任中国太平洋保险集团股份有限公司信息技术中心应用运行支持部副总经理。长期从事保险行业信息化建设,曾多次主持大型保险信息系统建设和推广工作,参与和实施保险核心系统数据大集中和重构工作,参与大型数据中心建设和系统搬迁,参与智能移动保险平台建设。目前主要从事云计算和大数据相关技术研究和应用,面对移动互联浪潮的挑战和机遇,积极探索和实践传统行业 IT 运维模式的转型升级。


感谢郭蕾对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2016-03-21 17:472438

评论

发布
暂无评论
发现更多内容

Android - 弹幕实现原理(附Demo源码)

android 程序员 移动开发

Android 6

android 程序员 移动开发

Android ANR:Application Not Responding详解

android 程序员 移动开发

Android ExpandableListView折叠菜单的三层嵌套实现

android 程序员 移动开发

Android Framework学习笔记(六)应用程序进程启动过程

android 程序员 移动开发

linux几个不常用但是很有用的命令

入门小站

Linux

【LeetCode】丢失的数字Java题解

Albert

算法 LeetCode 11月日更

Activity详解与实现

android 程序员 移动开发

关于调度器的一些思考

Rayjun

调度器 Go 语言

5月份,京东 Android开发面经分享!

android 程序员 移动开发

Andorid Studio 制作欢乐写数字(Timer启动+帧动画)

android 程序员 移动开发

Android 11 中的存储机制更新

android 程序员 移动开发

Android AsyncTask源码解析

android 程序员 移动开发

Android Gradle进阶配置指南

android 程序员 移动开发

A015-布局之LinearLayout

android 程序员 移动开发

android Activity的Task Affinity lanchMode

android 程序员 移动开发

Android HTTP通信基础

android 程序员 移动开发

Android JNI QQ 搞怪语音实战 (含完整 Demo)

android 程序员 移动开发

45天拿下字节跳动Android研发岗offer,竟然有个面试真题库,内幕首次公开!

android 程序员 移动开发

Android ImageView及其子类 介绍+实例

android 程序员 移动开发

Android Launcher——ui框架

android 程序员 移动开发

Android Framework学习笔记(五)应用程序启动过程

android 程序员 移动开发

AndroiAndroid程序员最大的悲哀是什么?d程序员最大的悲哀是什么?

android 程序员 移动开发

Android 12 启动画面-SplashScreen

android 程序员 移动开发

Java自定义注解

程序员架构进阶

Java 注解分析 11月日更

Android Jetpack架构开发组件化应用实战

android 程序员 移动开发

8年老Android开发谈:Context都没弄明白凭什么拿高薪?

android 程序员 移动开发

【译】Node.js Buffers 完整指南

废材壶

node.js 大前端

Android JNI 入门(含完整Demo)

android 程序员 移动开发

Android 118道基础面试题,面试途中不卡题

android 程序员 移动开发

在线文本中插入符号工具

入门小站

工具

从太平洋保险DCOS实践看传统企业的魅力变革_最佳实践_黄超_InfoQ精选文章