OpenStack计算节点宕机自动撤离

这篇具有很好参考价值的文章主要介绍了OpenStack计算节点宕机自动撤离。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

关于openstack计算节点宕机时,vms自动撤离问题,官方在新版的openstack版本中,加入了新的项目专门解决该场景,但是判断还是依然存在问题,虚机容易出现双写问题。

一、场景分析
1、计算节点宕机-共享存储

openstack 后端对接比较流行的存储,也是生产环境下使用最多的,便是ceph,或者glusterfs,目前接触最多的是ceph,基于这种分布式共享存储,
可友好支持虚机热迁移,跨集群迁移等使用场景,但是宕机后,如果操作不当,也会出现故障。

记得19年在当前公司实习的时候,有一次凌晨,有台openstack生产集群(使用ceph)的计算节点出现宕机,迷迷糊糊,起来人工执行撤离操作(我们是有oncall告警电话的),但是宕机的计算节点忘记关机,导致撤离后的虚机在ceph存储端出现两个watcher,还是到早上上班时用户反馈过来的,因没有及时处理,造成二十来台虚机系统盘数据盘均损坏,修了整整三天。。还有部分无法修复,想办法弥补用户。。。。。。。

回归正题,过后我就在想,难道不能做自动撤离吗?既然都能自动告警打电话了,那为啥不连贯起来,当时想搞webhook,由于技术和时间人力成本问题,便暂时放弃了这个方向,其实生产环境是相当复杂的,我第一次接触生产环境时,在一个计算节点执行了ip a 命令,输出一堆网口(不包括vm的tab),瞬间蒙圈,又加上各种路由,当然现在看来在基础不过。

说明下生产环境,存储网络、管理网络、隧道网络,一个计算节点上主要有这三种网络,当时使用的架构可以说纯三层的,虚机存在跨leaf不通问题(这个原因导致,宕机撤离过于麻烦),计算节点上是比较传统的方案,两个PF,各srov虚拟出两个VF, 共4个vf,两个交叉绑定,一个是存储,一个是隧道,千兆做管理,这也是为啥执行ip a后看到一堆网口。

这样架构的计算节点宕机,要想更快的恢复虚机,还是比较麻烦(因为历史遗留原因,虚机的metadata中部分元数据缺失,就导致撤离后,虚机存在飘逸到其他leaf问题),而且还会出现大规格的虚机撤离失败问题,需要重置状态,再次撤离。。。。这就造成宕机恢复的时间变长。

2、自动撤离方案一

根据各种缺陷,最终在20年初 开发了一套撤离功能(仍需要人工介入),计算节点宕机后,人工在页面上点击撤离,这样的撤离便非常快速,精准。

快速: 首先是通过强改nova.instance数据库,修改虚机所在的节点,来完成虚机撤离,这个已经自动化了,只需要点击一下,便批量修改虚机信息,同步更新port所在的host,之后硬重启,完成撤离,整个执行时间不超过5分钟。

精准: 精准主要是 每个计算预留一台同配置(如内存大小)的计算节点,宕机时,点击撤离,直接选中改节点,所有受影响的虚机都会撤到该节点。

3、自动撤离方案二

第一种方案跑了一年,年终总结时,发现还是需要人工介入,凌晨宕机时,起来,打开电脑,连网等较为耗时,整个过程甚至超过10分钟,觉得不完美。。。。
便开发了新的撤离方案,自动检测宕机,自动撤离,主要是通过nova-compute 的state,以及计算节点网络联通性,异常计算节点上的虚机的联通性来判断是否真的宕机,事实上生产环境场景是非常复杂的,特别是一些不可抗力因素,如服务器磁盘背板异常,会导致系统夯死,但是不影响运行的虚机,或者docker夯死,内存故障等。
这种方案也不用考虑存储网络联通性、隧道、管理等,因为21年新集群换了架构,三网合一,所以便定制般思考出如下解决方案,该程序整个撤离过程不超过2分钟,期间包括自动给管理员、用户发送短信,邮件,存储宕机记录等操作,以及虚机撤离恢复后的信息通知,如果撤离失败再打电话给管理员。
该方案已经稳定在生产集群跑了1年多,从未出现过误判问题,且执行次数超过30次(生产集群服务器规模较大,且异地集群数量较多 ),现在分享给大家,即使大家是存储、管理、计算分开的网络,稍微思考改动也是支持的。

