干货 | 携程云原生基础设施演进之路

云原生架构(微服务、容器云、DevOps、不可变基础设施、声明式API、Serverless、Service Mesh) 微服务、容器云、DevOps、不可变基础设施、声明式API、Serverless、Service Mesh 阅读详情

作者简介

 

周昕毅,携程系统研发部云平台高级研发经理。目前负责携程K8S平台运维管理、分布式存储和云平台网络组件研发及运维管理。熟悉云基础设施建设,从事运维自动化及DevOps工具研发工作十年以上。长期关注云原生技术领域,Infrastructure AS Code理念的坚定践行者。

随着虚拟化技术和云计算技术的普及,IT互联网基础设施发生了很大的变化,计算、存储、网络等底层架构也越来越复杂。本文主要介绍携程云平台团队在追求云原生的道路上不断演进携程云基础设施的历程,包括架构选型的思路和踩坑经验的总结。

一、Generation1.0:OpenStack & IAAS平台建设

携程云1.0时代,云平台团队基于OpenStack构建IAAS平台,旨在提升资源交付效率、统一资源交付标准。虚拟化网络方案基于OpenStack Neutron及Openvswitch技术实现,网络架构是传统的大三层架构。网络架构如下图:

图1 传统大三层网络架构示意图

 

经过对OpenStack nova调度器的优化、KVM/Vmware镜像自动下发,虚拟机的交付时长稳定在2分钟至5分钟左右。但由于虚拟机和物理机镜像的管理成本较高,IAAS平台仅负责交付标准的预装OS(如Ubuntu1604/CentOS71/CentOS76/Windows2012等),在postinstall过程中安装Provision系统的agent(比如SaltStack Minion),代码运行环境的标准化是由Provision系统来实施。再加上CMDB、负载均衡系统、自动发布系统等对接的步骤,从用户申请虚拟机到可以提供线上服务,预期时间在20分钟到30分钟之间。

二、Generation2.0:容器化推进 & Mesos平台建设

2015年底开始,云平台开始进行容器化的尝试。由于前几年在OpenStack平台积累了很多经验,团队在第一时间选择用novadocker组建来进行容器化落地。

容器的网络方案与Generation1.0时代的虚拟机网络模型保持一致,继续使用Neutron+Openvswitch来落地,这样节省了很多网络选型和测试的时间。

Novadocker的调度模式与虚拟机类似,第一次实例创建后即落地在固定的宿主机上,因此内部又将novadocker创建出的容器定义为“胖容器”。胖容器接入了部分生产业务并稳定运行之后,大家觉得在稳定性方面容器和VM并没有太大差异,很快我们启动容器调度平台的选型,让容器实例“动”起来。

2016年初,在调研了Docker Swarm、Mesos、Kubernetes之后,团队普遍认为Mesos最为成熟,于是着手开始进行Mesos在携程的落地,大家分工进行各技术栈容器镜像规范制定、镜像打包平台建设、PAAS平台与Mesos平台对接、下一代网络方案调研及落地。

在验证了大规模Mesos集群的稳定性之后,团队将之前运行在虚拟机上的java应用分批次迁移到Mesos集群。至此,团队的工作重心从资源交付转向应用交付,研发新申请容器实例到投产平均仅需30秒的时间。

在Generation2.0的时期,大家逐步认识到容器化带来的实际优势,不可变基础设施的理念不仅帮助了运维团队减轻工作,也为研发团队提升了交付效率,各业务积极配合容器化改造,JAVA应用容器化覆盖率在很短的时间内超过90%。

 

三、Generation2.5:Ctrip Paas + Kubernetes平台化

在基于Mesos平台快速完成JAVA应用容器化之后,我们也挖掘出了更多的需求:Python/Nodejs/golang等多语言技术栈需要进行容器化改造;调度系统的需求越来越复杂(应用分散策略,CPU绑定,网络Qos,指定CPU指令集的调度);部分应用有强烈的自动扩容缩容的需求等。越来越多的应用侧需求需要下沉到基础设施层(在当前阶段是容器编排调度平台)来实现。

在连续几个月进行Mesos调度器的二次开发工作之后,我们发现Kubernetes社区也越来越活跃,Kubernetes很快演进成了一套Production Ready的容器调度平台。在评估了工作成本和风险之后,团队在2018年初启动了Mesos至Kubernetes的迁移。同时,Ctrip PAAS平台已借助Kubernetes的底层能力,为研发提供了更丰富的服务。

 图2 Ctrip DataCenter OS & Kubernetes整合

    

