滴滴2023.11.27P0级故障技术复盘回顾(k8s的的错?)

2023-12-01 06:28

本文主要是介绍滴滴2023.11.27P0级故障技术复盘回顾(k8s的的错?),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文从滴滴官方恢复及技术公众号带大家从技术角度复盘这次事故

目录

1. 背景

2. 滴滴官方消息

3. 问题分析及定位

4.网传的k8s及解析

5.k8s引发的思考:举一反三,怎么避免再次出现

6.近段时间其他平台崩溃回顾


1. 背景

11 月 27 晚约 10 点,滴滴打车遭遇大范围技术故障。用户在使用滴滴的应用程序及小程序时遇到诸多问题,包括叫车功能反应迟缓、无法使用青桔单车扫码功能,以及领取打车优惠券功能失效。直至第二天早上,滴滴发文已恢复正常。

根据微博反馈发现了如下问题:

  • 网络加载异常,无法排单;

  • 数据紊乱,一个订单被派到 4 个司机订单中;

  • 数据展示、数据状态有误,订单取消、订单支付都出现问题;

  • 排单逻辑出错,司机接单到 两千公里以外的单;

  • 订单流水出错,8 公里显示收费 1540 元;

  • 整体问题,连带滴滴、小桔充电、滴滴加油、青桔单车都出现问题;

  • 滴滴内网问题,员工无法正常使用内网相关服务;

至此,滴滴“喜提”微博热搜

2. 滴滴官方消息

3. 问题分析及定位

11月29日,滴滴出行再就27日夜间系统故障致歉,提出了相应的补救措施和补偿方案。并公布了本次事故的初步调查结果:起因是底层系统软件发生故障,并非网传的“遭受攻击”

本次事件中,平台功能几乎全面瘫痪,仅网约车服务功能恢复时长近12小时,可以猜测不是某一个软件功能的bug,否则影响不会这么广,恢复也不会这么慢。滴滴官方也发文说明是底层系统软件的发生故障所以排除了服务器硬件的问题,所以可以猜测为云服务器基础底层软件的问题。

滴滴拥有庞大的业务线,其底层系统由复杂的软硬件构成,其中包括服务器、网络设备、数据库等等重要组成部分,任何一个环节出现故障,都有可能导致整个系统崩溃,用户无法正常使用服务。

360 安全专家认为,滴滴闪崩背后的技术原因可能有六种:

  1. 系统更新升级过程中出现了编程错误、逻辑错误或未处理的异常情况:一般情况下,互联网厂商发布更新都会在晚上,与滴滴发生故障的时间也能对应,当然业务升级维护是放量更新,但现在滴滴全平台、全业务都故障了,说明肯定是他 “家里” 的问题。
  2. 服务器故障:比如滴滴的核心机房,可能恒温恒湿环境出了问题,导致服务器过热、CPU 烧了,或者核心机房所在地发生了自然灾害如地震、洪水、海啸等,这种情况下,硬件需要重新更换,里面的服务软件也需要重新配置,恢复周期相对较长,但这个可能性比较小。
  3. 第三方服务故障:滴滴的后台架构可能使用了第三方服务或者组件。如果第三方出了问题,也可能会影响滴滴的正常运行。但出于安全性考虑,滴滴可能不会将核心业务托管给第三方,不过这个可能性也较小。
  4. 其他网络安全问题(由于滴滴已经官方说明不是受到攻击,所以均可排除其他3种推测)

个人分析:

  • 由于官方声明底层系统软件发生故障,所以排除了服务器的故障,那么滴滴这种大公司,使用的第三方组件应该也都是很大的供应商提供的, 如果是第三方组件出问题,其他使用该组件的公司也会出问题,目前看没事,所以也可以排除,那么最终来看,应该就是底层系统软件升级的时候出了问题

4.网传的k8s及解析

上面通过定位已经定位到了底层系统软件升级的时候出了问题,根据下面的网传图片,k8s符合推断

