计划任务统一集中管理系统cronsun(替代crontab)
一、背景
crontab 是 Linux 系统里面最简单易用的定时任务管理工具,相信绝大多数开发和运维都用到过,很多业务系统的定时任务都是通过 crontab 来定义的,时间长了后会发现存在很多问题:
- 大量的 crontab 任务散布在各台服务器,带来了很高的维护成本
- 任务没有按时执行,甚至失败了很久才发现,需要重试或排查
- crontab 分散在很多集群上,需要一台一台去看日志分析,头都大了
- crontab 存在单点问题,对于不能重复执行的定时任务很伤脑筋
- 我 X,crontab 被误删了,没备份?
- 我 Q,服务器要迁移,crontab 上的历史任务都是什么鬼?问了一圈居然都不知道
- …
因此,我们非常需要一个集中管理定时任务系统,相信这也是的饱受 crontab 煎熬的运维或开发的心声。
二、安装
安装包:
cronsun
wget https://github.com/shunfei/cronsun/releases/download/v0.3.5/cronsun-v0.3.5-linux-amd64.zip (unzip解压)
mongodb
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.2.tgz (tar -xzvf 解压)
etcd
wget https://github.com/etcd-io/etcd/releases/download/v3.4.13/etcd-v3.4.13-linux-amd64.tar.gz (tar -xzvf 解压)
三、启动
1.mongodb
1 cd /opt/mongodb-v4.0.2
2
3 mkdir -p data/db
4
5 mkdir logs
6
7 touch mongodb.conf
8
9 vim mongodb.com
10
11 dbpath=/opt/mongodb-v4.0.2/data/db
12
13 logpath=/opt/mongodb-v4.0.2/logs/mongo.log
14
15 bind_ip=0.0.0.0 #默认是127.0.0.1, 多节点需要允许其他的ip连接, 所有配置为0.0.0.0,允许其他ip连接
16
17 logappend=true
18
19 fork=true
20
21 port=27017
22
23 nohup bin/mongod -f mongodb.conf > /dev/null 2>&1 &
2.etcd
$nohup ./etcd --advertise-client-urls=http://0.0.0.0:2379 --listen-client-urls=http://0.0.0.0:2379 --data-dir=/opt/etcd-v3.4.13/data >/dev/null 2>&1 &
注意:默认监听地址是127.0.0.1,允许远程连接需要改为0.0.0.0
3.cronsun
1 cd /opt/ cronsun-v0.3.5
2
3 nohup ./cronweb -conf conf/base.json > /dev/null 2>&1 &
4
5 nohup ./cronnode -conf conf/base.json > /dev/null 2>&1 &
四、添加节点
1 scp -r root@192.168.0.119:/opt/cronsun-v0.3.5 /opt
2
3 vim /opt/cronsun-v0.3.5/conf/db.json
4 "Hosts": [
5 "192.168.0.119:27017" # 这里改为mongodb监听的ip和端口
6 ],
7
8 vim /opt//cronsun-v0.3.5/conf/etcd.json
9 "Endpoints":[
10 "http://192.168.0.119:2379" # 这里改为etcd监听的ip和端口
11 ],
12
13 nohup ./cronnode -conf conf/base.json > /dev/null 2>&1 &
五、测试
打开 http://ip:7079 刷新页面 , 会发现增加节点了

