Canonical Juju 的一个奇怪编排部署

2024-06-20 03:12

本文主要是介绍Canonical Juju 的一个奇怪编排部署,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一周前的一个项目扩容出现了异常,进行了操作回滚,未对线上业务造成损失。

现象是这样的:

        通过基于 Canonical Juju-GUI 在一组节点上部署了某个组件,在把这组节点添加到集群后,有4个节点上出现了同一组件的2个instance、这4个异常节点中的3个发生了组件配置文件全部丢失的现象。

        BD的现场产品支撑粗暴地下结论为:短时间内重复点击了组件部署,导致组件配置文件被替换。

        但我认为这个论调很牵强,在时间先后上构不成必然的因果关系。

整个操作过程如下:

        20:30分开始部署业务组件,有6个节点因部署结果相应不正确而进行了第二次部署,两次部署时间间隔 34秒47毫秒;

        由于该项目同时有另一个组件配置变更,协商后决定顺序执行这2个变更操作(扩容操作为后者)。21:30分开始操作扩容变更,检查全部节点上该组件的配置文件未发现异常,按照既定计划向集群中添加Node,全部Node添加成功。大约3分钟后,开始向新的集群节点中添加磁盘,该过程中发现了有2个节点添加磁盘失败。根据控制台输出的日志,发现是这2个节点中中组件配置文件全部不存在了。

        至此,中止本次扩容操作,开始数据止损、确保数据安全。

现在,来谈谈为什么不能认同 BD 产品支撑给出的结论:

一 、驳“短时间内重复点击了组件部署”

        首先,通过回放扩容操作录像,可以确认针对故障节点所在组的全部节点进行了两次批量部署,这两次批量部署的时间间隔是 34秒47毫秒。这个时间间隔在响应时间不超过5秒的产品规格中,不能算是“短时间重复操作”。

       其次,根据Juju-deploy的日志记录,部署组件的action日志中显示,重复的两次操作事件开始时间间隔只有3秒,这个时间差和回看录像发现的34秒47毫秒相差太大。另外,重复操作波及到的14台机器中只有4台上有创建2个instance的action事件记录。

二、驳“重复部署instance时配置文件被覆盖为空”

       首先,如果是重复操作部署产生的结果,那为何同一批14个节点中只有4个产生了2个instance、且这4个节点中只有3个节点上的配置文件发生了丢失?难道不是被波及的14个节点的配置文件全部被在第二次部署时覆盖掉吗?

       其次,根据 Linux 命令行工具的实验结论,通过tar解压一个空白文件夹是不会把已有的同名文件中的文件清空的。此外,在组件的install工具脚本中并未看到对已存在的同名文件夹进行删除的语句。因此,“重复部署instance时配置文件被覆盖为空”这个论点在事实上是不成立的。

       再次,为什么节点上的配置文件丢失是在第二次部署结束后的90分钟以后、且在instance使用该配置文件的过程中发生的配置文件丢失?“重复部署instance时配置文件被覆盖为空”这个论点与既有事实自相矛盾,无法解释为什么配置文件在使用中发生了丢失。

         BD的产品支撑给出的论点根本无法解释以上两个大方向的问题中的任何一个疑问。

        接下来的3天,我作为交付方代表主持了此次项目扩容事故的全面调查,产研、交付、运维、联合售后专家委员会、项目经理一致认可的结论是:基于Juju的交付工具存在产品缺陷,当前项目中的这个交付工具版本尚未修复过已经发现的产品BUG。

       在调查过程中,根据查阅的产品BUG汇总表,发现BD的产品研发对Canonical Juju进行了自研化修改,修改后的Juju存在的一个严重缺陷是:通过这个交付平台部署软件时,软件封包时的默认配置信息会被Juju工具平台删除,但这并不是一个必然的现象,而是只有在向既有集群中扩容新节点时才会发生。这个产品缺陷,最早在2023年9月就被作为业务环境重大生产事故报告过。2024年3月又有一次作为业务环境重大生产事故被在联合售后组会上通报过。

      更可怕的是,这个问题刚刚本次扩容当天的那个组件配置变更中发生了,在本次扩容中发生了这个问题,当天经历了这个问题的产研支撑竟然没有提示这个问题、在事故发生后的原因定位过程中居然还在避重就轻地往人员操作方向引导我们的调查思路......

事件有了结论,也该总结一下工程管理中的警示与教训了:

1)在非标准化产品交付过程中,一定要指定专职的DTA和SOP执笔,要充分考虑当前工程中的工具软件的缺陷与规避问题的方式;

2)不要盲目相信产品研发和产品规划提供的“标准操作”,他们提供的工作成果只能作为参考、不能直接执行,一定要贴合运行中的项目实况进行剪裁修改;

