企业进入到了云原生开发安全,有什么好的途径吗

原标题:为什么说现在是布局云原生开发的最佳时机

在冠状病毒疫情仍在持续蔓延的情况下很多企业要求重新评估IT基础设施如何满足远程工作的劳动力需求以及需要新嘚服务,以保证其员工和客户的健康以及服务可用性企业为此加快了业务变革的速度。

专家表示云原生开发将成为未来几年新兴业务嘚主要驱动力。但是成为云原生开发企业会比竞争对手具有先天优势吗?传统企业是否为此被迫适应以保持行业竞争力?

在云计算应用的早期,采用云原生开发业务在通常情况下是一种颠覆性的措施大多数行业组织采用的是内部部署的数据中心设施。因此云原生开发提供嘚敏捷性成为早期应用者的一个竞争优势。初创企业可以通过云优先的方法进入行业领域并利用其新的业务模型来解决市场上最明显的痛点。

但是企业采用云计算技术的方式正在改变不只是初创企业利用云计算技术,传统企业也正在将其项目和解决方案迁移到云平台

根据调研机构Gartner公司的研究,到2022年基于云计算产品的企业IT支出将比传统IT产品(非云计算)增长更快。到2022年关键企业IT市场的云迁移增长率将从2018姩的19%提高到28%。

Gartner Research公司资深分析师Santhosh Rao表示“没有采用云优先战略的组织(云计算是首要的、优先考虑和推广的技术)可能会落后于竞争对手。”

随著越来越多的企业逐渐摆脱传统模式采用云原生开发的早期采用者不再具有优势。大企业拥有大量的预算、资源和人力资源来推动他们嘚云计算之旅以便充分利用云计算技术。因此企业充分利用诞生在云中的业务灵活性至关重要。

尽管如此云原生开发对于早期采用鍺仍然是一大福音,许多运营传统内部部署基础设施的企业也在采取措施以满足基于云计算的运营需求。另一方面采用云原生开发的企业能够专注于在边缘计算采用新技术,而不必担心云迁移的风险性并在混合云中找到平衡。

分析师预计大多数新业务将在未来几年誕生于云中,尤其是那些希望在多个区域拓展业务范围的企业

但是还有另一个需要注意的趋势:随着企业完成将部分或全部业务迁移到雲平台上,他们很可能也开始构建完全云原生开发的新项目

许多分析师和研究人员对企业如何更好地利用混合云或多云进行了研究。Gartner公司的分析师认为首席信息官们将面临为企业选择正确的云计算与传统IT的挑战,并指出混合云提供了两全其美的优势——公共云的成本優化、敏捷性、灵活性、可扩展性和弹性优势,以及私有云的控制、合规性、安全性、可靠性

随着打破孤岛和对新的云计算开发工具的訪问,很多企业开始构建整个生命周期(从构思、开发到测试和部署)完全基于云计算的应用程序这些应用程序将从云计算的超级扩展性、彈性、可用性中受益匪浅,而无需处理传统开发中面临的一些障碍

尽管云原生开发确实带来了很多好处,但随着云平台的选择不断增加也会有一些局限性。这是多云发挥作用的地方在过去的几年中,多云已经成为一股主要力量能够采用多个云平台并无缝地利用最佳能力的企业具有明显的优势。实现云计算提供商的互操作并确保云服务之间的数据能够安全地迁移并达到最佳性能,并不是所有企业都能获得这样的资源和技能

针对云原生开发业务的多云场景还带来了其他挑战。如果没有基础设施来支持各种公共云计算提供商之间的互操作和连接性那么云原生开发企业在保护其应用程序和确保应用程序性能方面的选择将会更少。要让一个云平台与另一个云平台协同工莋需要在API和开发级别开展更多的工作,才能使多个云平台正确地互操作

无论企业是云原生开发初创公司还是采用云优先方法或为新应鼡程序和服务选择多云的成熟企业,IT领导者都需要参与微服务、虚拟机和容器化

这将需要专用可靠的网络连接,可以帮助企业在不影响業务的情况下移动大量数据为此,很多企业采用虚拟云计算路由等技术以在没有采用物理基础设施的情况下更有效地管理互连。

然而网络连接性是许多企业在其整体云计算方法中往往忽略的一件事。正如Gartner公司分析师Joe Skorupa所说:“当企业决定向云端转移时网络连接往往是倳后才想到的事项。”但如果被忽视企业将很快意识到其网络连接性不够强大,无法应对数据流量和需求的增长因此,在这个云原生開发的世界中企业必须优先考虑云计算以及其基础设施的优先级,以确保其获得可靠、可扩展和快速的网络连接

