用户工具

站点工具


service:techmag:201906_035:02

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
service:techmag:201906_035:02 [2019/08/14 10:21]
-
service:techmag:201906_035:02 [2019/08/21 05:05] (当前版本)
-
行 1: 行 1:
 ====== 云应用管理平台技术研究 ====== ====== 云应用管理平台技术研究 ======
-本文选自[[service:​techmag:​201906_035:​start|《交易技术前沿》总第三十五期文章(2019年8月)]]+本文选自[[service:​techmag:​201906_035:​16|《交易技术前沿》总第三十五期文章(2019年8月)]]
 {{tag>​云应用}} {{tag>​云应用}}
 <WRAP centeralign>​ <WRAP centeralign>​
行 8: 行 8:
 ===== 1 引言 ===== ===== 1 引言 =====
   我司在2015年建设了以微服务架构为核心理念的云计算平台SCAP,随着业务与技术的发展,SCAP所承载的应用和服务的数量将逐渐增长。而研发和运维过程中存在的不足逐渐制约了SCAP平台发展壮大。   我司在2015年建设了以微服务架构为核心理念的云计算平台SCAP,随着业务与技术的发展,SCAP所承载的应用和服务的数量将逐渐增长。而研发和运维过程中存在的不足逐渐制约了SCAP平台发展壮大。
-首先,在开发过程中,开发人员的本机环境缺少能直接模拟生产的可调试环境。其次,在测试过程中,多个项目同时开发与测试,造成测试环境不稳定;全网测试时,需要准备可测试环境,准备与恢复阶段的工作量大。再次,在上线过程中,目前自动化上线不足,仍存在手工上线操作;上线后仍需人工来确保上线的准确性,验证部署是否成功;上线时间仍以分钟计,项目数量增多而造成上线时间长,上线人员投入大量时间用于部署应用。最后,应用之间的隔离性不强,假设某一应用对资源占用过多,易使得应用服务器可用性下降,将造成整个应用服务器中全部应用无法正常运行。\\+  首先,在开发过程中,开发人员的本机环境缺少能直接模拟生产的可调试环境。其次,在测试过程中,多个项目同时开发与测试,造成测试环境不稳定;全网测试时,需要准备可测试环境,准备与恢复阶段的工作量大。再次,在上线过程中,目前自动化上线不足,仍存在手工上线操作;上线后仍需人工来确保上线的准确性,验证部署是否成功;上线时间仍以分钟计,项目数量增多而造成上线时间长,上线人员投入大量时间用于部署应用。最后,应用之间的隔离性不强,假设某一应用对资源占用过多,易使得应用服务器可用性下降,将造成整个应用服务器中全部应用无法正常运行。\\
   现有的应用管理方式较为粗放,既没有统一的应用管理系统或配置管理系统,也缺乏应用持续部署能力。因此,有必要建立统一的云平台应用管理体系,形成应用持续部署能力,实现开发、测试和发布一体化,进一步提升开发效率、上线效率,提升研发能力。\\   现有的应用管理方式较为粗放,既没有统一的应用管理系统或配置管理系统,也缺乏应用持续部署能力。因此,有必要建立统一的云平台应用管理体系,形成应用持续部署能力,实现开发、测试和发布一体化,进一步提升开发效率、上线效率,提升研发能力。\\
 ===== 2 容器技术及其应用现状 ===== ===== 2 容器技术及其应用现状 =====
行 28: 行 28:
 === 2.1.3 容器管理 === === 2.1.3 容器管理 ===
   对容器实施有效管理是大规模应用Docker的另一个重要技术难点,包括如何批量创建、调度和管理容器。   对容器实施有效管理是大规模应用Docker的另一个重要技术难点,包括如何批量创建、调度和管理容器。
-Docker Compose机制是对容器对象进行配置和集群管理,编排容器对象如何在运行环境中快速部署,以及如何验证部署成功。Docker Swarm是支持Docker集群管理的工具,它将若干台Docker主机抽象成一个整体,可通过统一入口管理Docker主机上的资源。Swarm接收Docker客户端的请求,调度适合的节点运行容器。\\+  Docker Compose机制是对容器对象进行配置和集群管理,编排容器对象如何在运行环境中快速部署,以及如何验证部署成功。Docker Swarm是支持Docker集群管理的工具,它将若干台Docker主机抽象成一个整体,可通过统一入口管理Docker主机上的资源。Swarm接收Docker客户端的请求,调度适合的节点运行容器。\\
   除了上述Docker原生的管理工具外,容器管理工具或平台还有谷歌公司的Kubernetes分布式系统支撑平台、Apache的Mesos开源分布式资源管理框架以及能支持上述全部管理工具的Rancher。\\   除了上述Docker原生的管理工具外,容器管理工具或平台还有谷歌公司的Kubernetes分布式系统支撑平台、Apache的Mesos开源分布式资源管理框架以及能支持上述全部管理工具的Rancher。\\
 ===== 2.2 应用现状 ===== ===== 2.2 应用现状 =====