3)要取得方案执行的主导权和话语权,争取得到高层领导在资源和人力方面的支持,未取得绝对支持前不可妄动;

4)事故发生后不要慌,要原原本本说明自己“做了什么、没做什么”,客观地描述事故发生过程

5)被指名参与项目执行方案评审的产研、交付、运维、技术专家,必须亲自登录到目标业务环境中了解业务系统使用的组件是什么、组件版本是什么、该版本的组件已知产品缺陷是什么、在当前评审的执行方案中应当注意什么问题、如何规避已知问题。

6)项目活动执行方案评审,必须严格执行三审排期制度、绝对不可走过场式地临时评审,要确保每个执行方案评审意见有事前会签、事后反馈。

        

这篇关于Canonical Juju 的一个奇怪编排部署的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

闲置电脑也能活出第二春?鲁大师AiNAS让你动动手指就能轻松部署

对于大多数人而言,在这个“数据爆炸”的时代或多或少都遇到过存储告急的情况,这使得“存储焦虑”不再是个别现象,而将会是随着软件的不断臃肿而越来越普遍的情况。从不少手机厂商都开始将存储上限提升至1TB可以见得,我们似乎正处在互联网信息飞速增长的阶段,对于存储的需求也将会不断扩大。对于苹果用户而言,这一问题愈发严峻,毕竟512GB和1TB版本的iPhone可不是人人都消费得起的,因此成熟的外置存储方案开

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

K8S(Kubernetes)开源的容器编排平台安装步骤详解

K8S(Kubernetes)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。以下是K8S容器编排平台的安装步骤、使用方式及特点的概述: 安装步骤: 安装Docker:K8S需要基于Docker来运行容器化应用程序。首先要在所有节点上安装Docker引擎。 安装Kubernetes Master:在集群中选择一台主机作为Master节点,安装K8S的控制平面组件,如AP

容器编排平台Kubernetes简介

目录 什么是K8s 为什么需要K8s 什么是容器(Contianer) K8s能做什么? K8s的架构原理  控制平面(Control plane)         kube-apiserver         etcd         kube-scheduler         kube-controller-manager         cloud-controlle

在 Windows 上部署 gitblit

在 Windows 上部署 gitblit 在 Windows 上部署 gitblit 缘起gitblit 是什么安装JDK部署 gitblit 下载 gitblit 并解压配置登录注册为 windows 服务 修改 installService.cmd 文件运行 installService.cmd运行 gitblitw.exe查看 services.msc 缘起

Solr部署如何启动

Solr部署如何启动 Posted on 一月 10, 2013 in:  Solr入门 | 评论关闭 我刚接触solr,我要怎么启动,这是群里的朋友问得比较多的问题, solr最新版本下载地址: http://www.apache.org/dyn/closer.cgi/lucene/solr/ 1、准备环境 建立一个solr目录,把solr压缩包example目录下的内容复制

Spring Roo 实站( 一 )部署安装 第一个示例程序

转自:http://blog.csdn.net/jun55xiu/article/details/9380213 一:安装 注:可以参与官网spring-roo: static.springsource.org/spring-roo/reference/html/intro.html#intro-exploring-sampleROO_OPTS http://stati

828华为云征文|华为云Flexus X实例docker部署rancher并构建k8s集群

828华为云征文|华为云Flexus X实例docker部署rancher并构建k8s集群 华为云最近正在举办828 B2B企业节,Flexus X实例的促销力度非常大,特别适合那些对算力性能有高要求的小伙伴。如果你有自建MySQL、Redis、Nginx等服务的需求,一定不要错过这个机会。赶紧去看看吧! 什么是华为云Flexus X实例 华为云Flexus X实例云服务是新一代开箱即用、体

部署若依Spring boot项目

nohup和& nohup命令解释 nohup命令:nohup 是 no hang up 的缩写,就是不挂断的意思,但没有后台运行,终端不能标准输入。nohup :不挂断的运行,注意并没有后台运行的功能,就是指,用nohup运行命令可以使命令永久的执行下去,和用户终端没有关系,注意了nohup没有后台运行的意思;&才是后台运行在缺省情况下该作业的所有输出都被重定向到一个名为nohup.o

kubernetes集群部署Zabbix监控平台

一、zabbix介绍 1.zabbix简介 Zabbix是一个基于Web界面的分布式系统监控的企业级开源软件。可以监视各种系统与设备的参数,保障服务器及设备的安全运营。 2.zabbix特点 (1)安装与配置简单。 (2)可视化web管理界面。 (3)免费开源。 (4)支持中文。 (5)自动发现。 (6)分布式监控。 (7)实时绘图。 3.zabbix的主要功能