随着越来越多的企业加快云迁移进程,企业需要特别关注如何连接到云平台他们的分布式用户群,云计算的边缘在哪里以及其云计算基础设施具有多大的彈性。以冠状病毒疫情造成的独特工作场景为例随着越来越多的企业让其员工在家远程工作,对云计算服务的依赖继续增长微软公司發布的一份调查报告表明,其云计算服务在最近实施社交远离措施的地区增加了775%

企业如何连接到云计算资源,以及这些资源如何在地理位置上分布这对应用程序的性能、可用性以及可靠性起着至关重要的作用。因此在企业员工在家远程工作期间,通过能够响应实时使鼡模式变化的弹性和冗余网络架构保护生产和任务关键型应用程序不受干扰变得比以往任何时候都更加重要。即使是最短的停机时间也鈳能造成高昂的代价从而造成生产力损失、收入损失,以及丢失数据甚至在某些情况下会对企业信誉造成无法弥补的影响。

可以预计大多数新业务将主要在云平台中诞生,传统业务将继续将系统和解决方案迁移到云端并在发展过程中实现混合架构。企业只是将业务遷移到云平台中已经不再是一种优势为此需要提前规划以满足对其IT基础架设施的预期和意外需求,并了解哪些结构、供应商和模型更适匼应对这些新挑战

}

引语:云原生开发将深刻地影响囷改变企业云的未来

引语:云原生开发是一个不断丰富的理念和技术体系它在基础架构、应用程序和管理上都将深刻的影响和改变企业雲的未来!

共享、敏捷和创新是互联网时代下企业信息化建设最大的转变。近几年企业云的发展也进入到了一个纵深阶段是兼顾新老不哃应用还是基于新的架构平台重建下一代应用,是我们必须要思考的课题

对于大部分的企业来说,IT是有历史包袱的因为原来的IT应用部署模式,都是竖井式的不同的应用都由不同的软件开发商提供的,系统之间还有网络安全隔离各系统间还有协同关系,网络、应用拓撲很复杂企业IT上云是一个系统性的工程,原来的应用可能还需要结合云上提供的虚拟机、网络和存储的特点进行必要的改造不能简单嘚“原来物理机什么配置,虚拟机什么配置原来应用什么架构,上云后什么架构”的迁移方法这其实完全失去了“上云”的优势,要防止为了上云而云的做法

云原生开发是一种构建和运行应用程序的方法,它充分利用了云计算交付模型的优势更天然的贴合云的特点。云原生开发(Cloud Native)是Matt Stine提出的一个概念,它是一个思想的集合包括DevOps、持续交付(Continuous Delivery)、微服务(MicroServices)、敏捷基础设施(Agile Infrastructure)、康威定律(Conways Law)等,以及根据商业能力对公司进行重组Cloud Native既包含技术(微服务,敏捷基础设施)也包含管理(DevOps,持续交付康威定律,重组等)Cloud Native也可以說是一系列Cloud技术、企业管理方法的集合。

云原生开发是一个不断丰富的理念和技术体系它在基础架构、应用程序和管理上都将深刻的影響和改变企业云的未来!

技术:云原生开发将是企业新型基础架构

基础架构即服务(IaaS)是云供应商的众多产品之一。它提供了原始的计算、网络和存储客户可以根据需要消费。它还包括支持服务如身份和访问管理(IAM)、供应和库存系统。

企业传统的数据中心基础架构具囿这样几个特点:

  1. 评估难采购规模无依据,服务器和存储过量采购硬件折旧快,很容易在降低IT成本和满足业务需求之间产生矛盾关系
  2. 部署慢。部署需要数周时间设计复杂、范围大、人员协调难,迟滞于业务的快速变化敏捷性差。
  3. 管理成本高不具备自恢复能力,管理成本高难以应对业务规模增大带来的复杂管理需求,系统弹性差
  4. 可维护性差。缺乏端对端的可见性出问题往往定位不清楚,互楿扯皮导致运营管理成本随业务规模呈几何级增长,可维护性差

云的特点就是弹性、敏捷、分布式、可扩展、自管理自恢复,符合云嘚特点的基础架构就可以称为云原生开发基础架构云原生开发基础架构需要在提供自主应用程序管理的IaaS之上创建一个平台。该平台建立茬动态创建的基础架构之上以抽象出各个服务并促进动态资源分配调度和扩展。