翻了一下滴滴技术公众号2023-10-17表一篇文章《滴滴弹性云基于 K8S 的调度实践》,发现滴滴技术同学在做k8s集群升级:k8s 版本的升级:介绍到从 k8s 1.12 到 1.20 跨版本升级的方案,而且单集群节点已经超过了5000个node,一旦爆炸,爆炸半径是不小

给了两个方案:

1. 替换升级方案介绍:

两个 k8s 集群,1.12 和 1.20,直接搭建新的一套新的 1.20 master 和周边组件;

1.20 集群中创建和 1.12 和等量的业务负载,也就是 sts 和 pod;

通过上游的流量管控应用决定流量分布,一开始流量都在 1.12 的 sts 的 pod中,逐步切流到 1.20 的 sts 的 pod;

有问题的时候可以快速回切流量。

2. 原地升级方案介绍:

只有一个 k8s 集群,将 master 和周边组件直接从 1.12 升级到 1.20;

逐步将集群中的 node 也就是 kubelet 从 1.12 版本升级到 1.20;

不做任何业务负载相关的操作,也就是 sts 和 pod 无需重建,其实的流量分布也不做操作,随着 node 升级流量天然就逐步从 1.12 切到 1.20 了;

有问题的时候需要部分回滚 node 的 kubelet,当出现全局性风险的时候需要全量回滚 master 和周边组件。

滴滴,从方案可落地以及成本角度最终选取了原地升级万一失控了怎么办,万一回退不成功怎么办?

至于为什么采用原地升级方案,估计还有很多细节我们不得而知,但是此种方式确实有点激进,一旦出现问题就很难处理。

5.k8s引发的思考:举一反三,怎么避免再次出现

  1. 没必要为了炫技使用最新技术,虽然k8s容器编排技术很新,能解决很多微服务部署的问题,但是如今的k8s非常重,对运维技术要求很高,一旦出现问题就很难解决。适合的技术选型才是最好的,对于一些QPS不是很高且对可用度要求不是很高的场景,一台高性能服务器上用个Docker足够了,甚至有些场景Docker容器都没必要用,一个Tomcat就解决了
  2. 鸡蛋不要放到一个篮子里,生产环境多集群部署,还是有必要的,即使是原地升级,灰度可以按生产集群灰度,灰度集群有问题另外一个集群还能顶起来。
  3. 故障演练,往往故障演练都是局部、某些模块进行停机演练,集群级别、机房级别故障演练的可以安排,毕竟是国民级应用。

6.近段时间其他平台崩溃回顾

  1. 10月23日语雀(在线文档编辑与协同工具)发生服务器故障,在线文档和官网目前均无法打开。当日 15 时,语雀发布官方声明称,“目前因网络故障,出现无法访问的情况。此故障不会影响用户在语雀存储的数据,不会引起数据丢失,我们正在紧急恢复中,再次抱歉给你带来的损失。”
  2. 11月12日下午5点多,阿里云出现异常,随之“淘宝又崩了”“闲鱼崩了”“阿里云盘崩了”“钉钉崩了”等话题相继登上微博热搜。原因是2023年11月12日17:44起,阿里云产品控制台访问及API调用出现出现使用异常,阿里云工程师正在紧急介入排查。当天晚上7点20左右恢复正常。
  3. 阿里云第二次发生在11月27日。阿里云声明称11月27日09:16起,阿里云监控发现北京、上海、杭州、深圳、青岛 、香港以及美东、美西地域的数据库产品(RDS、PolarDB、Redis等)的控制台和OpenAPI访问出现异常,实例运行不受影响。经过工程师紧急处理,访问异常问题已于当日10:58恢复。

不断频发的宕机事件,警醒着大家:技术风险保障和高可用架构设计非常重要,确保数据备份、系统容错能力,如增加存储系统的异地灾备,实现快速恢复,并进行定期的容灾应急演练,缩小运维动作灰度范围。今后,我们也要加强运维工具的质量保障与测试,杜绝此类运维 bug 再次发生。

