如何管理多台机器上的 crontab 任务

找不到分类 evilven 3个月前 (04-01) 46次浏览 未收录 0个评论 扫描二维码

如何管理多台机器上的 crontab 任务

纯手工打造每一篇开源资讯与技术干货,数十万程序员和Linuxer已经关注。

Linux技术交流QQ群:915246(七月份最新!!)

cronsun 是一个分布式任务系统,单个结点和 Linux 机器上的 crontab 近似。支持界面管理机器上的任务,支持任务失败邮件提醒,安装简单,使用方便,是替换 crontab 一个不错的选择。 cronsun 是为了解决多台 Linux 机器上crontab 任务管理不方便的问题,同时提供任务高可用的支持(当某个节点死机的时候可以自动调度到正常的节点执行)

在 Linux 机器上,我们通常用 crontab 来管理定时任务,比如指定时间重启某个服务,备份数据库,跑某些分析/统计服务等。

目前有很多任务调试系统和工具,比如:

  • Azkaban

  • Chronos

  • Airflow

  • dkron

  • swoole-crontab

  • Saturn

每个系统都有自己的特色和应用场景,如果你只想集中管理多台机器上的定时任务,可以试试 cronsun

cronsun 支持:

  • Web 界面统一管理任务

  • 任务失败重试

  • 任务失败邮件提醒

  • 多机单任务(防止单机挂掉任务不按时执行)

  • 单机任务并行数限制

  • 执行单次任务

  • 多机器严格的时间间隔任务

  • 支持安全性配置,可以限制任务脚本的后缀和执行用户

cronsun 架构:

    												          [web]
                                    |
                            ---------------------
  (add/del/update/exec jobs)|                   |(query job exec result)
                         [etcd]                 [mongodb]
                            |                        ^
                 --------------------              |
                            |        |         |              |
                         [node.1]  [node.2]  [node.n]         |
             (job exec fail)|        |         |              |
          [send mail]<-----------------------------------------(job exec result)

cronsun 主要概念:

任务

在 cronsun 中,有三种类型的的任务:

  • 普通任务,和 crontab 中的任务一样。

  • 单机单进程任务,普通的 crontab 任务是单机的,如果执行任务的机器出现问题,任务可能执行失败。cronsun 提供此任务类型是保证有多台机器可以执行一个任务,但在执行任务被执行时,只有一台机器在执行任务。

  • 一个任务执行间隔内允许执行一次,这个类型的任务和单机单进程任务类似,但限制更严格。因为多台机器间,时间可能会不一致,而某些任务要求执行的时间间隔要严格一致时,可以考虑采取这种类型。

任务分组

任务分组是为了方便管理,在添加任务时可以在任务分组里增加新的分组,查询时按分组查出相应的任务。

任务脚本

相当于 crontab 中的执行命令,复杂的任务(如 pipe)需要写成 shell 脚本。

用户

指定执行任务的用户

超时设置

超过设定的时长,cronsun 会停止执行任务,防止出问题的任务长时间占用资源。

并行数设置

设置在单个节点上面同时可执行多少个相同的任务,针对某些任务执行时间很长,但两次任务执行间隔较短时比较有用。

失败重试

任务执行失败时,重新尝试执行任务,直到任务执行成功或超过设置的次数。

定时器

相当于 crontab 中的时间规则,cronsun 中的时间规则支持到秒级,比 crontab 多支持一位,cronsun 中支持多种时间格式。一个任务可以有多个定时器,主要是方便于多个节点在不同时间点执行同一个任务。

常用时间格式:

0  1   2   3   4   5
|    |    |    |    |    |
|    |    |    |    |    +------ day of week (0 - 6) (Sunday=0)
|    |    |    |    +------ month (1 - 12)
|    |    |    +-------- day of month (1 - 31)
|    |    +---------- hour (0 - 23)
|    +------------ min (0 - 59)
+-------------- sec (0-59)
字段名 允许的值 允许的特殊字符
Seconds 0-59 * / , –
Minutes 0-59 * / , –
Hours 0-23 * / , –
Day of month 1-31 * / , – ?
Month 1-12 or JAN-DEC * / , –
Day of week 0-6 or SUN-SAT * / , – ?

星号 ( * )

星号会匹配字段中的所有值,如在小时字段用了星号,表示每个小时都会匹配。

斜线 ( / )

匹配指定的数字,如 */3 在小时字段中等于 0,3,6,9,12,15,18,21 等被 3 整除的数。

逗号 ( , )

匹配分开的值,如 1,3,4,7,8 在小时字段中表示这里面的小时会匹配。

连词符 ( – )

匹配范围,例如:1-6,意思等同于 1,2,3,4,5,6。

问题 ( ? )

在 day-of-month 或者 day-of-week 字段可代替 *。

预定格式

Entry Description Equivalent To

@yearly (or @annually)

Run once a year, midnight, Jan. 1st

0 0 0 1 1 *

@monthly

Run once a month, midnight, first of month

0 0 0 1

@weekly

Run once a week, midnight on Sunday

0 0 0 0

@daily (or @midnight)

Run once a day, midnight

0 0 0 *

@hourly

Run once an hour, beginning of hour

0 0 

节点

执行任务的机器,需要部署 cronnode。

节点分组

方便管理节点,如果在任务的定时器里选择某个节点分组,则表示任务会在这个节点分组的所有结点上运行。

故障节点

cronnode 出现问题的节点,一般情况下是 cronnode 服务挂掉,如果 etcd 的网络不好,也会临时出现故障节点。

离线节点

cronnode 服务正常关闭的结点。

正常结点

正常服务的结点。

日志

用于查询任务的执行结果,日志存储在 MongoDB 中,如果只想保存最新一段时间内的执行结果,可以使用 MongoDB 的 Capped Collections,在部署的时候创建一个名为 job_log 的 Capped Collection。

原文来自:  https://my.oschina.net/u/270037/blog/1305373

如何管理多台机器上的 crontab 任务

让您学习到的每一节课都有所收获

《Linux就该这么学》是由资深运维专家刘遄及全国多名红帽架构师(RHCA)基于最新RHEL7系统共同编写的高质量Linux技术自学教程,极其适合用于Linux技术入门教程或讲课辅助教材。

☀ 刘遄老师QQ:5604241  微信:gnu_chuan

☀ 学员助教QQ:5604674

 Linux技术交流A群(满):560843

☀ Linux技术交流B群:340829

☀ Linux技术交流C群:463590

☀ Linux技术交流D群:915246

☀ Linux技术交流E群:1663106

☀ Linux技术交流F群:1653851

☀ Linux技术交流G群:2632018(新群,火热加群中……

☀ 官方站点:http://www.linuxprobe.com

☀ 电脑在线阅读效果更佳:

http://www.linuxprobe.com/chapter-00.html

如何管理多台机器上的 crontab 任务

按住图片3秒,即可自动关注。

点击左下角查看更多热门技术


Hacking For Fun , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:如何管理多台机器上的 crontab 任务
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址