图3 Ctrip研发服务平台

      

在Generation2.5时代,我们完成了数千个Node规模的Kubernetes集群建设,接入了携程超过1万个线上应用,覆盖了Java/Nodejs/Python/golang等主流技术栈。期间团队在DockerDaemon稳定性、内核方面踩坑多次,投入很多精力进行了相关问题的排查和解决,确保平台上业务的持续、高效、稳定运行。在集群规模大了之后,底层网络的问题陆续多了起来,大集群的快速扩容、高频次的HPA,现有Neutron集中式IPAM分配管理机制已经成为了瓶颈。

图4 Generation2.5 Neutron组件监控看板

 

我们发现部分应用也仅仅是完成了容器化,即部署模式从物理机或虚拟机换成了Docker容器(Cloud Hosting任务达成)。而Kubernetes基础设施平台化能够带来的好处还包括:中心化的资源编排可以最大限度的减少资源浪费(前提是Kubernetes覆盖足够大);强大的管控能力让各领域专家的精力可以集中在领域本身,运维、部署、容灾、分布式、资源分配等繁琐工作由Kubernetes来统一解决;Kubernetes社区的活跃度也可以让业界一流的架构和技术快速在自己的组织中落地。这几大好处促使我们不满足于Cloud Hosting,掀开了下一阶段工作重心:Cloud Native basedon Kubernetes的序幕。

四、Generation3.0:Cloud Native & Kubernetes

1991年9月Linux0.0.1版本的发布震动了整个开源界,Linux自由与分享的哲学在开源界传承至今。2015年,Google发布了Kubernetes 1.0版本,Kubernetes在2017年开始成为了容器编排系统的事实标准。在携程云平台基础设施从2013年至今不断演进的过程中,我们愈发认同Jim Zemlin的观点:‘Kubernetes is becoming the Linux of the cloud’。我们团队目前致力于打造Cloud Native基础设施,追求更高资源利用率、更快部署速度、更强应用治理能力。

4.1 关于更高资源利用率

图5 Kubernetes统一控制平面

目前携程已经接入Kubernetes的应用类型包括:在线应用、ElasticSearch集群、Redis集群、Spark离线计算job集群、AI协作平台等,其中在线应用集群具有显著的波峰和波谷,可以利用混部将波谷资源释放给CPU密集型的离线计算Job,可以显著提升集群资源利用率。如下图:

图6 混步后的资源利用率提升

集中式的Kubernetes集群监控工具可以快速识别各种潜在异常:

图7 携程云管平台Kubernetes集群体检中心

 

4.2 关于更快的部署速度

在提升Provision速度方面,团队主要围绕两个方面进行优化工作:一是打造容器镜像管理平台,快速构建新镜像,按需分发至多地数据中心,基础镜像提前下发预热,宿主机镜像多数据中心就近下载。二是进行新一代容器网络架构调整,解决集中式IPAM的瓶颈,提供更加”云原生”的网络解决方案。

Cilium on Kubernetes的网络架构基于ebpf技术、容器间通信的链路更短;Node级别的IPAM与Neutron相比更高效,也降低了全局性网络故障的潜在风险。

Cilium是Kubernetes Native的一套高性能、高动态的网络解决方案,可以原生支持私有云和公有云,同时可以适配OpenStack、为后续管理VM和物理机管理提供了备选方案。Application层面,Cilium原生支持所有Kubernetes的资源,可以在应用无感知的情况下对网络进行透明的拦截(ebpf技术),对混沌工程的支持非常方便。

图8 Cilium on Kubernetes

 

4.3 关于更强的应用治理能力

Infrastructre as Code实践:

 

图9 Infra as Code实践

Kubernetes平台为Infrastructure as Code实践提供了绝佳的平台,我们基础设施的各类管理服务都在使用IAC的方式进行部署和统一管理,在提升稳定性和运维效率的同时享受云原生带来的社区红利。

基于Cilium,我们同时进行Network Control as Code实践,为混沌工程中的网络故障模拟场景提供了便捷落地的可能;同时,基于内核和ebpf我们可以从底层进行网络排障工具研发,从底层定位各类网络侧疑难杂症的根因。

 

