Docker可以显著改善企业软件研发流程、提升企业DevOps效率。借助Docker,企业可以对现有IT系统进行一次梳理,解决IT软件系统部署、升级难的顽疾,重新释放企业生产力,降低企业成本。本次分享介绍了恒生电子运用Docker技术,加上自研配套工具,实现金融交易系统配置、部署、运维自动化的心得,包括:
随着Docker技术的日趋成熟和完善,越来越多的企业开始考虑使用Docker。Docker在开发、测试、运维部署方面已经展现了其巨大的优势,具有很强的生命力。能够极大的解决过去DevOps的弊病,提高效率,节约成本。
在开发测试我们都遇到过这些问题:开发、测试环境不一致,测试出的bug,在开发环境不能重现,需要花费很大的精力在应用环境的维护部署上。应用系统对运行平台有着特定的要求,很难达到在不同的平台间进行安全移植。对于应用的版本控制也比较混乱,不能够方便地对应用进行升级维护。
Docker在持续集成、可移植性和版本控制方面有着天然的优势,很容易解决这些弊端。
在对应用进行部署时,一台主机,一般不会在上面运行过多的应用,有时一台主机只运行了一个程序。究其原因,无非是担心用户数据泄露以及程序之间的相互干扰等。
Docker很好的解决了这个问题,首先docker的隔离性隔离了应用和用户数据,使应用更加安全,用户更加放心;而资源限制避免了一个应用过多消耗资源,从而影响其他应用。
恒生是中国领先的金融软件和网络服务供应商,金融IT领域龙头企业,为客户探索领域内的新方案是我们的责任。
Docker作为一项新技术,在短短的时间内受到各个企业的青睐,有着其得天独厚的优势。恒生是一家技术型金融IT企业,技术创新一直是我们所推崇的,将Docker新技术应用在金融领域,为金融行业提供可靠的Docker解决方案,是我们的责任。
传统的方案,在软件开发和测试、运维的过程中存在诸多问题和不便。比如持续集成困难,开发、测试、运维环境不一致,版本管理问题,硬件资源不足等。Docker将应用的依赖集成进镜像中,很容易的解决了开发、运维环境不一致的问题。容器相互之间的、容器与主机之间的隔离性,让一台主机可以运行多个容器,并互不影响,这就很好的解决了硬件资源不足的问题。每一个版本会生成一个镜像,对于版本的维护、升级以及版本回退都极其方便快捷。Docker的一键部署,极大的节约了运维人员的时间成本和精力。
Docker的天然优势,能够极大提高DevOps效率。
2015年成立团队专门做Docker相关的研发,到目前为止基础平台和关键应用系统已经Docker化,各个部门都在推进各自产品的Docker化。大部分的测试环境,目前都采用Docker进行部署。
继续集成采用的Jenkins,目前Jenkins服务器已经使用Docker进行部署;集成编译环境由于系统版本低,不能很方便的迁移到Docker环境,所以部分用于集成编译的worker节点还是传统的虚拟机。
在Jenkins任务完成后,会制作镜像推送到镜像中心。当然这些可以通过容器管理工具,在界面上进行操作,或者配置成定时任务。
目前,Docker方面的研发主要包括镜像中心、容器部署管理、PaaS平台等。
镜像中心在开源项目Harbor的基础上,增加了CAS集成和项目的组织架构管理以及高可用等。
增加CAS集成,主要是因为在镜像中心部署在内部域内,为了和现有用户体系打通。
为了方便Linux机器登陆镜像中心,并且不会泄露用户域密码,用户会在镜像中心内部设置一个用于Docker登陆的密码。
Docker镜像增加项目组织信息,方便统计各部门产品Docker使用情况。
部署了2套Harbor来做高可用,使用同一个数据库,避免数据同步,但是需要解决镜像复制的问题。
使用Harbor镜像复制的方式将镜像同步到生产环境和测试环境镜像中心,避免中心镜像中心压力过大。
管理方面主要包括机器资源管理、应用管理、容器管理等。
机器资源管理中,用户可以建立多个集群,每个集群管理多台机器,以隔离不同的环境。
应用管理中,用户先创建应用,然后在应用下添加服务,服务可以是单个节点,可以是一个集群。然后在界面上修改服务配置,修改好配置后,再选择要部署到哪个机器集群,进行应用部署。管理工具会将配置文件上传到配置中心,然后启动应用容器,容器启动后,先到配置中心取相应的配置,然后启动应用。
Docker管理供用户查看Docker容器、网络、镜像等。
另外为了兼容低版本操作系统和Windows系统,应用部署也支持用户上传zip包的方式。
PaaS方面,主要是为用户提供更方便的服务,用户可以一键申请MySQL、SLB等常用服务。
恒生金融交易系统的部署面临诸多挑战:
金融交易系统最重要的是稳定性和性能。系统稳定性和并发性要求高,系统延迟要尽量低。为了满足上面要求,软件的可运维性没有受到重视,存在着以下问题:
解决了上述的问题后,现在用户可以通过容器管理工具,在Web界面上,一键部署交易系统,给测试和运维带来了极大的便利性。而系统的性能也没有多少的损耗。
未来我们将加大Docker的推进力度,继续优化交易系统的Docker部署流程,寻找更优化的方案,同时将更多的服务集成到PaaS平台,给用户更好的体验。
Q&A
Q:请问下,你们现在这个系统容器规模多大?OverlayFS有遇到什么坑吗?
A:现在系统容器是100多个。由于镜像数少,对文件inode占用少,所以OverlayFS基本满足需求。但是需要主机内核高一点,在3.18以上。
Q:请教一下。咱们这个容器管理平台是用什么语言开发的?直接调用Docker Remote API吗,用的是最新的1.24么?
A:Java语言开发,直接调用的Docker Remote API,版本是1.24.
Q:MySQL服务也Docker化了吗,怎么保证存储安全?
A:MySQL这块是我们实现了RDS,底层用MySQL的复制方案。
Q:交易系统应该涉及很多运行组件。在决定哪些组件容器化时有哪些考虑?
A:一般性能要求很高,延迟要求在微秒级的组件,比如高频交易等,基本不考虑Docker化。
Q:核心架构是Swarm+Docker+Confd+Registrator,如何实现动态扩展?
A:组件还包括了Etcd,利用Etcd+Confd+Registrator来做服务注册和发现及配置管理,利用Docker Compose的Scale做服务的扩展。
Q:请问你们用的编排系统都是Docker 1.12的Swarm吗,如何实现容器都是夸主机冗余部署?
A:1.12也在试用,现在主要是老模式的Swarm,利用容器的互斥性,相同集群的2个容器实例,不要部署到同一台主机上。
Q:请教下业务组件的镜像有多大?如何实现跨平台迁移,不如从华为云部署到阿里云之类?
A:镜像大小在几百M,利用镜像中心的远程复制功能,同步到生产环境的镜像中心,比如阿里云和华为云上。
Q:镜像安全如何保证?
A:目前基础镜像都是由我们自己制作,会检查安装的软件和版本。后续会引进镜像安全扫描,来定期检查镜像。
Q:请问网络采用host模式,如果一台主机运行多个同一端口的容器怎么办?比如运行2个Tomcat项目?
A:我们在容器管理工具中增加了端口的配置管理,不会出现这种情况。另外部分网络性能要求不高的应用,也会采用flannel host-gw的方案,这样端口就可以相同了。后续会调研MacVLAN模式,给每个容器分配一个物理IP地址。
原文来自:Docker
声明:所有来源为“聚合数据”的内容信息,未经本网许可,不得转载!如对内容有异议或投诉,请与我们联系。邮箱:marketing@think-land.com
涉农贷款地址识别,支持对私和对公两种方式。输入地址的行政区划越完整,识别准确度越高。
根据给定的手机号、姓名、身份证、人像图片核验是否一致
通过企业关键词查询企业涉讼详情,如裁判文书、开庭公告、执行公告、失信公告、案件流程等等。
IP反查域名是通过IP查询相关联的域名信息的功能,它提供IP地址历史上绑定过的域名信息。
结合权威身份认证的精准人脸风险查询服务,提升人脸应用及身份认证生态的安全性。人脸风险情报库,覆盖范围广、准确性高,数据权威可靠。