前言

服务器上面的服务会因为各种各样的原因失败,磁盘故障,权限问题,或者是服务过载引起超时,这些都可能引起

这个在ceph里面systemctl unit 默认有个on-fail restart,默认的可能并不适合所有的场景,所以自动化的服务应该是尽量去适配你手动处理的过程,手动怎么处理的,就怎么去设置

启动分析

如果有osd失败了,一般上去会先启动一次,尽快让服务启动,然后去检查是否有故障,如果失败了,就开启调试日志,再次重启,在问题解决之前,是不会再启动了,所以这里我们的自动启动设置也这么设置

参数配置

ceph的osd的启动配置在这个配置文件

/usr/lib/systemd/system/ceph-osd@.service

默认参数:

Restart=on-failure
StartLimitInterval=30min
StartLimitBurst=30
RestartSec=20s

默认的参数意思是

在30min的周期内,如果没启动成功,那么在失败后20s进行启动,这样的启动尝试30次

这个在启动机器的时候,是尽量在osd启动失败的情况下,能够在30min分钟内尽量把服务都启动起来,这个对于关机启动后的控制是没问题的

参数解释:

StartLimitInterval不能设置太小,在osd崩溃的情况里面有一种是对象异常了,这个在启动了后,内部会加载一段时间的数据以后才会崩溃,所以RestartSec*StartLimitBurst 必须小于StartLimitInterval,否则可能出现无限重启的情况

restart的触发条件

Restart settings/Exit causes always on-success on-failure on-abnormal on-abort on-watchdog
Clean exit code or signal X X
Unclean exit code X X
Unclean signal X X X X
Timeout X X X
Watchdog X X X X

可调整项目

Restart=always就是只要非正常的退出了,就满足重启的条件,kill -9 进程也能够自动启动

在osd崩溃的情况里面有一种情况是对象异常了,这个在启动了后,内部会加载一段时间的数据以后才会崩溃,这种崩溃的情况我们不需要尝试多次重启,所以适当降低重启频率

StartLimitBurst=3
RestartSec=10s

这个设置后能够在运行的集群当中比较好的处理异常退出的情况,但是设置后就要注意关机osd osd启动的问题,一般关机的时候肯定是有人在维护的,所以这个问题不大,人为处理下就行

所以建议的参数是

Restart=always
StartLimitInterval=30min
StartLimitBurst=3
RestartSec=10s

可以根据自己的需要进行设置,这个设置下,停止osd就用systemctl 命令去 stop,然后其他的任何异常退出情况都会把osd给拉起来

总结

systemctl在服务控制方面有着很丰富的功能,可以根据自己的需求进行调整,特别是对启动条件有约束的场景,这个是最适合的

变更记录

Why Who When
创建 武汉-运维-磨渣 2017-09-06