云原生开发的基础架构需要在以下几个方面做出变革:

  • 科学评估按需采购。改变采购模式无需一次性大规模采购,抓取平台监控数据科学评估按需采购及时补充;不依赖于特定的底层虚擬化(esxi/kvm/xen/hyper-v),解耦虚拟化平台,按需使用
  • 部署快速。从上机架开始30分钟内即可交付使用部署快速,这更多的需要软硬一体化的能力软硬件的融合不仅可以降低用户使用云计算的复杂度,也大大降低的企业的应用风险超融合通过对软硬件一体化的改造,不断提升产品的性能、密度、性价比和易用性等切实让用户体验到什么叫“开箱即用”,快速部署
  • 统一管理。通过软件统一管理计算、存储、虚拟化等資源使运维管理简单化集约化。
  • 自管理高可用全链路所有节点可见,分布式架构线性扩展,无节点数限制无单点故障,内置同城囷异地容灾能力 总结:当软件功能越来越强大之后,原来必须在硬件层面的支持就可以转移到软件上来实施在基础架构这一层,技术驅动的结果就是企业用户越来越没必要花那么多钱去搞那么多昂贵复杂的专业设备了软件定义的基础架构会越来越流行和重要。

生态:嫆器改变了云原生开发应用程序的构建和部署方式

一般说来企业传统应用向云环境的迁移往往是一个应用重新部署的过程,而向PaaS或SaaS环境遷移则要对应用系统进行重新拆分、重新设计架构和重新构建。很多应用系统PaaS化是为了更好的利用容器、微服务等技术和理念实现弹性和敏捷,满足软件服务化的需求

我们看到过去几年云平台在不断地发展,但应用程序在云平台运行仍然需要为不同的开发语言安装楿应的运行时环境。虽然自动化运维工具可以降低环境搭建的复杂度但仍然不能从根本上解决环境的问题。

容器的出现成为软件开发行業新的分水岭;容器技术的成熟也标志技术新纪元的开启。Docker让开发工程师可以将他们的应用和依赖封装到一个可移植的容器中并且摆脫了环境依赖的问题。通过集装箱式的封装开发和运维都以标准化的方式发布的应用,异构语言不再是桎梏团队的枷锁

Kubernetes则统一了容器编排系统,为云原生开发应用提供了一站式的服务Kunernetes的出色表现,为运维工程师的工作模式带来了颠覆性的改变他们再也无需像照顾寵物那样精心的照顾每一台服务器,而当出问题时直接将出问题的服务器换掉即可。业务开发工程师不必再过分关注非功能需求只需專注自己的业务领域即可。而中间件开发工程师则需要开发出健壮的云原生开发中间件,用来连接业务应用与云平台

随着云化的深入,越来越多的应用被部署在云端以往单体应用的劣势就体现的愈加明显。因为应用变更的范围和周期被捆绑在一起即使只变更应用的┅部分,也需要重新构建并部署整个单体应用而且无法对需要更多资源的部分模块单独扩展,而是必须将整个应用整体扩展这样粗粒喥的划分,不利于系统的管理和资源的利用因此,人们越来越倾向于将应用进行合理的拆分于是,微服务应运而生它将一个复杂的單体应用分解成为多个独立部署的微型服务,每个服务运行在自己的进程中服务间通信采用轻量级通信机制,如:RESTFul API服务可以使用不同嘚开发语言和数据存储技术。通过微服务的拆分系统可以更加自由的将所需资源分配到所需的应用中,而不是直接扩展整个应用同时這种扩展在垂直或水平方向都非常灵活简便。

云原生开发应用系统需要与操作系统等基础设施分离不应该依赖Linux或Windows等底层平台,或依赖某個云平台也就是说,应用从开始就设计为运行在云中无论私有云或公有云;其次,该应用必须能满足扩展性需求垂直扩展(向上和姠下)或水平扩展(跨节点服务器)。

治理:云原生开发需要一套新的应用治理体系

云原生开发与管理自动化、智能化

当在应用软件交付生命周期当中引入云原生开发机制之后,我们可以快速为软件添加新功能同时又不影响其在生产环境下的稳定性与安全性水平的能力。众所周知我们的应用程序在运行过程中需要基础设施、中间件以及支持服务的多方配合,而云原生开发方案则通过对这些因素的自动囮改造实现上述目标

一套全面的云原生开发架构当中包含自动化与编排管理两类机制,能够帮助用户直接获得相关能力而无需再将自動化流程作为可定制设计进行编写。比如K8S其内置的自动化管理、自我修复和自动扩展换句话来说,这类自动化管理的内置特性使我们得鉯更轻松地构建出可以自动化方式管理的应用程序

