- A+
摘要
cronsun 是一个分布式任务系统,单个节点和 Linux 机器上的 crontab 近似。是为了解决多台 Linux 机器上 crontab 任务管理不方便的问题,同时提供任务高可用的支持(当某个节点死机的时候可以自动调度到正常的节点执行)。支持界面管理机器上的任务,支持任务失败邮件提醒,安装简单,使用方便,是替换 crontab 一个不错的选择。
背景
crontab是linux系统下最普遍常用的定时任务管理工具,好多业务系统的定时任务都是通过crontab来定义的,感觉是很爽。但是随着业务服务器不停地扩容到多台时,问题来了:
- crontab 任务分布到各个服务器,有时修改个脚本得逐台服务器更新,维护成本大大提高了
- 任务到底执行成功了没有,有些失败了很久才发现,排查还得一台一台的登录服务器查看日志
- 服务器迁移,最扯淡的是脚本都不知道谁弄的,太坑了
基于上述,我们引进了cronsun,cronsun的部署架构如下:
安装
1:安装MongoDB
下载地址:https://www.mongodb.com/download-center#community
下载完安装包,并解压 tgz。
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6.tgz tar -zxvf mongodb-linux-x86_64-3.0.6.tgz mv mongodb-linux-x86_64-3.0.6/ /usr/local/mongodb
MongoDB 的可执行文件位于 bin 目录下,所以可以将其添加到 PATH 路径中:
export PATH=<mongodb-install-directory>/bin:$PATH
<mongodb-install-directory>为你 MongoDB 的安装路径。如本文的 /usr/local/mongodb
创建数据库目录
MongoDB的数据存储在data目录的db目录下,但是这个目录在安装过程不会自动创建,所以你需要手动创建data目录,并在data目录中创建db目录。
以下实例中我们将data目录创建于根目录下(/)。
注意:/data/db 是 MongoDB 默认的启动的数据库路径(--dbpath)。
mkdir -p /data/db
命令行中运行 MongoDB 服务 你可以再命令行中执行mongo安装目录中的bin目录执行mongod命令来启动mongdb服务。 注意:如果你的数据库目录不是/data/db,可以通过 --dbpath 来指定。 $ ./mongod 2015-09-25T16:39:50.549+0800 I JOURNAL [initandlisten] journal dir=/data/db/journal 2015-09-25T16:39:50.550+0800 I JOURNAL [initandlisten] recover : no journal files present, no recovery needed 2015-09-25T16:39:50.869+0800 I JOURNAL [initandlisten] preallocateIsFaster=true 3.16 2015-09-25T16:39:51.206+0800 I JOURNAL [initandlisten] preallocateIsFaster=true 3.52 2015-09-25T16:39:52.775+0800 I JOURNAL [initandlisten] preallocateIsFaster=true 7.7
MongoDB后台管理 Shell 如果你需要进入MongoDB后台管理,你需要先打开mongodb装目录的下的bin目录,然后执行mongo命令文件。 MongoDB Shell是MongoDB自带的交互式Javascript shell,用来对MongoDB进行操作和管理的交互式环境。 当你进入mongoDB后台后,它默认会链接到 test 文档(数据库): $ cd /usr/local/mongodb/bin $ ./mongo MongoDB shell version: 3.0.6 connecting to: test Welcome to the MongoDB shell. ……
由于它是一个JavaScript shell,您可以运行一些简单的算术运算:
> 2+2 4 > 3+6 9
现在让我们插入一些简单的数据,并对插入的数据进行检索:
> db.runoob.insert({x:10}) WriteResult({ "nInserted" : 1 }) > db.runoob.find() { "_id" : ObjectId("5604ff74a274a611b0c990aa"), "x" : 10 } >
第一个命令将数字 10 插入到 runoob 集合的 x 字段中。
MongoDb web 用户界面
MongoDB 提供了简单的 HTTP 用户界面。 如果你想启用该功能,需要在启动的时候指定参数 --rest 。
$ ./mongod --dbpath=/data/db --rest
MongoDB 的 Web 界面访问端口比服务的端口多1000。
如果你的MongoDB运行端口使用默认的27017,你可以在端口号为28017访问web用户界面,即地址为:http://localhost:28017。
当然,生产环境还是建议集群模式
2:安装Etcd3
etcd 是一个高可用的 Key/Value 存储系统,主要用于分享配置和服务发现。etcd 的灵感来自于 ZooKeeper 和 Doozer,
侧重于:
简单:支持 curl 方式的用户 API (HTTP+JSON)
安全:可选 SSL 客户端证书认证
快速:单实例可达每秒 1000 次写操作
可靠:使用 Raft 实现分布式
系统环境:CentOS release 6.5 x64
安装步骤:
wget https://github.com/coreos/etcd/releases/download/v3.0.6/etcd-v3.0.6-linux-amd64.tar.gz
tar -xvf etcd-v3.0.6-linux-amd64.tar.gz
cd etcd-v3.0.6-linux-amd64
直接运行命令 ./etcd 就可以启动服务端了,非常简单:
默认使用2379端口为客户端提供通讯, 并使用端口2380来进行服务器间通讯。
查看当前安装的版本:
[root@node01 etcd-v3.0.6-linux-amd64]# ./etcd --version etcd Version: 3.0.6 Git SHA: 9efa00d Go Version: go1.6.3 Go OS/Arch: linux/amd64
3:安装cronsun
下载cronsun,下载地址为https://github.com/shunfei/cronsun
分别修改conf目录下的配置文件db.json.sample和etcd.json.sample为db.json和etcd.json,分别对应修改mongoDB和etcd的实际地址。
启动web:./cronweb -conf conf/base.json
启动node:./cronnode -conf conf/base.json
访问前台:http://x.x.x.x:7079/ui/
4:功能
部署完成后,访问前台就能看到cronsun管理WEB界面了,如下图:
Exec result:
job:
Node:
- 安卓客户端下载
- 微信扫一扫
- 微信公众号
- 微信公众号扫一扫