图10 & 图11:Network Control as Code实践

五、写在最后

在线应用的底层基础设施变更有一定风险,需要投入较多人力进行迁移方案设计,“给高速飞行中的飞机换零件”挑战在于:运行中的系统给迁移方案带来了诸多先天限制,原则上只允许成功,不允许失败。

现在云计算的发展日新月异,不断有新的技术和架构出现,各领风骚三五年,要求架构师们具备一定的技术前瞻性和敏锐的嗅觉,同时在设计架构时需要考虑底层变更的成本。Cloud Native架构的开放性和包容性及其对于更高的资源利用率、更快的部署速度、更强的管控能力的不断追求,让我们相信这是值得持续投入的正确道路。

注:携程技术微信公众号后台回复“云原生”,可下载讲师分享PPT。

【推荐阅读】

 “携程技术”公众号

  分享,交流,成长

B站李沐讲论文笔记AlexNet 阅读详情

相关推荐

CentOS 7下rsyslog日志服务器搭建全攻略:从安装到避坑

本文详细介绍了在CentOS 7系统上搭建rsyslog日志服务器的完整流程,从基础安装到高级配置,包括协议设置、日志模板设计、安全加固和性能优化。特别分享了生产环境中的实战技巧和常见问题解决方案,帮助用户高效构建可靠的日志管理系统。

happy2的博客 687

《携程技术2022年度合辑》,送给爱学习的你

序言2023年,当世界重新与中国相连,我们有信心让与世界暌违三年再次踏上旅途的旅行者拥有完美旅程。这是携程人在新年伊始面对春天做出的承诺以及对更美好世界的渴望。疫情三年,一直在改变着我们交流的方式,令生活被切割成无可拼凑的碎片;我们急切地讨论着远方的故事,却又置身不确定的当下。而如今春暖花开,作为携程技术人正在把握机遇,做到用实力过硬的技术,打造强适应性的产品,用“全球化视野+本地化运营” 升级用...

携程技术 4310

vfsglobal预约系统登录问题全解析(by quqi99)

本文全面解析VFS Global预约系统登录常见问题,包括IP限制、验证码验证失败及账号自动删除等。提供详细的解决方案,如DNS配置、浏览器设置及邮箱选择建议,帮助用户顺利完成签证预约。特别针对中国用户遇到的IP限制问题,给出了实用技巧。

gamma的博客 1340

千亿级携程酒店AWS实践

作者简介微末,携程软件技术专家,关注系统架构,致力于高可用高性能的支撑业务系统开发。一、背景随着携程海外酒店业务的发展,遍布全球的海外供应商与携程总部IDC之间的数据传输量快速增长。技术...

架构师小秘圈 711

电阻应变式力传感器

电阻应变式力传感器

lu_fresh_student的博客 5073

天地图API避坑指南:从零开始实现地址搜索与坐标标记

本文是一份天地图API实战避坑指南,详细讲解了从申请密钥、初始化地图到实现地址搜索与坐标标记的全过程。针对开发中常见的坐标偏移、搜索建议不显示、事件监听失效等核心难题,提供了具体的解决方案和代码示例,帮助开发者高效、稳定地集成天地图服务。

weixin_29326909的博客 263

【架构设计】现代软件交付中的灵活性与可靠性———云原生与不可变基础设施(微服务/容器化/持续交付,计算/存储/网络)

【架构设计】现代软件交付中的灵活性与可靠性———云原生与不可变基础设施(微服务/容器化/持续交付,计算/存储/网络)定义:云原生依赖于基础设施基础设施影响云原生共同演进现代形态参考资料:1云原生基础设施,2云原生基础设施,1,2,3为什么叫云原生云原生的发展史云原生的发展 2013年,Pivotal公司的MattStine于首次提出云原生(CloudNative)的概念 2015年,云原生刚推广时,MattStine在《迁移到云原生架构》一书中定义了符合云原生架构的几个特征:微服务、自敏捷架构、基

小哈里的博客 1973

【OpenArm|Control】openarm机械臂ROS2仿真控制

openarm_ros2 存储库包含用于 ros2_control 的包集合。 它抽象化了硬件控制,将手臂公开为接收位置、速度和扭矩命令并输出关节状态的接口。 openarm_bringup 包提供了通过包与 ROS2 控制框架集成的启动文件。该软件包提供启动文件和配置,用于启动硬件接口、加载控制器以及将物理臂连接到 ROS2 生态系统。启动后,您可以使用标准 ROS2 控制工具和接口来命令手臂并接收反馈。openarm_bringup bringup 包支持模拟硬件(用于模拟/测试)和通过硬件插件的真实