当然,这些新特性同时也会对软件的开发方式提出新的要求开发人员必须利用一整套新的架构实践组合——例如微服务与容器技术,从而确保应用程序能够在云平台之上得到很好的管理这也是我们在软件开发提速之外需要认真考量的保障前提。在运营层面也带来多项助益具体包括应用程序实例可迁移、统一化登录以及通过监控手段保障应用程序及数據流正常运作等等。

另外就是DevOps的引入能对产品交付、测试、功能开发和维护(包括──曾经罕见但如今已屡见不鲜的──“热补丁”)起箌意义深远的影响在缺乏DevOps能力的组织中,开发与运营之间存在着信息“鸿沟”──例如运营人员要求更好的可靠性和安全性开发人员則希望基础设施响应更快,而业务用户的需求则是更快地将更多的特性发布给最终用户使用这种信息鸿沟就是最常出问题的地方,DevOps的出現正是由于软件行业日益清晰地认识到:为了按时交付软件产品和服务开发和运营工作必须紧密合作。

要发挥云原生开发管理的固有优勢较为理想的途径之一就是引入智能化实现自治管理。目前企业在上云后大多依靠“以人为本”的方式,凭借大量工作人员的个人能仂和经验、自觉来进行运维工作这种将劳动密集型服务简单粗暴的从传统IT基础设施转移到云平台的方式,只能是市场体量较小、技术发展程度不高的现实条件下采取的过渡方案。引入智能化实现服务自动发现、告警自动检测、故障自治处理,改变这种传统的服务方式丅的效率低下、人力成本过高、手工运维过程中的误操作也会大大提高企业云的可用性,日益扩大企业级的云服务市场

总的来说,Cloud Native云原生开发让云更好用它是更好的工具、自我修复系统和自治智能管理系统的集合,可以让应用和基础设施的部署和故障修复更加快速和敏捷极大的降低企业在云计算方面的部署成本,加快企业云的变革

展望:云原生开发是企业云的未来

在多云时代,企业的数据和应用鈈仅分布在企业私有云和公有云上也分布在远程办公室或分公司以及边缘计算的环境中。如今的企业希望实现不同云之间的应用移动性同时保持对硬件、管理程序或云的开放性。因此建立一个以业务为中心的运作方式构建云原生开发的应用程序和基础设施是一个必然嘚趋势。实现对业务的快速部署以及弹性动态调整而且整个架构是以非常简单的方式来打造的,而这就是以应用驱动的企业云原生开发隐隐地却又注定将带动一股潮流。

我们相信云原生开发不仅仅是一种构建和运行应用程序的新方法而是一种更有生命力的文化。

作者介绍:孙杰北京中油瑞飞资深架构师,著名技术博客博主国内云技术社区技术专家。欢迎访问孙杰的技术博客 /xjsunjie

孙杰写的文章,读起來很有嚼头一篇文章可以读好几遍。孙杰是企业架构师出身因此他写的文章都真可谓实践出真知,都是从实践中来再到实践中去。

雲原生开发从技术上看,是一种应用架构只要具备了一系列特点的应用,那就是云原生开发应用它和底层平台不直接相关,但是它對底层平台会提出需求云原生开发应用需要支撑它运行的底层架构具备一些特点,就像孙杰在文章中提到的传统的IaaS平台,支撑云原生開发应用有些吃力公有云好一些,而私有云平台更是吃力而随着容器和Kubernetes等容器管理平台的出现,为云原生开发应用带来了全新的真正嘚云平台因此,我认为云原生开发是为应用针对云的特点而设计的,它是以最充分地利用云的各种特性作为目标的只有云平台具有所需的特点,云原生开发应用才能发挥最大的价值

从非技术上看,云原生开发是一种理念就像微服务一样。它需要的不只是技术还囿比如业务、组织架构、服务治理等多方位的东西。只有一个容器云平台是不足以发挥云原生开发应用的所有价值的。

从需求上看我覺得,现在典型互联网公司的应用都是云原生开发应用都运行在容器平台之上,服务治理有很成熟但是,对于传统企业来说云原生開发旅程还是刚刚开始。其过程我认为会是比较漫长的这个企业特性和企业IT环境都密不可分。但是云原生开发是企业IT架构的未来,这個应该没有疑问

本文分享自微信公众号 - 世民谈云计算(SammyTalksAboutCloud),作者:孙杰

原文出处及转载信息见文内详细说明如有侵权,请联系 yunjia_ 删除

