zoukankan      html  css  js  c++  java
  • 计划任务统一集中管理系统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 }
  • 相关阅读:
    cocos2d-x 团队碰面有感
    2014年3月份 月会
    2014年特种兵训练营感想
    web 的简单框架
    【实用小技巧】virtual box 虚拟机复制
    flash的Socket通讯沙箱和安全策略问题
    Codeforces Round #237 (Div. 2)
    类的静态常量数组初始化
    关于自己的成长计划
    Android
  • 原文地址:https://www.cnblogs.com/cutesnow/p/14037639.html
Copyright © 2011-2022 走看看