作者 中国农业银行总行数据中心高级技术专员 宋煊

      中国农业银行总行软件研发部上海软件研发中心高级技术专员 余琪

作为操作系统层面轻量级的虚拟化技术,Docker容器技术凭借简易使用、快速部署以及灵活便捷的集成支持优势,奠定了如今在PaaS领域的江湖地位。当前,Docker已绝不仅仅是一项轻量级虚拟化技术,官方Docker运维三套件-Kubernetes、Openshift v3、Flynn、Deis等项目已经基于Docker容器技术构建出各式各样的容器云服务平台,关于Docker容器技术的讨论也已经从“容器”转变为“容器云”。Docker对于IT行业的价值也从节省资源扩展到对容器技术生态系统的建设。

一、云计算时代面临的问题

回首历史,云计算时代孕育出了众多的云计算平台,虽然在服务类型或平台功能上有所差异,但是本身如出一辙,即云计算是一种资源服务模式,该模式可以实现随时随地,便捷按需地从可配置计算资源共享池中获取所需资源(如网络、服务器、存储、应用及服务),资源能够快速供应释放,大大减少了资源管理工作成本。

经典云计算架构包括IaaS(Infrastructure as a Service,基础设施即服务)、PaaS(Plateform as a Service,平台即服务)、SaaS(Software as a Service,软件即服务)三层服务。

同时,随着计算机技术推陈出新,应用规模愈发庞大,逻辑愈发复杂,迭代愈发频繁,应用开发所需的统一规范和原有开发模式的杂乱无章成了追求进步的主要障碍。在尖锐的矛盾中,云时代应用生命周期管理机制和十二要素应用规范应运而生。IaaS的发展主要以虚拟机为最小粒度的资源调度单位,出现了资源利用率低、调度分发缓慢、软件栈环境不统一一系列问题。PaaS在IaaS基础上发展而来,众多PaaS已经意识到可以利用容器技术解决资源利用率问题,但是PaaS通常在应用架构选择、支持的软件环境服务方面有较大的限制,从而导致应用与平台无法解耦、应用运行时环境局限性强、运维人员控制力下降等问题。

二、容器的诞生

不论是PaaS还是IaaS,都有各自的使用场景,但存在众多缺陷,人们急需寻找一个真正可用的解决方案。容器,便是一场针对虚拟化技术的革新。Docker是基于容器技术的一种实现,而容器技术是一种轻量级的虚拟化技术。容器有效地将由单个操作系统管理的资源划分到孤立的组中,以便更好地在孤立的组之间平衡有冲突的资源使用需求。

容器特性一:轻量级。容器的思想就是把单独的进程进行封装。这样做就使得容器内的进程所运行的环境与其他任何操作系统相独立。

容器特性二:独立性。容器技术通过独立的命名空间,保证了其运行的独立性。命名空间是Linux的内核针对实现容器虚拟化而引入的一个强大特性,实现了对内存、CPU、网络IO、存储空间、文件系统等的相互隔离,所以通过容器运行应用软件,能够使得应用程序与操作系统实现极低的耦合,其使用内核是通过封装的接口,实现了与操作系统的解耦合。

容器特性三:虚拟化。通过容器技术来构建应用虚拟化,容器启动都在本地,是同构本地应用虚拟化。目前的云桌面系统都希望能够实现远程访问,这也是SaaS的发展目标。从对现有虚拟化应用技术的分析可以看出,要实现异构远程应用虚拟化,需要服务端的应用程序以流的方式推送到异构的客户端。所以,在投资交易客户端的架构设计中采用在Docker中增加VNC的方式来实现应用程序与客户端的流数据传输。

除此之外,Docker在开发部署运维方面也有着得天独厚的优势,Docker本身的开发、发布和运行应用程序的开放平台属性使得它能够将应用程序与基础设施分离,以便能够快速交付软件。使用Docker,可以像管理应用程序一样管理基础设施。通过利用Docker的方法快速地交付、测试和部署代码,可以显著地减少编写代码和在生产环境中运行代码之间的延迟。Docker是全球领先的软件容器化平台,它将微服务封装进Docker容器,然后进行独立的维护和部署。每个容器负责一个特定的业务功能。

三、农业银行容器化技术创新

农业银行在容器技术领域有不少实践探索,以银行核心业务系统——投资交易客户端系统为例,农业银行投资交易客户端系统是为客户提供投资交易客户端以及保证金类交易的产品交易平台,支持银行外汇、贵金属、商品、代理金交所、柜台债券等交易类产品,提供产品签约、行情展示、交易下单、市场资讯功能。投资交易客户端系统黄金交易如图1所示。

图1 投资交易客户端系统黄金交易

农业银行投资交易客户端系统采用Docker1.12.6作为平台基础架构搭建,选择Harbour开源项目,该项目使用Nginx作为代理服务器,并且支持LDAP集,可实现在项目和用户级别上实施细粒度的访问控制措施,由此打造农业银行私有镜像库。Docker部署架构如图2所示。

图2 Docker部署架构

通过Docker-compose工具对服务进行启动、停止、删除、扩容等操作,由于生产环境中不同系统的Docker容器都是跨宿主机部署,需要将这些宿主机形成集群统一管理,投资交易客户端采用Docker Swarm即Docker原生提供的一种集群管理模式作为整个容器集群的管理。系统采用etcd分布式键值存储,以提供可靠的微服务架构下的服务注册与发现,使用农业银行云控制平台实现对容器状态监控、容器启停、容器文件配置、容器运行日志查询、配置更新、应用管理等功能。

四、容器技术带来的优势

农业银行部署基于Docker构建的应用虚拟化软件在后,取得了良好的效果,呈现诸多优势:

  • 持续部署与测试,容器消除了线上与线下的环境差异;

  • 跨平台支持,由于容器技术的适配性,越来越多的平台支持容器;

  • 环境标准化和版本控制;

  • 高资源利用率和隔离;

  • 容器平台与镜像;

  • 易于理解且易用;

  • 应用镜像仓库提供巨大便利。

容器技术为农业银行对私有云平台的管理提供了卓越的解决方案。容器在不断演变,并且被广泛实践,从管理单一容器应用到管理多容器、多主机的分布式应用,未来更多的使用场景和用法将会不断出现,例如“ContainerasaService”和大数据分析应用。最终,容器技术最重大的改变之一就是多平台支持,从Linux、Solaris到Windows平台。

以Docker为代表的容器技术日益带动一个生态系统的发展,其技术的快速普及促进了围绕容器技术的相关项目日臻丰富和完善,容器本身的功能和易用性也随之增加。从容器到多容器场景下的容器编排技术,农业银行仍将在虚拟化云平台技术上不断探索,前方有更多的技术难点,也有更大的挑战等待着每一个不断创新、崇尚技术革新的农行人去突破。

《中国金融电脑》2019年第 11 期

声明:本文来自中国金融电脑,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。