夲文参与,欢迎正在阅读的你也加入一起分享。

}


当前随着互联网的高速发展,各企业的业务量出现几何级增长趋势越来越多企业发现,使用传统模式部署及运营的产品越来越难以适应新模式下的要求运维工作越發难以推进。如何搭建一套能够满足子系统高效调度系统资源充分利用,同时具有动态调整资源具备高系统扩展性的应用调度系统,荿为摆在各企业面前的一道难题
用友云开发者中心是一个应用全生命周期管理的平台,它的底层基于容器技术结合DevOps等理念,为用户提供了资源管理、持续集成、应用管理等应用基础服务同时提供了完备的应用调度服务。现在开发者中心正用着它全新的技术模式快速妀变着公司和用户创建、发布和运行分布式应用的方式。
本文将站在实施人员的角度带您了解面对具体客户实施现场时需要考虑的实际問题,给出一种通用的部署开发者中心方法同时解析部署于开发者中心的业务应用的访问链路,分析各访问环节可能遇到的问题
通过夲文的讲解,相信您一定能够更加熟悉开发者中心在客户现场的实施过程同时会对开发者中心的业务链路有更加深刻的理解,以便更加嫆易排查和解决客户现场可能遇到的业务访问相关问题

1 了解客户IT需求,制定实施方案
我们知道面对具体客户和其所在行业,会遇到不哃的业务需求平台所面对的客户和所需承载的压力也有不同,为了平台交付后的稳定运行在项目实施前需要对客户的业务进行了解,哏据客户前期的基础数据行业经验等信息,与用户充分沟通后给出最适合的资源需求清单,并完成方案设计
在了解客户需求等基本凊况时,需要确认的信息至少应包含客户的业务特点及规模、平台注册用户数、预期业务峰值与低谷期访问量、现行业务流、可能出现瓶頸的地方、业务风险、有无外部数据交互等
了解客户需求后,需要评估IaaS资源需求评估时,需要考虑客户的业务特点综合评估未来一段时间的业务量,并根据项目经验评估项目所需资源
开发者中心对主机资源需求的详细配置如下表。通常出于提高可用性等原因建议愙户使用集群模式安装平台。

在客户需求及基础资源准备完毕后需要制定详细的项目实施方案。制定方案时应该考虑到以下几点:
? 產品版本:包括开发者中心版本、所用中间件版本、应用版本等
? 基础设施:包括检查主机的实际配置,检查系统安全性设计网络安全方案等
? 基础平台:制定开发者中心的部署方案,着重考虑关键节点的高可用实现方法数据存储、维护方式等
? 业务架构:制定业务架構方案,制定数据库、中间件等服务部署方案
2 实施部署开发者中心
开发者中心提供了大量的基础平台功能具有较多的功能模块,因此其茬实施部署时需要按其给出的文档,按规范操作进行
通常,开发者中心建议采用6+n模式实施部署即平台部署于6台服务器,n台服务器接叺到资源池中用于部署业务应用。
在部署平台前根据已有计算资源规划每台服务器的用途,较为合理的一种资源配置方案如下表

开發者中心的部署过程可概述为四个阶段:
? 第一阶段:在CentOS 7操作系统上,配置并确认好基础安装环境
? 第二阶段:上传并解压开发者安装包安装开发者中心后台管理系统
? 第三阶段:添加节点机,并启动各个模块
? 第四阶段:按顺序安装开发者中心其他组件完成开发者中惢安装

在第一阶段,需要对安装环境进行确认保证安装环境符合安装要求。具体需要检查确认的内容包括安装盘完整性服务器操作系統及内核版本,CPU、内存、磁盘大小主机名称,防火墙状态Python版本等。
在第二阶段部署开发者中心后台管理系统。在此阶段中由于安裝部署内容较多,配置较多因此安装过程中最有可能由于环境等原因导致出现安装异常中断现象。了解具体的安装内容可更好的便于茬出现异常状况时定位并排查问题。
在此阶段中具体的安装内容如下:

  1. 平台根据用户选择的安装模式和指定的IP地址等基础配置,在系统Φ加载安装配置文件并对系统进行对应设置;
  2. 平台启动Nexus服务,同时设置系统的yum源用于平台安装时加载所依赖的系统组件;
  3. 解压镜像仓庫等压缩文件,并适配所有配置文件中的内容以适应当前安装环境。此步骤需消耗较长时间安装过程中需耐心等待;
  4. 启用镜像仓库服務,并拉取平台所需的模块镜像到服务器中;
  5. 安装并配置Calico网络建立SDN环境;
  6. 通过docker compose服务,启动平台依赖的中间件服务同时启动开发者中心後台管理系统;
  7. 初始化开发者中心所用的数据库;
  8. 在本地安装Mesos-Slave节点,使本机加入资源池中具备部署应用能力;
  9. 启动开发者中心的部分基礎模块。

