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 }
  • 相关阅读:
    jQuery 基本选择器
    JavaScriptif while for switch流程控制 JS函数 内置对象
    JavaScrip基本语法
    数据库 存储引擎 表的操作 数值类型 时间类型 字符串类型 枚举集合 约束
    数据库基础知识 管理员 用户登录授权的操作
    粘包的产生原理 以及如何解决粘包问题
    socket TCP DPT 网络编程
    2018年年终总结
    Android技术分享
    No accelerator found
  • 原文地址:https://www.cnblogs.com/cutesnow/p/14037639.html
Copyright © 2011-2022 走看看