测试两台机子都会执行任务
六:任务监控
发现配置好mail.json
1 {
2 "Enable": true,
3 "To": ["***@qq.com"],
4 "HttpAPI": "http://xxx.xxx.xxx.xx:xxxx/cronsun(这行改成自己写的接口,失败会自动调用,数据格式是raw的json格式)",
5 "#Keepalive": "如果此时间段内没有邮件发送,则关闭 SMTP 连接,单位/秒",
6 "Keepalive": 60,
7 "#doc": "https://godoc.org/github.com/go-gomail/gomail#Dialer",
8 "Host": "smtp.163.com",
9 "Port": 25,
10 "Username": "***@163.com",
11 "Password": "***",
12 "SSL": false,
13 "#LocalName": "LocalName is the hostname sent to the SMTP server with the HELO command. By default, 'localhost' is sent.",
14 "LocalName": ""
15 }
计划任务统一集中管理系统cronsun(替代crontab)的更多相关文章
- 替代crontab,任务计划统一集中管理系统cronsun简介
一.背景 crontab 是 Linux 系统里面最简单易用的定时任务管理工具,相信绝大多数开发和运维都用到过.在咱们公司,很多业务系统的定时任务都是通过 crontab 来定义的,时间长了后会发现存 ...
- 统一集中管理系统cronsun简介,替代crontab
一.背景 crontab 是 Linux 系统里面最简单易用的定时任务管理工具,相信绝大多数开发和运维都用到过.在咱们公司,很多业务系统的定时任务都是通过 crontab 来定义的,时间长了后会发现存 ...
- 平台级 SAAS 架构的基础:统一身份管理系统
https://my.oschina.net/bochs/blog/2248954 业内在用户统一身份认证及授权管理领域,主要关注 4 个方面:集中账号管理(Account).集中认证管理(Authe ...
- Asp.net MVC + AngularJS 统一权限管理系统(一)
背景: 之前公司内部做了不少系统,但是权限管理都是分开的:一直都想能够有一套统一管理的权限管理系统:有的时间都是一直在计划,随着时间的流逝,计划始终没有实现,也随着项目的增多而这权限管理也变得版本多样 ...
- php 执行计划任务方式之 linux crontab 执行命令
一.crond简介 crond 是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务 工具,并且会自动启动c ...
- linux系统的任务计划crontab使用详解
linux系统的任务计划crontab使用详解 其实大部分系统管理工作都是通过定期自动执行某一个脚本来完成的,那么如何定期执行某一个脚本呢?这就要借助linux的cron功能了. 关于cron任务计划 ...
- Linux系统下使用crontab添加计划任务的方法
在服务器中添加定期执行的任务,在很多情况下是非常必要的.比如,每天清理一次/tmp目录下的文件;没几分钟检查某一守护进程是否正常等等.这样计划任务就显得尤为方便.下面将介绍如何在Linux系统中 ...
- Linux任务计划命令 :crontab -e
crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond ...
- centos crontab 计划任务 设置与查看
centos 上 crontab 计划任务 ,这个版本解释的比较清晰 林涛 发表于:2017-4-27 11:11 分类:26点 标签:crontab,Linux,计划任务 36次 这个版本的cron ...
随机推荐
- kahoot
kahoot Make learning awesome! https://kahoot.it/ https://kahoot.com/ 我们的平台可让您在几分钟内轻松创建,共享和玩学习游戏或琐事测验 ...
- how to disabled prefers-color-scheme in js & dark theme
how to disabled prefers-color-scheme in js dark theme https://developer.mozilla.org/en-US/docs/Web/C ...
- how to create one single-file Web Component just using the HTML, CSS, JavaScript
how to create one single-file Web Component just using the HTML, CSS, JavaScript web components html ...
- SSO & Single Sign On
SSO & Single Sign On 单点登录 https://en.wikipedia.org/wiki/Single_sign-on https://cloud.google.com/ ...
- Nestjs 设置https
文档 只是用https import * as fs from 'fs'; import { NestFactory } from '@nestjs/core'; import { AppModule ...
- NGK算力市场,不止有动静态收益还有SPC空投!
随着数字货币交易的火热,云算力挖矿也悄然崛起.越来越多的用户开启云算力挖矿,以获取更多的收益.相较于传统的矿机挖矿,用户通过购买算力进行云挖矿,节省了购买矿机以及维护的成本.另一方面,也降低了安全风险 ...
- 【目标检测】用Fast R-CNN训练自己的数据集超详细全过程
目录: 一.环境准备 二.训练步骤 三.测试过程 四.计算mAP 寒假在家下载了Fast R-CNN的源码进行学习,于是使用自己的数据集对这个算法进行实验,下面介绍训练的全过程. 一.环境准备 我这里 ...
- 利用Metasploit 打入ThinkPHP内网...
出品|MS08067实验室(www.ms08067.com) 本文作者:dch(Ms08067实验室 SRSP TEAM小组成员) 一.利用Metasploit进行攻击的流程图 Metasploi ...
- 一次"内存泄漏"引发的血案
本文转载自一次"内存泄漏"引发的血案 导语 2017年末,手Q春节红包项目期间,为保障活动期间服务正常稳定,我对性能不佳的Ark Server进行了改造和重写.重编发布一段时间后, ...
- [C#] (原创)一步一步教你自定义控件——06,MaskLayer(遮罩层)
一.前言 技术没有先进与落后,只有合适与不合适. 本篇的自定义控件是:遮罩层(MaskLayer). 遮罩层对软件的美观与易用性上的提高是很大的,在日常使用过程中也会经常看到各种遮罩层,虽然WinFo ...