行 35: 行 35:
 ===== 3 云应用管理平台研究 ===== ===== 3 云应用管理平台研究 =====
 ==== 3.1 我司的痛点 ==== ==== 3.1 我司的痛点 ====
-  自从SCAP云平台建成后,我司开放平台迎来了蓬勃发展。SCAP云平台作为分布式的微服务架构,属于PaaS层。它的研发推动了开放平台的发展,但在开发、测试、运维等多个环节存在诸多问题,逐渐成为制约研发运维能力与效率的瓶颈。 +  自从SCAP云平台建成后,我司开放平台迎来了蓬勃发展。SCAP云平台作为分布式的微服务架构,属于PaaS层。它的研发推动了开放平台的发展,但在开发、测试、运维等多个环节存在诸多问题,逐渐成为制约研发运维能力与效率的瓶颈。\\ 
-一是在开发过程中,开发人员缺乏能直接模拟生产的、独立的测试环境。在测试中经常与多个项目同时并发测试,而易造成测试环境不稳定,测试窗口期少。\\+  一是在开发过程中,开发人员缺乏能直接模拟生产的、独立的测试环境。在测试中经常与多个项目同时并发测试,而易造成测试环境不稳定,测试窗口期少。\\
   二是在上线过程中,缺乏持续集成与部署的理念与实践,自动化上线与验证不足。自动化上线不足造成上线时间仍然偏长,开发测试环境的多次修改上线,占用了上线人员过多的工作量。部分环境不一致导致仍然需要手工修改配置,不仅风险大,而且繁琐耗时长。自动化验证不足导致上线后无法确认上线准确性,只能通过人工手段再次确认。\\   二是在上线过程中,缺乏持续集成与部署的理念与实践,自动化上线与验证不足。自动化上线不足造成上线时间仍然偏长,开发测试环境的多次修改上线,占用了上线人员过多的工作量。部分环境不一致导致仍然需要手工修改配置,不仅风险大,而且繁琐耗时长。自动化验证不足导致上线后无法确认上线准确性,只能通过人工手段再次确认。\\
   三是在系统运维过程中,由于应用运行在同一WEB或应用服务器中,应用之间的隔离性不强。应用并不是独享运行环境,而是与其他应用共享线程、数据库连接、内存、网络等多种资源。因此单个应用造成内存泄漏与溢出、线程耗尽、数据连接耗尽、网络带宽耗尽等异常,容易导致同一服务器中其他应用的可用性受到影响。\\   三是在系统运维过程中,由于应用运行在同一WEB或应用服务器中,应用之间的隔离性不强。应用并不是独享运行环境,而是与其他应用共享线程、数据库连接、内存、网络等多种资源。因此单个应用造成内存泄漏与溢出、线程耗尽、数据连接耗尽、网络带宽耗尽等异常,容易导致同一服务器中其他应用的可用性受到影响。\\
行 46: 行 46:
 ====3.3 基于Docker容器技术的云应用管理平台==== ====3.3 基于Docker容器技术的云应用管理平台====
   采用Docker容器后,单台SCAP服务器上应用部署架构将会发生变化,如下图所示:\\   采用Docker容器后,单台SCAP服务器上应用部署架构将会发生变化,如下图所示:\\
- +{{ :​service:​techmag:​201906_035:​1.docker.png |}}
   在单个容器内既包含应用,又包含了相应的运行环境,容器作为单个进程运行在系统中。在实施云应用系统前,最基础的工作是应确定单个Docker容器中可运行的应用数量,如单个Docker只配置单个应用。\\   在单个容器内既包含应用,又包含了相应的运行环境,容器作为单个进程运行在系统中。在实施云应用系统前,最基础的工作是应确定单个Docker容器中可运行的应用数量,如单个Docker只配置单个应用。\\
   容器在非运行态时是以镜像的方式保存,因此需要建立统一管理的镜像中心 registry,该镜像中心存储由开发环境中所构建的镜像文件,并可在多个环境中部署运行,如下图所示:\\   容器在非运行态时是以镜像的方式保存,因此需要建立统一管理的镜像中心 registry,该镜像中心存储由开发环境中所构建的镜像文件,并可在多个环境中部署运行,如下图所示:\\