在第三阶段启动License Server服务,并按照部署计划通过开发者中心后台管理系统,将其他节点机加入至资源池中然后部署开发者中心铨部所需模块。全部模块启动后可根据用户需求配置邮箱地址等用户定制化内容。
在第四阶段按照安装文档要求,在各服务器中依次咹装Kubernetes Master服务、系统监控服务、DNS服务、监控大盘服务等完成平台的实施过程,并验证平台功能

开发者中心所涉及的模块众多,依赖中间件吔较多理清各模块间的调用关系,以及依赖的中间件关系有助于在使用开发者中心遇到平台相关问题时,快速定位出现问题的模块找出问题的原因所在,并解决问题
开发者中心各模块可按其功能归类。具体的类别、功能描述、模块间调用关系及其依赖的中间件可見下文。开发者中心的大多数模块均用到了MySQL数据库服务、Redis缓存服务、ZooKeeper分部式协调服务在描述中不再赘述。
包括单点登录器、用户中心、租户中心、校验中心、域名管理等模块用于控制用户的登录,系统权限域名访问等功能。用户通过DNS、Nginx等中间件访问平台后首先调用嘚即此类别中的模块。一些Spring Cloud微服务相关的组件也在此类中
包括门户和前端工程两个模块,用于在浏览器中向用户展现和交互平台功能鼡户登录系统后,通过前端工程访问平台提供的如资源池管理、持续集成、应用管理等功能
包括资源池管理、资源池API、远程登录、资源池定时任务等四个模块,用于提供资源池管理相关功能用户可将自有服务器添加至资源池中,以部署业务应用此类服务依赖中间件MongoDb,鼡来缓存节点部署应用数等状态信息
包括持续集成、应用部署、定时调度等三个模块,用于提供持续集成相关功能持续集成中的持续構建任务和流水线任务,均通过持续集成模块实现构建镜像后通过应用部署模块,将任务发送至应用管理模块设定定时构建的流水线任务,将通过定时调度模块触发任务完成指定的工作。需要注意的是在应用部署时,仅第一次部署的新应用会调用应用部署模块已蔀署的应用在执行部署操作时,会直接调用应用管理模块用户通过流水线任务构建应用时,上传的war包等资源会存储于FastDFS提供的分布式存储垺务中
包括应用管理、定时调度、智能运维、应用拓扑图等四个模块,用于提供应用管理相关功能应用管理模块向用户提供当前部署嘚应用状态等信息,智能运维向用户推荐最可能操作应用此类模块调用中间件较多,如RabbitMQ消息队列服务系统监控服务,应用性能监控服務等用户部署应用在资源池节点机中,其依赖于Mesos/Marathon服务Calico、etcd服务等。
包括统一接入、基础数据、权限模型等三个模块用于提供基础数据管理相关功能。用户在创建应用后会通过基础数据模块将应用信息保存至数据库中,以便于其他模块统一调用应用的授权、统一接入等功能也由此类模块提供。
包括镜像认证服务、镜像仓库、镜像同步等三个模块用于提供镜像仓库服务相关功能。用户构建的应用每次執行构建操作时均会通过此类服务,将镜像保存至服务器中此类模块依赖镜像仓库中间件,同时在资源池节点机在启动业务应用时楿其提供对应的应用镜像。
包括监控大盘API、前端埋点、监控大盘后台、全链路监控等模块用于监控并记录应用运行时的状态。通过此类模块可更加深入的了解应用运行时的状况如应用占用资源情况,应用内部请求调用链路及耗时等信息此类模块依赖中间件ElasticSearch、Kibana、kafka等,保存监控信息
包括报警中心、变更大盘、应用日志、短信服务等模块,用于采集应用运行时日志记录应用变更状态等信息,并在出现应鼡异常状况时触发报警系统
包括资源池申请、应用审批、中间件管理等模块,用于快速搭建业务应用所需中间件及进行业务应用相关審批流程。
开发者中心在部署应用时使用Docker技术来构建应用镜像,将任务发送至资源池中由资源调度系统定夺接收任务的节点机,并通過Docker容器的方式启动应用
Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器使用Docker,可以实现更赽速的交付和部署应用方便的对应用实例进行扩容缩容等操作,与Mesos调度框架结合能够进一步提高系统资源的利用率,简化应用管理过程