4、方案二 细节

直通车:github
mail: 1300042631@qq.com

代码中的一些细节,因涉及敏感,我直接屏蔽了,如自动打电话接口,发短信接口,关机接口,这些都是非常容易实现的。
后面会分享。ironic对接ceph-iscsi-gw。及裸金属云物理机 无盘启动方案。可以解决云物理机横向扩展及交付效率,特别是数据盘(本地磁盘)改配,因涉及到价格问题,每改动一次就很耗人力。

OpenStack计算节点宕机自动撤离在这里插入图片描述


### auto_check_compute_down
#### author: mmwei3
#### date: 2021/12/12

#### Instructions
```angular2html
This is openstack compute node ha!
func: 
1. auto check compute nodes health state, down or up, 

2. if check first down and Compute Status is disable:
   The compute node management network detected for fping tools.
       Start check vms for the down state compute node:
           if compute nodes management network and vms is Unreachable:
              Start an evacuation task for all active status vms on the compute node.
              And auto Send SMS and email notifications to all affected users about vms downtime
           else :
               Do nothing

Install
1. Configuration cmpha.conf

[ser]
OS_TENANT_NAME=admin
OS_PROJECT_NAME=admin
OS_USERNAME=admin
OS_PASSWORD=
OS_AUTH_URL=http://x.x.x.x:35357/v3
OS_DEFAULT_DOMAIN=Default
INTERVAL=20  # Interval of each probe

2. Run Docker
docker run -d --tty=true \
--net=host --restart=always \
-v /etc/localtime:/etc/localtime:ro \
--name=auto_evacuate  pwxwmm/openstack_compute_evacuate:v1.0.0


3. Or another way to do it

Use linux systemctl managerment cmpha service
configuration cmpha.service

Usage: /etc/init.d/$DAEMON_NAME {start|stop|restart|status}
# systemctl start cmpha.service
# systemctl stop cmpha.service
# ststemctl restart cmpha.service


OpenStack计算节点宕机自动撤离文章来源地址https://www.toymoban.com/news/detail-496848.html

# 1) 首先auto_evacuate容器运行后,相关的日志可参考 /var/log/cmpha.log
# 2)检测流程:
# ① 第一步先检测nova_compute服务的状态,如果该服务处于维护(disable)状态,则忽略,不会对其进行监控
# ② 第二步检测处于为enable的nova_compute的服务状态,如果状态为up,则仍会忽略,不会对其监控
# ③ 第三步若检测nova_compute状态为down,则获取其节点上的所有虚机的IP以及宿主机的管理IP
# ④ 第四步通过fping操作,检测其获取到的IP是否全部不通,如果有一个alive状态的,则忽略,不会对其监控
# ⑤ 第五步若发现获取到的ip均不通,则判断该机器未宕机状态,将该机器禁用(disable),将预留节点enable
# ⑥ 第六步通过ipmitool接口关闭宿主机
# ⑦ 第七步发送宕机短信、邮件至虚机用户、使用人,讯飞云管理员,并将宕机信息记录。
# ⑧ 第八步开始自动撤离,确保每台虚机均被执行了撤离操作(仅对状态为ACTIVE和ERROR的虚机)
# ⑨ 第九步判断撤离是否成功,通过判断撤离后的虚机当前所在的节点host是否和宕机前的host一致:
#    若一致,则自动撤离失败,通过发短信和打电话告知管理员人工介入处理;
#    若不一致,则自动撤离成功,通过发短信告知管理员撤离成功。

到了这里,关于OpenStack计算节点宕机自动撤离的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 云计算基础之安装部署——CentOS 7.0 上使用 Packstack 安装单节点 OpenStack

    一、安装 CentOS 7.0 操作系统 配置要求如下: 1,在 VMware Workstation 中新建 CentOS 64 位虚拟机。为虚拟机分配至少 4GB 内存,并在处理器配置中选中“虚拟化 Intel VT-x/EPT 或 AMD-V/RVI”。虚拟硬盘大小为 100GB,选择CentOS-7.0-1406-x86_64-DVD.iso 作为安装光盘。为虚拟机配置一块网卡,网络连

    2024年02月07日
    浏览(37)
  • 计算节点systemctl status openstack-nova-compute.service起不来的解决方案

    报错 [root@compute ~]# systemctl start libvirtd.service openstack-nova-compute.service Job for openstack-nova-compute.service failed because the control process exited with error code. See \\\"systemctl status openstack-nova-compute.service\\\" and \\\"journalctl -xe\\\" for details. ● openstack-nova-compute.service - OpenStack Nova Compute Server    Loaded: loade

    2024年02月03日
    浏览(29)
  • OpenStack+Ceph集群 计算节点执行nova list提示ERROR (CommandError): You must provide a user name/id

    排错的时候在计算节点执行了 nova list 查看实例情况 结果提示 看来是没有配置keystone鉴权信息的原因 执行 可以打印信息了,虽然还是ERROR的…

    2024年02月11日
    浏览(35)
  • 记一次MySQL从节点服务器宕机重启后,从节点出现主键冲突异常的处理

    MySQL 5.7 非GTID模式多线程复制。 某MySQL数据库从节点因故障宕机(因故障直接宕机,非正常关闭),重启之后发现复制状态异常,show slave的结果中Slave_SQL_Running为No,错误代码为1062 error code,从系统表performance_schema.replication_applier_status_by_worker以及error log中显示某条数据因为已

    2024年02月19日
    浏览(35)
  • ubuntu20环境下使用DevStack安装Openstack-Wallaby(单节点、多节点)

    ubuntu20采用DevStack部署OpenStack - wallaby 1.1 镜像源 sudo vim /etc/apt/sources.list 1.2 pip源 sudo mkdir ~/.pip sudo vim ~/.pip/pip.conf 1.3 安装依赖包 更新并安装依赖包 2.1 添加 stack 用户 2.2 设置代理 2.3 下载devstack,使用 -b 指定版本 git clone https://opendev.org/openstack/devstack.git -b stable/wallaby 2.4 进入de

    2024年02月05日
    浏览(24)
  • ubuntu20.04手动安装Openstack YOGA版本(双节点)

    当一个运维高手初次踏入openstack的世界的时候,首先面临的问题就是快速安装一个openstack然后玩起来。 但是openstack安装过于庞杂,手动安装的学习路线比较漫长。自动化安装工具往往跑到一半就报错。 自动安装openstack往往有一下几个坑: 网络问题。openstack常见的安装工具,

    2024年02月02日
    浏览(40)
  • windows下tomcat无故宕机,检测http或https服务,并自动重启Tomcat服务

    把项目发布到windows服务器中,如tomcat工程不稳定,会有无故宕机的问题。如果通过程序无法解决,并且重启tomcat服务能够生效的话,可以做一个自动检测并重启的脚本。 脚本通过检测tomcat对应的工程链接(http或者https)是否已经正常启动,如果未正常启动,则重启tomcat服务

    2024年02月14日
    浏览(34)
  • 【云计算OpenStack-OpenStack Queens版本】基于OpenStack的云计算环境搭建

    OpenStack云计算环境的搭建是基于虚拟机的多节点Linux网络环境基础上搭建起来的,所以需要我们先搭建好集群环境。(基础环境搭建参考:基于虚拟机的多节点Linux网络环境搭建) 操作系统:CentOS7 controller节点IP:192.168.43.199 compute节点IP:192.168.43.74 neutron节点IP:192.168.43.180 说

    2024年02月04日
    浏览(37)
  • 【收藏级】88条关于OpenStack命令的手册(常看常新)

    大家好,我是无名小歌。 按照目录查询相关命令、 按照目录查询相关命令 、 按照目录查询相关命令 (常看常新)(常看常新)(常看常新) 相信大家都有过这样的经历哈,就是我们在操作OpenStack时,一般为了操作方便都会使用Dashboard web可视化界面上对OpenStack进行操作,如

    2024年02月02日
    浏览(20)
  • Openstack云计算(六)Openstack环境对接ceph

    (1)客户端也要有cent用户:   (2)openstack要用ceph的节点(比如compute-node和storage-node)安装下载的软件包:   或则:每个节点安装 clients(要访问ceph集群的节点):   (3)部署节点上执行,为openstack节点安装ceph:   (4)客户端执行 1 (5)create pools,只需在一个ceph节点上

    2024年02月20日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包