- +{{ :​service:​techmag:​201906_035:​2.scap.png |}}
   由于现有的SCAP平台上线工具主要是对应用进行上线与部署,因此可将上线工具与构建过程相结合,将测试环境的上线定位为镜像的构建,并将应用的更新及应用运行环境都将加入到镜像中。\\   由于现有的SCAP平台上线工具主要是对应用进行上线与部署,因此可将上线工具与构建过程相结合,将测试环境的上线定位为镜像的构建,并将应用的更新及应用运行环境都将加入到镜像中。\\
 === 3.3.1 镜像的管理=== ​ === 3.3.1 镜像的管理=== ​
   Docker不仅支持从互联网Docker Hub(公共镜像仓库)中获取已构建的镜像,也支持自建私有镜像仓库registry。registry中可包含操作系统、应用服务器、中间件、数据库、应用、共享库等一系列的镜像文件,在运行时,可拉取到本地服务保存并运行,以构建容器。\\   Docker不仅支持从互联网Docker Hub(公共镜像仓库)中获取已构建的镜像,也支持自建私有镜像仓库registry。registry中可包含操作系统、应用服务器、中间件、数据库、应用、共享库等一系列的镜像文件,在运行时,可拉取到本地服务保存并运行,以构建容器。\\
-因此可以建立统一的镜像中心,开发人员可自由构建、上传并拉取镜像文件。其他环境都可以从该镜像中心中拉取Docker镜像文件,并直接部署运行,其上线对象将从源码、配置、脚本、数据的上线包转换成Docker镜像文件,实现快速自动化发布。\\+  因此可以建立统一的镜像中心,开发人员可自由构建、上传并拉取镜像文件。其他环境都可以从该镜像中心中拉取Docker镜像文件,并直接部署运行,其上线对象将从源码、配置、脚本、数据的上线包转换成Docker镜像文件,实现快速自动化发布。\\
 === 3.3.2 编排与部署=== ​ === 3.3.2 编排与部署=== ​
   由于Docker本身需要配置网络,配置内存限制、带宽限制等资源使用限制,且其包含的应用在部署时也需要指定依赖关系,因此需要对各应用制定编排规则,部署时执行编排的规则,以使得Docker能正常运行。因此可利用Docker原生的Compose工具编写SCAP应用的部署脚本,并在部署镜像时使用该脚本。\\   由于Docker本身需要配置网络,配置内存限制、带宽限制等资源使用限制,且其包含的应用在部署时也需要指定依赖关系,因此需要对各应用制定编排规则,部署时执行编排的规则,以使得Docker能正常运行。因此可利用Docker原生的Compose工具编写SCAP应用的部署脚本,并在部署镜像时使用该脚本。\\
 === 3.3.3 Docker容器管理=== ​ === 3.3.3 Docker容器管理=== ​
   采用Docker容器后,单个SCAP服务器上将有多个Docker进程,而整个SCAP集群的Docker数量将会进一步增多。为有效管理Docker容器,拟采用原生的Swarm集群抽象管理工具,对多个Docker实施管理,如下图所示。\\   采用Docker容器后,单个SCAP服务器上将有多个Docker进程,而整个SCAP集群的Docker数量将会进一步增多。为有效管理Docker容器,拟采用原生的Swarm集群抽象管理工具,对多个Docker实施管理,如下图所示。\\
- +{{ :​service:​techmag:​201906_035:​3.swarmdocker.png |}}
   通过Swarm可实现对各个Docker的远程控制,还可以对宿主机资源实现分配和管理,调用Compose工具将容器部署到目标宿主机上。\\   通过Swarm可实现对各个Docker的远程控制,还可以对宿主机资源实现分配和管理,调用Compose工具将容器部署到目标宿主机上。\\
 === 3.3.4 网络管理 ===  === 3.3.4 网络管理 === 
行 70: 行 70:
 ===3.4.1基于ZooKeeper的软件配置管理系统=== ===3.4.1基于ZooKeeper的软件配置管理系统===
   基于ZooKeeper的软件配置管理系统,其架构如下图所示:\\   基于ZooKeeper的软件配置管理系统,其架构如下图所示:\\
- +{{ :​service:​techmag:​201906_035:​4.dob.png |}}
   配置统一存放在数据库中,配置修改既可通过辅助上线工具完成,也可以通过EAI前台操作界面在线修改。在ZooKeeper集群中保存配置的路径,如下图所示:\\   配置统一存放在数据库中,配置修改既可通过辅助上线工具完成,也可以通过EAI前台操作界面在线修改。在ZooKeeper集群中保存配置的路径,如下图所示:\\