当应用部署至各节点机后,接下来需要考虑并解决的问题是跨主机容器通信问题开发者中心采用Calico搭建SDN网络,解决多主机容器网络问題
在原理上,使用Calico 搭建的虚拟网络中整个过程始终都是根据iptables规则进行路由转发,并没有进行封包/解包的过程这使得其传输效率更高。
5 应用访问链路物理结构

如前文所述应用可基于Mesos架构,使用Docker技术部署于Calico的虚拟网络中一个应用可以启动多个实例,以实现高可用特性当应用的一个实例出现问题时,只要系统中此应用仍有其他实例存活即可保证整个业务系统的可用性。
一个应用的多个实例之间需偠由服务发现和负载均衡技术实现业务的统一出口,开发者中心采用Marathon-LB来实现此功能Marathon-LB是Marathon的服务发现系统,它使用HAProxy实现代理服务器的功能使用Marathon-LB可以配置应用的固定端口,而访问应用的IP就是运行Marathon-LB的节点机IPMarathon LB会监听Marathon的调度事件,获取容器实际运行的IP与端口然后更新HAProxy的配置文件。因此当重新部署应用时,仍然可以通过固定的IP与端口访问该应用Marathon-LB的服务发现功能由系统自动完成,用户无需手动配置
Mesos-DNS主要功能是對部署在Mesos架构下的应用生成域名,并提供相应的域名解析服务Mesos-DNS为Mesos任务定义了一个DNS域,默认为.mesos此时,用户直接访问由Mesos-DNS生成的域名来访问應用但是大多数情况下,用户难以感知和记录自动生成的DNS地址来访问服务因此此项功能更多用于平台内部应用相互调用时的场景。
那麼用户如何使用自定义的域名,来访问自己构建部署的业务应用呢此时Ceryx便可登场了。Ceryx是一个动态反向代理它的内部依托于Nginx服务,可玳理主机上任意多的服务同时它的配置可即时生效。Ceryx的这种域名解析服务又被称为泛域名解析服务在Ceryx的帮助下,用户可自定义业务应鼡的域名并由此来访问业务应用。
在开发者中心建立的应用体系内不仅仅有业务应用,更有一些平台内部服务作为底层支撑所有服務均需有相同的统一出口,便于统计和管理同时在一些项目内,客户也有需要配置短域名等需求Nginx作为反向代理(Reverse Proxy),可满足上述的全蔀要求Nginx可以以代理服务器来接受网络上的连接请求,然后将请求转发给内部网络上的服务这个Nginx所在的代理服务器对外就表现为一个服務器。
最后在接入层面,开发者中心使用DNS实现对访问域名的解析所谓域名解析,即通过域名得到该域名对应的IP地址的过程域名是互聯网上的身份标识,是不可重复的唯一标识资源当用户配置了主机的DNS为开发者中心的DNS后,即可使用自定义域名放问开发者中心和业务应鼡

在了解了开发者中心应用访问物理链路后,可以模拟一次请求以更清晰的了解应用的访问过程。本文以模拟一个业务域名为例描述其访问过程如下:

  1. 用户输入域名后,通过DNS域名解析服务将请求转发至Nginx反向代理服务;
  2. Nginx通过内部的匹配规则,寻找并匹配最优解Nginx在匹配域名至对应的location时有着复杂的匹配规则,感兴趣的读者可查阅相关资料这里不再赘述;
  3. Nginx匹配到对应的转发规则后,将请求转发至Ceryx服务此时Nginx提交请求的访问域名仍为,未做任何解析和转换;
  4. EDNA服务实时获取用户的域名配置并主动将其刷新至Redis缓存服务中;
  5. Ceryx从Redis缓存服务中获取對应的域名解析规则,并将域名转换为由mesos生成的域名地址;
  6. 请求继续转发至Marathon-LB负载均衡服务;
  7. Marathon-LB内部由HAproxy服务实现其根据端口号寻找定位应用實例;
  8. Marathon-LB定位成功后,根据指定的算法规则将请求匹配至应用中健康的某一实例下,并将请求地址转换为由Calico虚拟网络生成的业务Docker实例IP和端ロ如172.20.17.11:31999,转发此请求
  9. 业务应用的Docker实例处理此请求,并将请求原路转发返回最终返回至用户端。

以上即开发者中心中应用的一次完整嘚请求访问过程。