这篇关于滴滴2023.11.27P0级故障技术复盘回顾(k8s的的错?)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/440143

相关文章

SpringBoot3实现Gzip压缩优化的技术指南

《SpringBoot3实现Gzip压缩优化的技术指南》随着Web应用的用户量和数据量增加,网络带宽和页面加载速度逐渐成为瓶颈,为了减少数据传输量,提高用户体验,我们可以使用Gzip压缩HTTP响应,... 目录1、简述2、配置2.1 添加依赖2.2 配置 Gzip 压缩3、服务端应用4、前端应用4.1 N

Java利用JSONPath操作JSON数据的技术指南

《Java利用JSONPath操作JSON数据的技术指南》JSONPath是一种强大的工具,用于查询和操作JSON数据,类似于SQL的语法,它为处理复杂的JSON数据结构提供了简单且高效... 目录1、简述2、什么是 jsONPath?3、Java 示例3.1 基本查询3.2 过滤查询3.3 递归搜索3.4

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2

Window Server创建2台服务器的故障转移群集的图文教程

《WindowServer创建2台服务器的故障转移群集的图文教程》本文主要介绍了在WindowsServer系统上创建一个包含两台成员服务器的故障转移群集,文中通过图文示例介绍的非常详细,对大家的... 目录一、 准备条件二、在ServerB安装故障转移群集三、在ServerC安装故障转移群集,操作与Ser

windos server2022的配置故障转移服务的图文教程

《windosserver2022的配置故障转移服务的图文教程》本文主要介绍了windosserver2022的配置故障转移服务的图文教程,以确保服务和应用程序的连续性和可用性,文中通过图文介绍的非... 目录准备环境:步骤故障转移群集是 Windows Server 2022 中提供的一种功能,用于在多个

k8s部署MongDB全过程

《k8s部署MongDB全过程》文章介绍了如何在Kubernetes集群中部署MongoDB,包括环境准备、创建Secret、创建服务和Deployment,并通过Robo3T工具测试连接... 目录一、环境准备1.1 环境说明1.2 创建 namespace1.3 创建mongdb账号/密码二、创建Sec

centos7基于keepalived+nginx部署k8s1.26.0高可用集群

《centos7基于keepalived+nginx部署k8s1.26.0高可用集群》Kubernetes是一个开源的容器编排平台,用于自动化地部署、扩展和管理容器化应用程序,在生产环境中,为了确保集... 目录一、初始化(所有节点都执行)二、安装containerd(所有节点都执行)三、安装docker-

如何测试计算机的内存是否存在问题? 判断电脑内存故障的多种方法

《如何测试计算机的内存是否存在问题?判断电脑内存故障的多种方法》内存是电脑中非常重要的组件之一,如果内存出现故障,可能会导致电脑出现各种问题,如蓝屏、死机、程序崩溃等,如何判断内存是否出现故障呢?下... 如果你的电脑是崩溃、冻结还是不稳定,那么它的内存可能有问题。要进行检查,你可以使用Windows 11

Nacos客户端本地缓存和故障转移方式

《Nacos客户端本地缓存和故障转移方式》Nacos客户端在从Server获得服务时,若出现故障,会通过ServiceInfoHolder和FailoverReactor进行故障转移,ServiceI... 目录1. ServiceInfoHolder本地缓存目录2. FailoverReactorinit

百度/小米/滴滴/京东,中台架构比较

小米中台建设实践 01 小米的三大中台建设:业务+数据+技术 业务中台--从业务说起 在中台建设中,需要规范化的服务接口、一致整合化的数据、容器化的技术组件以及弹性的基础设施。并结合业务情况,判定是否真的需要中台。 小米参考了业界优秀的案例包括移动中台、数据中台、业务中台、技术中台等,再结合其业务发展历程及业务现状,整理了中台架构的核心方法论,一是企业如何共享服务,二是如何为业务提供便利。