传统金融企业的 Docker 实践

来源:互联网 发布:mac放大显示 快捷键 编辑:程序博客网 时间:2024/05/17 00:12

基于 Docker 的容器云—Padis

目前市面上基于容器云的产品有很多,对于平安而言,则是基于 Docker 的 Padis 平台。所谓 Padis,全称是 PingAn Distribution ——平安分布式平台。Padis 基于 Docker,实现了平安内部的一个分布式平台。它的实现采用了 Mesos+Marathon(下面简称MM) 框架,可以完成应用程序的快速创建、运行、快速缩容扩容以及故障自愈的功能;平台上实现了独立 IP,可以实现任何集群与外部的或者传统的 IP 的通讯;平台负载均衡的方式很多,可以根据容器的动态变化(容器的增删)做动态调整;平台内还有独立的域名解析,可以做到 CMDB 和性能监控的动态更新。

Padis 的「成长」主要历经以下几个阶段: 

  1. 开发环境 Docker 单机版
  2. 测试环境 Padis 上线
  3. 生产环境 Padis 上线
  4. Padis 承接平安金管家(原平安人寿App) 系统群

下面是对每个阶段的详细叙述。

开发环境 Docker 单机版

平安传统的交付过程耗时很长。从需求发起,到资源申请,到中间件交互,这些过程往返很多,会耗费大量的人力和时间。而交付流程长,人力支配不足等原因,会导致交付质量的下降。为了解决交付所面临的这一系列难题,Docker 就成为了一种最初的尝试方式。Docker 包含三方面内容(图 1):仓库、镜像、容器。仓库这方面需要改进的不多,重点放在镜像上面。 2014 年单机版的 Docker 上线,第一版的 Padis 将 Docker 镜像集成到 OS。

第一版的 Padis 基于 Docker 和 Docker UI 。 当时的 Docker UI 改了很多的东西(图 2),原本的 Docker UI 不带仓库管理,也没有镜像下载和镜像提升的功能, 而更改后的 Docker UI,不仅添加了 Commit 镜像功能,还增加了仓库管理功能,同时也支持定向搜索下拉或上传。

图 2

第一版的 Padis 出来时,着手的重点就是定制化的镜像。平安的业务系统非常多,中间件用的东西又比较标准化,所以定制化的主要方向就是标准的中间件怎么去配,才能放到镜像里形成一个标准的东西,这个问题解决了,那么当开发环境的镜像可用时,该镜像放入生产后依旧可用。此时,将应用包或中间件打包起来后就可以快速启动服务;如果要对这个环境进行复制,将原来环境进行拷贝就可以。这样一来,交付就可以做到分钟级别或者是秒级别。

但是,怎么将中间件打到标准镜像中,这又是一个问题。一个容器是有限制的,如果什么东西都打进去,日志会越写越多,容器容量就会爆,容器默认大小只有 10G。金融行业的日志,它必须要落地、必须要存储,有一些需要排查的问题如果没有日志就会很不方便,因此日志一定要保留。而把应用都打到里面去,开始时不会出现太大的问题,但是随着第一个版本的发行,就出现一个让人很不爽的问题:要对镜像作调整,可是无需对应用的独立镜像进行更新。所以必须要将应用包和日志全部挪走,只留下 OS 和 中间件固定配置和介质,才可行。

因为需要根据一些用户需求做调整,所以这个版本的 Padis 出来后在平安内部做了推广并进行反馈收集。对所收集的信息进行整合,发现单机版的 Docker 存在很多缺陷:一是没有集群,不能解决跨 Host 之间的通讯功能;二是没有健康检查机制,容器应用故障无法自愈;三是没有监控和统计信息,资源使用不可控;四是熟悉 Docker 命令的人不多,要去推广使用很困难。公司中各种不同部门的人很多,每个部门的关注重点不一样,当一个部门里的人根本不了解这是什么的时候,是没有办法使用 Docker 的,因此必须做到界面化。所以后续又做了相应的调整,对于用户一定要镜像透明,并把 Docker 做成集群模式。

对于集群模式的选择则做了两个选项,下面先简单介绍一下这两种框架选项。

0 0