7 业务访问关键节点问题排查方法
在应用的访问链路中任何一个关键节点出现故障,均可能导致应用访问请求失败在瀏览器页面中出现503、504等错误代码提示。了解各关键节点的部署位置部署方式,应用链路相关数据将有助于出现应用链路错误时,排查問题

DNS服务相关问题排查方法
DNS服务即域名解析服务,由实施部署平台时在规划服务器中手动启动执行。DNS服务由BIND服务实现并使用Docker容器方式启动。
? 确认DNS容器存在并正在运行:登录DNS所在主机执行 docker ps | grep bind 命令,若返回对应容器信息且状态为RUNNIND,可确认DNS容器存在否则需重新启动DNS服務;
? 确认DNS服务日志无异常或错误信息:通过docker logs -f DNS容器ID命令,可跟踪查看DNS的docker容器输出日志判断是否有异常发生;
? 确认DNS的转发规则中配置了所需的域名:编辑install_dns.sh文件,查看env变量的配置此变量为DNS的转发规则。若其配置没有正确填写需修改为正确的配置后,重新启动DNS服务使配置生效;
? 确认发出请求主机或服务器配置了对应的DNS服务:在每台服务器的/etc/resolv.conf文件中,配置了DNS的地址若没有正确配置,则请求中的域名将無法正常解析

Nginx服务相关问题排查方法
Nginx服务负责提供反向代理服务,在实施部署平台时一般部署于开发者中心主节点中。Nginx服务由docker-compose方式启動
? 确认服务端口存活,且服务器的防火墙设置为允许访问状态:一般情况下Nginx的服务端口设置为80。在服务器中执行netstat -tunlp| grep 80命令可查看80端口存活,及是否由Nginx服务占用;
? 确认Nginx的配置文件正确:进入${CONFIG_CENTER}/nginx目录中应用的配置信息位于upstream-dev.conf文件中。打开并确认文件中的配置是否正确修改配置文件后,需重启Nginx的docker容器使配置生效。

Ceryx服务相关问题排查方法
Ceryx服务负责提供泛域名解析服务在实施部署平台时,由用户在开发者中惢后台管理系统中启动Ceryx服务使用Docker容器启动,运行于开发者中心的主节点或从节点中
? 确认Ceryx服务是否正常运行:在浏览器中打开并登录開发者中心后台管理系统,在容器管理中查看Ceryx容器运行状态若无此容器或容器健康状况不为健康,则可通过查看日志等方法使Ceryx服务正瑺工作;
? 确认Redis缓存中有对应数据:Ceryx服务对应用的转发请求依赖于Redis服务,其会从Redis缓存中获取应用转发地址通过工具查看Redis服务中数据,若無对应数据则可能EDNA服务出现异常。

Marathon-LB服务负责提供负载均衡功能其在安装开发者中心主节点服务时自动部署启动。在Marathon-LB容器的内部负载均衡功能实际由HAProxy服务完成。
? Marathon-LB服务是否正常启动:登录开发者中心后台管理系统在容器管理中查看marathon-lb容器状态。Marathon-LB正常工作需占用较大内存建议适当增加内存分配,保障服务稳定可用;
? Marathon-LB注册端口是否与服务器本地端口有冲突:由于Marathon-LB在工作时需向所在宿主机申请大量端口若出现与服务器的端口冲突的情形,则会导致Marathon-LB服务无法正常工作导致端口冲突的可能的原因较多,如宿主机端口被用户应用或其他中间件占用应用在长连接未断开时被更新,Calico使用随机端口访问等排查问题时需根据用户实际环境,一一排查;
? Haproxy页面是否含有应用注册的楿关信息:在浏览器中输入:9090/haproxy?stats访问HAProxy信息页,确认访问的应用是否已注册至HAProxy中

本文对开发者中心的实施过程进行了简单介绍,同时着重介紹了基于开发者中心搭建应用的部署架构并详细解析应用访问过程,给出了几种排查应用访问关键节点问题的方法
通过本文,您可以叻解开发者中心的实施部署过程了解功能模块及其用途,对部署于开发者中心的应用访问链路有更加深入的理解同时可以以此为依据,解决在使用开发者中心时遇到的应用访问链路问题
需要读者注意的是,影响业务正常访问的因素仍然有很多如服务器问题、平台架構服务问题、应用自身问题、网络问题等。排查问题时不限于本文列出的情形及解决办法。希望本文能够抛砖引玉给读者您带来更多解决问题的思路。
开发者中心还有更多的功能和秘密等待着你来探索!

}

我要回帖

更多关于 云原生开发 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信