进入21世纪,我们的社会和经济发生了巨大的变化,社会对各行业服务的要求越来越高、越来越细致。新的需求如洪水一样滔滔不绝地从市场的第一线喷涌到企业的产品部门和IT部门。为了满足业务的需求,企业IT在不断地变革,而且从未停步。从客户端/服务器模型,变革为浏览器/服务端模型,从庞大的信息孤岛,变革为基于服务的架构(SOA),从物理机,到虚拟化,再到基础架构云(IaaS)和应用云(PaaS)。
通过近十年云化的推进,大多数有一定规模的企业已经实现了基础架构资源的云化和池化,这里的资源指的是诸如虚拟机、数据库、网络、存储。用户可以用很短的时间获取业务应用所需的机器、存储和数据库。基础架构资源云化其实并不是目的,而是手段。最终的目标是让承载业务的应用可以更快地上线。但现实是,通过IaaS获取的大量的基础架构资源并不能被我们的最终业务应用直接消费。应用还必须进行或繁或简的部署和配置,才可能运行在云化的虚拟机之上。部署涉及操作系统配置的修改、编程语言运行环境的安装配置以及中间件的安装配置等。部署的过程在一些企业仍然是通过手工完成,低效且容易出错。有的企业则是通过简单的自动化方式完成,提高了效率,但是满足不了后期更高级别的要求,如动态扩容、持续部署。即使勉强通过了简单的自动化实现,后期随着部署平台类型的增多以及复杂化,维护的难度将会陡然增高,无法真正做到随时随地持续交付、部署。
基于这个背景,业界需要有一种手段来填充业务应用和基础架构资源的这道鸿沟。让应用可以做到“一键式”快速的在基础架构资源上运行。为了实现这个目标,业界出现了多种不同的平台,即服务云的容器方案。最终命运之神的棒槌砸到了一个叫Docker的开源项目上。Docker通过对Linux内核已有机能的整合和强化,为业务应用提供了一个绝妙的方案。最后其简单易用的用户命令行,让Docker快速地获取了巨大的用户基础,也成就了今日其在容器界的地位。目前Docker结合Kubernetes的解决方案是业界应用最为广泛的容器云解决方案。Kubernetes是Google开源的容器集群管理系统。它构建Docker技术之上,为容器化的应用提供资源调度、部署运行、服务发现、扩容缩容等整一套功能,本质上可看作是基于容器技术的Micro-PaaS平台,即第三代PaaS的代表性项目。
未来的规划,某保险将以保险行业的产业链延伸、客户导向及互联网+为战略发展方向,需要BI分析、业务动态扩展、以及敏捷的产品与服务对接和装配的能力支撑,基于以上的技术要求,优化建设支撑企业业务及应用运营的基础设施,结合基础资源现状,建立云计算技术能力,形成快速响应,可持续发展的下一代数据中心。
如图所示,对比传统方案,容器云的方案,将在对微服务架构的支持、业务弹性扩容、自动化部署、产品快速上线、敏捷/迭代、全面系统监控等方面对IT部门带来全方位的提升。
OpenShift是一个开源容器云平台,是一个基于主流的容器技术Docker和Kubernetes构建的云平台。作为一个开源项目,OpenShift已有5年的发展历史,其最早的定位是一个应用云平台(PaaS)。在Docker时代来临之前,各厂商和社区项目倾向构建自己的容器标准,如CloudFoundry的Warden、OpenShift的Dear,但是在Docker成为主流及社区的技术发展方向后,OpenShift快速的拥抱了Docker,并推出了市场上第一个基于Docker及Kubernetes的容器PaaS解决方案。OpenShift对Docker及Kubernetes的整合和OpenShift项目最大的贡献方红帽有着很大的关系。Red Hat是OpenShift项目最大的贡献者,同时也是Docker和Kubernetes项目重要的贡献方。OpenShift前几年在容器和PaaS领域的经验积累,叠加上Docker和Kubernetes容器及容器编排上的特性,一经推出就受到了广泛的关注和好评,连续两年获得InfoWorld年度技术创新大奖。
通过OpenShift这个平台,企业可以快速在内部网络中构建出一个多租户的云平台,在这朵云上提供应用开发、测试、部署、运维的各项服务。OpenShift在一个平台上贯通开发、测试、部署、运维的流程,实现高度的自动化,满足应用持续集成及持续交付和部署的需求;满足企业及组织对容器管理、容器编排的需求。通过OpenShift的灵活架构,企业可以以OpenShift作为核心,在其上搭建一个企业的DevOps引擎,推动企业的DevOps变革和转型。
秉承统筹规划、顶层设计原则,围绕“移动、云、大数据”等新技术,提高信息数字化水平,打造信息技术传统与敏捷双模交付能力,驱动业务模式创新和流程再造,支撑公司三大战略实施,最终将数字化打造成某保险的核心竞争力。
对基础架构的建设提出了新的要求:
本次采取的产品方案是红帽Openshift3.5(参照应用使用版本,RHEL最新是7.3;使用一主多从模式)。
对于企业级的应用平台来说,会有来自企业内外不同角色的用户,所以灵活的、细粒度的、可扩展的权限管理是必不可少的。OCP从设计初期就考虑到企业级用户的需求,所以在平台内部集成了标准化的认证服务器,并且定义了详细的权限策略和角色。
租户是指多组不同的应用或者用户同时运行在一个基础资源池之上,实现软件、硬件资源的共享,为了安全需求,平台需要提供资源隔离的能力。
在OCP中,project是一个进行租户隔离的概念,它来源于kubernetes的namespace,并对其进行了功能的扩展。利用Project,OCP平台从多个层面提供了多租户的支持。
有别于当前流行的容器应用,的传统应用同时一个中间件会运行多个应用,且应用通过log4j等机制保存在文件中方便查看和排错。因为容器运行的特性,对于这部分的日志我们需要持久化到外置存储中。
日志的分类如下:
日志保存在计算节点上挂载的NFS存储。为了规范和方便查找。日志将会按OCP平台中的namespace建立目录,进行划分。
应对分布式环境下日志分散的解决办法是收集日志,将其集中到一个地方。收集到的海量日志需要经过结构化处理,进而交给需要的人员分析,挖掘日志的价值信息。同时不同的人员对日志的需求是不一样的,运营人员关注访问日志,运维人员关注系统日志,开发人员关注应用日志。这样就需要有一种足够开放、灵活的方法让所有关心日志的人在日志收集过程中对其定义、分割、过滤、索引、查询。
OpenShift使用EFK来实现日志管理平台。该管理平台具备以下能力:
PaaS平台的监控包括系统监控、容器监控等。监控流程由信息收集、信息汇总和信息展示等几个部分组成。
在Openshift中默认使用kubenetes的监控信息收集机制,在每个节点上部署cadvisor的代理,负责收集容器级别的监控信息。然后将所有信息汇总到heapster,heapster后台的数据持久化平台是Cassandra。最后由hawkular从Cassandra获取信息进行统一的展示。
在DMZ区应用部署遵循以下策略:
例如在DMZ网段对XXX应用所使用的2台计算节点打上标签
在部署XXX应用使,nodeSelector需要指明使用的节点的标签为XXX=XXX。
内网计算节点可以直接访问数据库
DMZ区计算节点访问数据库有2种方案:
• 计算节点直接通过内网防火墙访问该应用数据库
内网防火墙仅开通应用所在节点访问内部数据库的端口,例如本期项目,xxx应用仅使用2个节点,则防火墙仅开通这2个节点访问xxx数据库的权限
因此,内网防火墙仅开通应用所在节点访问内部数据库的端口,例如,应用A仅通过路由节点A和B访问内部数据库,则防火墙仅开通这2个节点访问A数据库的权限
外部镜像仓库独立于OCP平台之外,用于存储平台构建过程中所使用的系统组件镜像。因为外部无法直接访问OCP平台的内部镜像仓库,所以由QA环境CD推送到生产环境的镜像也是先复制到外部镜像仓库,再由平台导入至内部镜像仓库。
为了保证外部镜像仓库的高可用, 使用了2台服务器,前端使用F5进行负载均衡,所有的请求均发至F5的虚拟地址,由F5进行转发。后端镜像仓库通过挂载NFS共享存储。
Openshift的Master主控节点承担了集群的管理工作,
计算节点高可用指计算节点上运行的容器应用的高可用。一个计算节点异常停机后,其上的容器将会被逐步迁移到其他节点上,从而保证了高可用。
同时可以通过标签的方式来管理计算节点,在不同的计算节点划分为不同的可用区或组。在部署应用时,使用节点选择器将应用部署至带有指定标签的目标计算节点上。为了保证高可用,标签组合的目标计算节点数要大于1。这样可以避免一台目标节点宕机后,调度器还能找到满足条件的计算节点进行容器部署。
基于软件(HAproxy)负载均衡服务,容器服务弹性伸缩时无需人工对负载均衡设备进行配置干预,即可保证容器化应用的持续、正常访问;可通过图形界面自定义负载均衡会话保持策略。
由于平台内部通过软件定义网络为每个应用容器分配了IP地址,而此地址是内网地址,因此外部客户无法直接访问到该地址,所以平台使用路由器转发外部的流量到集群内部具体的应用容器上,如果应用有多个容器实例,路由器也可实现负载均衡的功能。路由器会动态的检测平台的元数据仓库,当有新的应用部署或者应用实例发生变化时,路由器会自动根据变化更新路由信息,从而实现动态负载均衡的能力。
docker运行过程中会将镜像下载到本地,此存储空间称为docker storage 。
在我们的平台中,每一台服务器都挂载了100GB的本地存储,通过运行docker-storage-setup,由平台自动设置。设置方法参考安装手册。
OCP平台自动设置后的sdb如下图:
持久化存储分为平台内置组件的持久化存储和应用的持久化存储。
在平台中需要使用到持久化存储的组件包含以下
云计算使传统意义上的数据中心从原来的成本中心转变成服务中心,支持向公司内部输出规范的、有质量保证的服务,降低服务成本、运营成本的同时促进IT部门运维模式发展变革,简化系统建设、运维工作,提升工作效率。
项目建成后,将会对保险IT业务带来如下提升:
缩短上线周期
云计算的引入能够显著缩短硬件资源、平台环境、应用系统的部署周期,支持各部门在最短时间内以“随需即取”的方式获取系统部署所需的一切服务资源,运维管理团队即可根据服务模板实现远程快速部署和动态调整,减少重复性建设工作,支撑业务的快速发展变化。
进一步实现绿色节能
云计算构建于池化的硬件资源基础上,并进一步实现服务化封装及更高层级的细粒度服务复用,从而相应降低对数据中心机房的电力、制冷、空间消耗,实现机房绿色节能。
促进运维模式发展变革
针对业务需求部门提供自助式服务,需求部门依据定制的云服务目录选取所需的计算资源、存储空间、网络服务、基础平台环境等服务项并提交申请,运维管理团队根据定制成型的服务模板,依靠自动化技术及云管理平台来交付规范的、有质量保证的服务,将传统运维模式转变为以服务为中心的方式,降低系统建设、运维、管理工作量。
如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!
赞20
添加新评论1 条评论
2019-01-16 14:08