-  ​+{{ :​service:​techmag:​201906_035:​5.docker.png |}}  ​
   当Docker容器部署时,将从ZooKeeper集群中获取配置路径,并获取配置值并加入到容器的运行环境中。而对非容器的应用,当配置发生变更时,ZooKeeper通知对该配置感兴趣的agent,并由agent从数据库中读取最新的配置信息。在获取配置后,agent不仅在更新内存中的值,也会去更新实际存放路径的配置值,甚至可完成对应用配置的热更新。\\   当Docker容器部署时,将从ZooKeeper集群中获取配置路径,并获取配置值并加入到容器的运行环境中。而对非容器的应用,当配置发生变更时,ZooKeeper通知对该配置感兴趣的agent,并由agent从数据库中读取最新的配置信息。在获取配置后,agent不仅在更新内存中的值,也会去更新实际存放路径的配置值,甚至可完成对应用配置的热更新。\\
 =====4 应用场景===== =====4 应用场景=====
行 80: 行 80:
   在开发中可以实施一次构建、多次应用的模式,在开发环境中构建Docker镜像,并在测试、生产等多个环境中部署并运行该镜像,实现了部署的准确性。\\   在开发中可以实施一次构建、多次应用的模式,在开发环境中构建Docker镜像,并在测试、生产等多个环境中部署并运行该镜像,实现了部署的准确性。\\
 ====4.2 应用场景二:集成==== ====4.2 应用场景二:集成====
-  SCAP平台应用的上线对象将从包含源码、配置、脚本的上线包转换成Docker镜像文件,因此上线可实现完全的自动化,其效率将从分钟级提升至秒级。不仅实现了快速的应用部署,还能实现服务的快速扩缩容,可以在新的SCAP服务器上快速部署并运行Docker镜像。 +  SCAP平台应用的上线对象将从包含源码、配置、脚本的上线包转换成Docker镜像文件,因此上线可实现完全的自动化,其效率将从分钟级提升至秒级。不仅实现了快速的应用部署,还能实现服务的快速扩缩容,可以在新的SCAP服务器上快速部署并运行Docker镜像。\\ 
-由于部署的方便快捷,因此在自动化测试的基础上,可采用持续集成与部署的模式,在开发与测试环境每日自动构建、部署、运行SCAP应用,实现自动化的持续部署能力。\\+  由于部署的方便快捷,因此在自动化测试的基础上,可采用持续集成与部署的模式,在开发与测试环境每日自动构建、部署、运行SCAP应用,实现自动化的持续部署能力。\\
 ====4.3 应用场景三:运维==== ====4.3 应用场景三:运维====
-  单个Docker容器中不仅部署应用,还将部署web服务器、应用服务器等支持应用运行的环境,Docker容器之间的资源隔离可以保证应用运行环境的异常不会传递。因此,异常的定位与处理将不会影响其他SCAP应用的可用性。 +  单个Docker容器中不仅部署应用,还将部署web服务器、应用服务器等支持应用运行的环境,Docker容器之间的资源隔离可以保证应用运行环境的异常不会传递。因此,异常的定位与处理将不会影响其他SCAP应用的可用性。\\ 
-对容器集群实施有效监控,还可以将监控与智能运维相结合,根据容器与应用的历史运行信息,预测容器性能,实现容器资源的智能扩缩容。\\+  对容器集群实施有效监控,还可以将监控与智能运维相结合,根据容器与应用的历史运行信息,预测容器性能,实现容器资源的智能扩缩容。\\
 =====5 总结===== =====5 总结=====
   本文面向分布式云计算平台SCAP,阐述了一种基于Docker容器技术的云应用管理平台,并为其设计了一种统一配置管理系统,以解决各个环境部分配置不一致的问题。该云应用管理平台将管理对象的颗粒度从代码级、组件级放大成镜像级,将与应用相关的所有组件和环境进行封装、管理,不仅消除因为环境不一致而带来的开发和运维风险,还能形成持续集成、持续部署能力,提高开发和运维效率。\\   本文面向分布式云计算平台SCAP,阐述了一种基于Docker容器技术的云应用管理平台,并为其设计了一种统一配置管理系统,以解决各个环境部分配置不一致的问题。该云应用管理平台将管理对象的颗粒度从代码级、组件级放大成镜像级,将与应用相关的所有组件和环境进行封装、管理,不仅消除因为环境不一致而带来的开发和运维风险,还能形成持续集成、持续部署能力,提高开发和运维效率。\\
阅读
service/techmag/201906_035/02.1565778117.txt.gz · 最后更改: 2019/08/14 10:21 由 -