当前位置: 首页 > news >正文

云计算节点故障自动化运维服务设计

此文已由作者王盼授权网易云社区发布。

欢迎访问网易云社区,了解更多网易技术产品运营经验~


现状

  • 计算节点发生磁盘损坏等数据无法恢复的异常时,节点上的云主机系统盘无法恢复,导致云主机只能被清理重建

  • 计算节点宕机但磁盘数据可用时,重启即可恢复所有云主机的运行

  • 计算节点多次宕机(或一段时间内频繁宕机),则需要迁移所有云主机或者直接清理重建,云硬盘需要迁移到其他cinder-volume存储服务节点

一般来说重建过程比较耗时,并且云主机数据盘数据会全部丢失;另外采用本地file镜像启动的云主机离线或者在线迁移比较耗时并大类占用物理机硬盘和网络IO,会进一步加重计算节点负载,增大宕机可能性,实际情况下迁移操作的可执行性大打折扣。

另外有一些对我们自动化恢复流程有利的功能或者设备已经逐步上线到新建机房,因此可以考虑在这些机房实施相关的自动化恢复方案。比如义桥机房服务器已经全部配备远程管理卡,并且基于ceph存储作为系统盘+云硬盘的云主机也已经上线到该机房,这是我们实施该方案的基础。基于ceph存储后端的云主机在异常恢复过程中,没有数据的拷贝,不会占用硬盘和网络IO,因此恢复速度较快,可以做到几秒内在正常节点恢复运行(不包含云主机操作系统启动时间),相比现在的直接下线无法恢复或者数小时的更换硬件耗时,是对云主机SLA相当大的提升。

需求

  • 保证异常节点上所有被标记为需要恢复的云主机、云硬盘资源被正确恢复(处理过程中本进程退出其他进程可以继续)

  • 把所有被处理的资源记录在案(资源id、所在节点、处理时间、调用nova/cinder服务的request-id、处理状态等)

  • 保证异常处理服务本身的高可用

场景

用户创建云主机

用户创建云主机时指定宕机恢复策略,目前有三种:

  • null:不做处理,节点下线之后残留在数据库

  • 恢复:在其他正常节点恢复重建

  • 删除:直接删除

节点首次异常

首次异常之后要尝试重启节点(上面的云主机、云硬盘不做特殊处理),但节点已自动重启的除外,并要分析异常原因,找到原因并可以修复的软硬件异常,则不需要记录到节点异常次数中,否则需要记录在案,用做下次异常时的处理依据,记录前未找到原因,但事后找到的,需要从异常记录中删除该次记录。

节点多次异常

多次异常节点需要做下线处理(多次异常包含首次异常后重启失败的情况),节点上的云主机需要根据创建时指定的宕机处理策略来执行相应的操作,云硬盘则一律迁移到其他正常服务的cinder-volume节点(并不会实际的迁移数据,对用户使用没有任何影响),处理过的云主机、云硬盘要记录在案,便于事后查验。

方案

本方案只是初步想法,还需要在开发过程中继续完善,尤其是服务高可用部分,以及与哨兵系统的交互部分,会对本服务的设计造成较大影响。

依赖

  • 被恢复的云主机需使用ceph启动盘+ceph云硬盘

  • nova、cinder支持把服务强制设置为down状态(cinder可选,nova必须支持,否则需要等待超时变成down才可以执行云主机的宕机恢复操作)

  • 哨兵系统异常主动通知机制(建议),或者哨兵系统提供api供我们轮询节点状态

  • 哨兵系统提供接口可强制重启和下电节点

后续

  • L3节点宕机自动化处理流程

  • 动态资源调度功能:可根据节点负载动态均衡云主机分布

  • 节电省成本:可将空闲节点云主机迁移之后下电节点


云硬盘是网易云提供多种硬件介质的块存储设备,用户可以根据实际生产环境,灵活选择云硬盘类型和规格大小,弹性地创建、删除、挂载、卸载、扩容云硬盘。


更多网易技术、产品、运营经验分享请点击。

相关文章:
【推荐】 Android App的破解技术有哪些?如何防止反编译?
【推荐】 收集、分析线上日志数据实战——ELK


相关文章:

  • Redis 中的布隆过滤器
  • git操作:在CentOS7上面搭建GitLab服务器
  • windows下redis 开机自启动
  • SpringBoot系列: Actuator监控
  • JavaScript常用八种继承方案
  • 20172313 2018-2019-1 《程序设计与数据结构》课堂测试修改报告
  • 使用fiddler抓取手机上的HTTPS包
  • 云栖科技评论第76期:车用半导体混战 中国怎么战?
  • 兼容性总结
  • 运维技术(一)用docker安装elk之CentOS7.4
  • 时间复杂度分析经典问题——最大子序列和
  • Android Studio踩过的坑
  • 细说Redis(一)之 Redis的数据结构与应用场景
  • Python变量的相互转换
  • 2018.10.23-dtoi-1770不设找零No Change (nochange)
  • 【comparator, comparable】小总结
  • angular组件开发
  • Bytom交易说明(账户管理模式)
  • CSS进阶篇--用CSS开启硬件加速来提高网站性能
  • Iterator 和 for...of 循环
  • JavaScript 是如何工作的:WebRTC 和对等网络的机制!
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • Python代码面试必读 - Data Structures and Algorithms in Python
  • ubuntu 下nginx安装 并支持https协议
  • 罗辑思维在全链路压测方面的实践和工作笔记
  • 世界上最简单的无等待算法(getAndIncrement)
  • 推荐一个React的管理后台框架
  • 微信端页面使用-webkit-box和绝对定位时,元素上移的问题
  • Salesforce和SAP Netweaver里数据库表的元数据设计
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • 第二十章:异步和文件I/O.(二十三)
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • ​​​​​​​sokit v1.3抓手机应用socket数据包: Socket是传输控制层协议,WebSocket是应用层协议。
  • ​ubuntu下安装kvm虚拟机
  • #Ubuntu(修改root信息)
  • #单片机(TB6600驱动42步进电机)
  • #在线报价接单​再坚持一下 明天是真的周六.出现货 实单来谈
  • (16)UiBot:智能化软件机器人(以头歌抓取课程数据为例)
  • (WSI分类)WSI分类文献小综述 2024
  • (二)JAVA使用POI操作excel
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理 第13章 项目资源管理(七)
  • (五)网络优化与超参数选择--九五小庞
  • (原創) 如何優化ThinkPad X61開機速度? (NB) (ThinkPad) (X61) (OS) (Windows)
  • (转)EOS中账户、钱包和密钥的关系
  • .apk文件,IIS不支持下载解决
  • .NET 8.0 发布到 IIS
  • .net core 客户端缓存、服务器端响应缓存、服务器内存缓存
  • .NET Micro Framework初体验
  • .net refrector
  • .NET 除了用 Task 之外,如何自己写一个可以 await 的对象?
  • .NET/ASP.NETMVC 大型站点架构设计—迁移Model元数据设置项(自定义元数据提供程序)...
  • [BPU部署教程] 教你搞定YOLOV5部署 (版本: 6.2)
  • [C#]获取指定文件夹下的所有文件名(递归)
  • [C/C++]数据结构 循环队列
  • [CUDA 学习笔记] CUDA kernel 的 grid_size 和 block_size 选择