ai领域探索者,欢迎一起交流,目前从事具身智能行业。 2955

干货 | 云计算时代携程的网络架构变迁

作者简介赵亚楠,携程云平台资深架构师。2016 年加入携程云计算部门,先后从事 OpenStack、SDN、容器网络(Mesos、K8S)、容器镜像存储、分布式存储等产品...

携程技术中心 1876

美特CRM mcc_login.jsp存在SQL注入漏洞

MetaCRM 是一种现代化的客户关系管理(CRM)平台,旨在通过集成和自动化的方式帮助企业管理与客户的关系,提高销售和服务效率。MetaCRM 的功能和特性通常涵盖了多个领域,包括销售、营销、客户服务、数据分析和自动化工具。

缘梦未来的博客 808

Halcon 深度学习实战:PCB 缺陷检测模型的 TensorRT/OpenVino 加速推理

本文介绍了如何利用TensorRT和OpenVino对Halcon深度学习模型进行加速优化,以提升PCB缺陷检测系统的实时性能。文章详细阐述了模型加速框架的选择策略(根据硬件选用TensorRT或OpenVino)、优化流程实施(包括混合精度优化和模型导出)以及加速后的推理实现。实验结果表明,优化后的模型体积缩小40%,推理速度提升2-5倍(GPU环境下从79ms降至38ms,CPU环境下从3804ms降至2152ms),同时保持检测精度。通过完整的代码示例展示了从模型加速到实际部署的全流程,为工业视觉场景

LIN943168247的博客 535

干货 | 携程 Cilium+BGP 云原生网络实践

作者简介Arthur,Stephen,Jaff,Weir,几位均来自携程云平台基础设施和网络研发团队,目前专注于网络和云原生安全相关的开发。Cilium 是近两年最火的云原生网络方案之...

携程技术 3736

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

干货 | 携程日志系统治理演进之路

作者简介Dongyu,资深云原生研发工程师,专注于日志与OLAP领域,主要负责携程日志平台和CHPaas平台的研发及其运维管理工作。本文将从以下五部分切入,讲述日志系统的演进之路:携程日志的背景和现状、如何搭建一套日志系统、从 ElasticSearch 到 Clickhouse 存储演进、日志3.0重构及未来计划。一、日志背景及现状图12012年以前,携程的各个部门日志自行收集治理(如图1)。这...

携程技术 3426

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

干货 | 携程监控系统Hickwall演进之路

作者简介大伟,携程软件技术专家,关注企业级监控,日志,可观测性领域。一、背景监控领域有三大块,分别是Metrics,Tracing,Logging。这三者作为IT可观测性数据的三剑客,基...

携程技术 2489

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

干货 | 携程 SOA 的 Service Mesh 架构落地

作者简介本文作者 Dozer、Bender、vio-lin 来自携程 SOA 团队。目前主要负责 SOA 系统的研发工作和 Service Mesh 架构的演进、落地工作,同时也关注服务治理、JVM、云原生等技术领域。一、背景携程的 SOA 系统经历了 ESB、微服务等架构的演变,正处于一个较平稳的阶段。但当前的微服务架构却遇到了各种业内经常遇到的问题,例如:1)无法支...

携程技术 1830

干货 | JuiceFS 在携程海量冷数据场景下的实践

作者简介妙成,携程云原生研发工程师,主要从事Elasticsearch、JuiceFS的研发运维,关注分布式数据库、NoSQL。 小峰, 携程云原生研发工程师,主要专注于数据库容器化领域,对分布式存储有浓厚兴趣。一、摘要携程的冷数据规模在 10PB+,包括备份数据、图片语音训练数据和日志数据等,存储方案主要是本地磁盘和GlusterFS。在实际使用中这些方案遇到了不少痛点...

携程技术 2533

2019携程技术峰会完美落幕

11月9日,2019携程技术峰会在上海完美落幕。活动吸引了上千位IT专业人士参与,这些技术小伙伴与来自阿里、Amazon、百度、Google、华为、京东、网易、字节跳动、携程等公司的20多位讲师一起徜徉在技术海洋中,探讨最新的技术趋势,分享一线实战经验。携程技术峰会已然成为技术人的专业交流平台。人头涌动正式开场之前的会场,如果用一个词形容,那就是“人头涌动”。11月9日一早,经过彻夜搭建的会场“严...