Ceph OSD服务失效自动启动控制的更多相关文章

  1. parted会启动你的ceph osd,意外不?

    前言 如果看到标题,你是不是第一眼觉得写错了,这个怎么可能,完全就是两个不相关的东西,最开始我也是这么想的,直到我发现真的是这样的时候,也是很意外,还是弄清楚下比较好,不然在某个操作下,也许就会出现意 ...

  2. Ceph osd启动报错osd init failed (36) File name too long

    在Ceph的osd节点上,启动osd进程失败,查看其日志/var/log/ceph/ceph-osd.{osd-index}.log日志,报错如下: 2017-02-14 16:26:13.55853 ...

  3. 重启osd服务失败:Start request repeated too quickly

    背景 OS:Ubuntu 16.04 修改了osd的一些配置,修改后,需要重启osd服务才能生效.第一次重启后,配置立刻生效.再改了一些配置,重启osd服务后,配置却不再生效了.ps命令查看进程,发现 ...

  4. Ceph osd故障恢复

    1  调高osd的日志等级 加上红框那一行就可以了 osd的日志路径:/var/log/ceph/ceph-osd.3.log 注意:加上了这一行后日志会刷很多,所以要特别注意日志容量的变化,以防把v ...

  5. ElasticSearch集群未连接 无法发现节点(windows环境)以及windows环境下设置服务 不能自动启动的问题

    1.无法发现节点的错误: 试验了很多情况,但是总是无法加入集群,后来尝试了一下步骤,问题解决: 1.删除所有数据,重启:无效: 2.统一配置,全部重启,无效: 3.关闭所有防火墙,全部重启,无效: … ...

  6. 如何把TOMCAT 添加到服务中自动启动

    1.配置系统参数: JAVA_HOME:C:\Program Files\Java\jdk1.8.0_51   //本机Jdk的安装路径,已配置相关Java应用的无需再配置. CATALINA_HOM ...

  7. ceph osd 自动挂载的N种情况

    直接上干货: ceph自动挂载原理 系统启动后,ceph 通过扫描所有磁盘及分区的 ID_PART_ENTRY_TYPE 与自己main.py中写死的osd ready 标识符来判断磁盘(及其分区)是 ...

  8. SQL Server服务没有自动启动原因案例分析

    这个案例是前两天出现的,一直没有时间总结,25号凌晨4点去处理数据库的故障问题.远程连上公司的局域网,psping检查发现服务器的1433端口不通,数据库连接不上,但是主机又能ping通,登录服务器检 ...

  9. 分布式存储ceph——(5)ceph osd故障硬盘更换

    正常状态:

随机推荐

  1. centos8平台使用dnf/yum管理软件包

    一,dnf的用途 centos7开始,DNF 成为了默认的软件包管理器,同时 yum 仍然是可用的 DNF包管理器克服了YUM包管理器的一些瓶颈,提升了用户体验,内存占用,依赖分析,运行速度等方面 D ...

  2. 第二章 OSI参考模型

    一.产生背景 1.伴随着计算机网络的飞跃发展,各大厂商根据自己的协议生产出了不同的硬件和软件 2.为了实现网络设备间的互相通讯,ISO和IEEE相继提出了OSI参考模型及其TCP/IP模型 二.OSI ...

  3. QT/C++插件式框架、利用智能指针管理内存空间的实现、动态加载动态库文件

    QT.C++插件式框架.主要原理还是 动态库的动态加载. dlopen()函数.下面为动态加载拿到Plugininstance对应指针.void**pp=(void**)dlsym(handle,&q ...

  4. 【应用服务 App Service】Azure App Service 中如何安装mcrypt - PHP

    问题描述 Azure App Service (应用服务)如何安装PHP的扩展 mcrypt(mcrypt 是php里面重要的加密支持扩展库) 准备条件 创建App Service, Runtime ...

  5. Python作业1

    name = " aleX" # 1 移除 name 变量对应的值两边的空格,并输出处理结果 print(name.strip()) # 2 判断 name 变量对应的值是否以 & ...

  6. 前端小程序——js+canvas 给图片添加水印

    市场上各种各样的图片处理器有很多,那么作为程序员的我们是不是应该自己做一个呢?那就从加水印开始吧 html: <canvas id="shuiyinTest"> < ...

  7. Docker学习笔记之--安装mssql(Sql Server)并使用Navicat连接测试(环境:centos7)

    前一节演示如何使用Nginx反向代理 .net Core项目容器,地址:Docker学习笔记之-部署.Net Core 3.1项目到Docker容器,并使用Nginx反向代理(CentOS7)(二) ...

  8. jquery里面的一些方法使用

    prop("属性名");  //获取属性名 prop("属性名","属性值");  //设置属性名 change(fucntion(){  ...

  9. 三分钟带你分清Mysql 和Oracle之间的误区

    摘要:Mysql 和Oracle,别再傻傻分不清. mysql 和Oracle 在开发中的使用是随处可见的,那就简单去了解一下这俩款火的不行的数据库. 本质区别: Oracle数据库是一个对象关系数据 ...

  10. WrapperClass

    * 测试包装类的基本用法: * 包装类就是把基本属性也变成对象,方便有时候用: * 八种基本属性,其他类型类似于integer,除了int-integer和char-character:其他都是原样: ...