zoukankan      html  css  js  c++  java
  • Ceph OSD服务失效自动启动控制

    前言

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

    这个在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
  • 相关阅读:
    K8s 使用 nfs-client-provisioner
    MySQL IF CASE 例子
    Nginx 限速
    Python 元组操作
    Python if, while,for,continue,break,三目运算符
    Centos7 安装 pyenv
    MySQL 查看大事务
    Tomcat 修改日志路径及日志分割
    游戏攻略 美少女万华镜5
    自建远程桌面过程 vnc + frp
  • 原文地址:https://www.cnblogs.com/zphj1987/p/13575442.html
Copyright © 2011-2022 走看看