携程技术 1291

《携程技术2020年度合辑》,送给爱学习的你

01序言 2020年跌宕起伏,突如其来的疫情对旅游行业造成了前所未有的冲击,也让更多人进一步感受到技术互联互通的重要性。对于旅游业技术人而言,外部的不可控因素让我们更加聚焦于系...

携程技术 728

干货 | 10W+ K8s容器数量下,携程如何打造统一弹性调度体系

作者简介本文作者为携程Cloud Container团队的鸿飞,静雪,诗燕。该团队负责K8s容器平台的研发和优化工作,专注于推动基础设施云原生架构升级,以及创新产品的研发和落地,持续...

携程技术 1133

干货 | 携程分布式图数据库Nebula Graph运维治理实践

作者简介Patrick Yu,携程云原生研发专家,关注非关系型分布式数据存储及相关技术。一、背景随着互联网世界产生的数据越来越多,数据之间的联系越来越复杂层次越来越深,人们希望从这些纷乱复杂的数据中探索各种关联的需求也在与日递增。为了更有效地应对这类场景,图技术受到了越来越多的关注及运用。DB-ENGINES 趋势报告显示图数据库趋势增长遥遥领先在携程,很早就有一些业务尝试了图技术,并将其运用到生...

携程技术 3123

干货 | 携程基于BookKeeper的延迟消息架构落地实践

作者简介本文作者magiccao、littleorca,来自携程消息队列团队。目前主要从事消息中间件的开发与弹性架构演进工作,同时对网络/性能优化、应用监控与云原生等领域保持关注。一、背景QMQ延迟消息是以服务形式独立存在的一套不局限于消息厂商实现的解决方案,其架构如下图所示。QMQ延迟消息服务架构延迟消息从生产者投递至延迟服务后,堆积在服务器本地磁盘中。当延迟消息调度...

携程技术 717

干货 | 你们需要的PPT和视频@数据存储与微服务架构实践沙龙

6月15日,“携程技术沙龙——数据存储与微服务架构实践”在携程上海总部举行,邀请了百度、阿里和携程的优秀工程师们,分享在数据存储、微服务体系演进和应用监控系统等领域的最新...

携程技术中心 384

干货 | 查询从秒级到毫秒级,携程 UBT 系统迁移 StarRocks 存算分离架构实战

该架构既提升了资源利用率,避免资源浪费,又显著降低了存储成本,同时也保证了查询速度。此外,利用 show proc compactions 命令,可以获取具体的 Compaction 任务信息,包括任务的开始与结束时间、总执行时长,以及本地与远端数据的扫描量。在 Compaction 层面,传统模式由于提交频繁,容易产生大量 KB 或 MB 级的小文件,频繁触发 Compaction,导致系统开销偏高。在 I/O 性能方面,传统写入以小文件为主,属于随机写入模式,读取时需要频繁打开大量小文件,效率低下。

携程技术 210

京东、携程、B站、唯品会等大厂都在探索哪些大数据新技术应用?

随着大数据与云原生的相互碰撞,各技术领域的新一波挑战和创变正以迅雷之势向我们宣战。利用云原生技术的简便快捷、动态调度、按需伸缩等优势,如何加速大数据基础软件和系统的迭代更新频率、确保整体环境的最终一致性,如何为数据库提供极致的性能、弹性和无限扩展能力,以及由此带来的运维模式转型该如何应对,以上种种,都是我们当下需要率先突破的课题。为了和大家一起探索大数据与云原生强强联合的方式、挖掘由此激发的软件发...

数据一哥,公众号:数据社 8867

100篇你值得收藏的K8s干货文章

K8s已经成为一线大厂分布式平台的标配技术。你是不是还在惆怅怎么掌握它?来这里,大型互联网公司一线工程师亲授,不来虚的,直接上手实战,3天时间带你搭建K8s平台,快速学会K8s,点击下方...

Docker的专栏 4533
上一篇: 干货 | 计算密集型服务的负载均衡策略
下一篇: 干货 | 携程酒店DevOps测试实践
携程技术
博客等级 码龄10年 3716粉丝 324原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值