🙊
关于作者
  • 个人简历
  • 联系作者
  • 运维日常记录
    • RAID 磁盘阵列
    • MBR 与 GPT 分区
    • Linux 命令行判断GPT和MBR分区
    • CentoS 7 系统 扩容根分区
  • Linux运维学习笔记
    • 计算机网络基础知识
    • Linux 系统启动过程
    • Linux 命令基本格式
    • Linux 文件删除原理
    • Linux 目录结构说明
    • Linux 查看命令帮助信息
    • Linux Yum 命令
    • Linux Apt 命令
  • Linux 运维管理
    • Linux 硬件管理
    • Linux 软件管理
    • Linux 磁盘管理
    • Linux 系统管理
    • Linux 网络管理
    • Linux 用户和组管理
    • Linux 文件与目录管理
    • Linux 文件压缩与解压缩管理
    • Linux SSL证书自动更新管理
  • 运维环境搭建
    • CentOS 7 安装与优化
    • CentOS 安装高版本Node.js
    • CentOS 升级安装Python2.7.X
    • CentOS 安装 Python3.8.X
    • CentOS 安装 PHP7.4.X
    • CentOS 安装 Mysql 8.0
    • CentOS 安装 Zabbix 5.0
    • Windows Server 部署 IIS
    • Cronsun 任务管理器部署
    • Teltport 堡垒机部署
    • Jump Server 堡垒机搭建及使用
    • CI & CD 持续集成部署
    • ELK6.5.0+Filebeat 日志系统部署
    • Lustre 分布式并行文件系统部署
  • 系统安全加固
    • Linux 操作系统加固
    • Windows 操作系统安全加固
    • Password 安全加固
    • OpenSSL 安全加固
    • NFS 服务安全加固
    • Rsync 服务安全加固
    • IIS 服务安全加固
    • PHP 语言环境安全加固
    • Apache 服务安全加固
    • Nginx 服务安全加固
    • Tomcat 服务安全加固
    • MySQL 服务安全加固
    • PostgreSQL 服务安全加固
    • Redis 服务安全加固
    • MongoDB 服务安全加固
    • 暴力破解攻击和防御
  • 云原生运维教程
    • Docker 理论
    • Docker 基本架构
    • Docker 基本概念
    • Docker 基本使用
      • 容器
      • 镜像
      • 仓库
    • Docker 存储
    • Docker 网络
    • Docker 安装
  • Linux 系统故障排查
    • Linux 系统重置密码方法
    • Linux 系统误操作修改目录权限为 777 修复方法
  • Windows 系统故障排查
    • Windows 和 Windows Server 中启用/禁用 SMBv1、SMBv2 和 SMBv3
    • Windows10建立映射网络驱动器报错,无法挂载共享文件系统,解决办法
  • 运维工具使用
    • 常用 Git 命令简介及使用
    • 常用 SVN 命令简介及使用
    • 常用 Vi / Vim 文本编辑工具简介及使用
    • 国内常用加速源使用及配置
    • 软碟通制作U启动和再生龙恢复Linux系统及备份
    • 常用JetBrains系列IDE快捷键
  • 中间件教程学习
    • Nginx 极简教程
    • Nginx 安装
    • Nginx 配置
    • Nginx 问题集
    • Mysql 教程
    • Mysql 运维
    • Mysql 原理
    • Redis 教程
    • Redis 持久化
    • Redis 复制
    • Redis 哨兵
    • Redis 集群
    • Redis 运维
    • PostgreSQL 教程
    • H2 教程
    • SqLite 教程
    • 数据库中间件 flyway
  • Nginx 入门教程
  • MySQL 入门教程
  • Nosql 数据库
  • 常用工具快捷键
    • Windows10常用快捷键大全
  • Group 1
由 GitBook 提供支持
在本页
  • 引言
  • 项目状态
  • cronsun特性:
  • 部署对象说明
  • 程序名称
  • 程序架构
  • 部署位置
  • 项目开源地址
  • 部署操作
  • 环境准备
  • 单节点安装etcd服务
  • 单节点mongodb的安装
  • 部署 cronsun 任务管理器
  • 添加节点
  • 程序启动
  • 启动web
  • 启动node
  • 访问web页面
  • 节点管理
  • 添加任务
  • 告警配置

这有帮助吗?

  1. 运维环境搭建

Cronsun 任务管理器部署

上一页Windows Server 部署 IIS下一页Teltport 堡垒机部署

最后更新于3年前

这有帮助吗?

博客作者:联系请,搬运不易,希望请作者喝咖啡,可以点击

引言

cronsun 是一个分布式任务系统,单个节点和 *nix 机器上的 crontab 近似。支持界面管理机器上的任务,支持任务失败邮件提醒,安装简单,使用方便,是替换 crontab 一个不错的选择。

cronsun 是为了解决多台 *nix 机器上crontab 任务管理不方便的问题,同时提供任务高可用的支持(当某个节点死机的时候可以自动调度到正常的节点执行)。cronsun 和 、、 这些不是同一类型的。

项目状态

cronsun已经在线上几百台规模的服务器上面稳定运行了一年多了,虽然目前版本不是正式版,但是我们认为是完全可以用于生产环境的。强烈建议你试用下,因为它非常简单易用,同时感受下他的强大,相信你会喜欢上这个工具的。

cronsun特性:

  • 方便对多台服务器上面的定时任务进行集中式管理

  • 任务调度时间粒度支持到秒级别

  • 任务失败自动重试

  • 任务可靠性保障(从N个节点里面挑一个可用节点来执行任务)

  • 简洁易用的管理后台,支持多语言

  • 任务日志查看

  • 任务失败邮件告警(也支持自定义http告警接口)

  • 用户验证与授权

部署对象说明

程序名称

Cronsun任务管理器 MongoDB非关系性数据库 Etcd3键值存储仓库

程序架构

Cronsun的重要组件:Cronsun 主要有 3 个主件,都是通过 etcd 通讯的。cronnode 负责节点的分组及节点的状态,croeweb 是管理任务的、执行结果都可以在上面看

部署位置

服务器别名

用户名

部署目录

VMware测试机

root

/usr/local/cronsun-v0.3.5/

/usr/lib/systemd/system/etcd.service

/usr/local/mongodb

项目开源地址

部署操作

环境准备

sed -i 's/ONBOOT=on/ONBOOT=yes/g' /etc/sysconfig/network-scripts/ifcfg-ens33 #配置网络
service network restart #重启网络
yum -y install vim unzip net-tools wget zip bash-completion java*

单节点安装etcd服务

下载安装包,下载地址:https://github.com/etcd-io/etcd/releases

wget https://github.com/etcd-io/etcd/releases/download/v3.3.13/etcd-v3.3.13-linux-amd64.tar.gz

解压文件

tar -zxvf etcd-v3.3.13-linux-amd64.tar.gz
cd etcd-v3.3.13-linux-amd64

目录下有两个可执行文件etcd 和 etcdctl

cp etcd /usr/bin/
cp etcdctl /usr/bin/

配置服务

vim /usr/lib/systemd/system/etcd.service (添加以下内容)
[Unit]
Description=Etcd Server
After=network.target
[Service]
Type=simple
WorkingDirectory=/var/lib/etcd/
EnvironmentFile=-/etc/etcd/etcd.conf
ExecStart=/usr/bin/etcd
[Install]
WantedBy=multi-user.target

创建工作文件夹

mkdir -p /var/lib/etcd && mkdir -p /etc/etcd
vim /etc/etcd/etcd.conf (添加以下内容)
#[member]
ETCD_NAME=default
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"
ETCD_ADVERTISE_CLIENT_URLS=
http://0.0.0.0:2379

注意:默认监听地址是127.0.0.1,允许远程连接需要改为0.0.0.0

启动etcd服务

systemctl daemon-reload && systemctl enable etcd.service && systemctl start etcd.service

测试etcd服务状态:

etcdctl cluster-health
cd /root

单节点mongodb的安装

单节点mongodb的安装

wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.11.tgz
mkdir /usr/local/mongodb
tar -xf mongodb-linux-x86_64-4.0.11.tgz
cp -r mongodb-linux-x86_64-4.0.11/bin /usr/local/mongodb
cd /usr/local/mongodb
mkdir -p etc log data/db   #配置文件目录 日志目录 存放数据

配置文件:

vim /usr/local/mongodb/etc/mongodb.conf
logpath=/usr/local/mongodb/log/mongodb.log   #指定日志文件名
dbpath=/usr/local/mongodb/data/db            #指定数据库目录
logappend=true                               #日志为 追加方式记录
fork=true                                    #服务以守护进程的方式进行
bind_ip=0.0.0.0        #修改运行的ip,默认是127.0.0.1, 多节点需要允许其他的ip连接, 所以配置为0.0.0.0,允许其他ip连接
port=27017             #修改运行的端口号
/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/etc/mongodb.conf #指向配置文件执行bin目录下的快捷方式
netstat -ntuap | grep mongod #查询服务是否启动

MongoDB 的可执行文件位于 bin 目录下,所以可以将其添加到 PATH 路径中:

export PATH=<mongodb-install-directory>/bin:$PATH

<mongodb-install-directory> 为MongoDB 的安装路径,如本文档的 /usr/local/mongodb

部署 cronsun 任务管理器

Cronsun下载地址: https://github.com/shunfei/cronsun/releases

wget https://github.com/shunfei/cronsun/releases/download/v0.3.5/cronsun-v0.3.5-linux-amd64.zip
unzip cronsun-v0.3.5 && mv cronsun-v0.3.5 /usr/local/

解压后修改 conf 目录下的配置文件:db.json 和 etcd.json,分别修改 MongoDB 和 etcd 的实际地址。

vim /usr/local/cronsun-v0.3.5/conf/etcd.json
{
 "Endpoints":[
 "http://10.88.216.18:2379"    #这里修改的是etcd服务的地址和端口
 ],
 "Username":"",
 "Password":"",
 "#DialTimeout":"单位秒",
 "DialTimeout": 2
}
vim /usr/local/cronsun-v0.3.5/conf/db.json
{
 "Hosts": [
 "10.88.216.18:27017"          #这里修改的是MongoDB服务的地址和端口
 ],
 "Database": "cronsun",
 "#AuthSource": "AuthSource Specify the database name associated with the user’s credentials.",
 "#AuthSource": "AuthSource defaults to the cronsun's Database.",
 "#AuthSource": "If connect mongodb like './bin/mongo mytest -u test -p 123 --authenticationDatabase admin' ",
 "#AuthSource": "the AuthSource is 'admin'. ",
 "AuthSource": "",
 "UserName": "",
 "Password": "",
 "#Timeout": "connect timeout duration/second",
 "Timeout": 15
}

添加节点

cronsun基于etcd实现了自动发现和注册的功能,所以添加节点非常简单,直接将cronnode和conf拷贝到客户端服务器启动之后,就能在前台->节点页面看到该服务器了,当然节点和Etcd以及MongoDB之间的网络必须畅通。

scp -r /usr/local/cronsun-v0.3.5 10.88.216.21:/usr/local/ #拷贝cronnode配置文件到节点主机

程序启动

启动web

启动web:./cronweb -conf conf/base.json

(若要后台运行则使用 nohup)

nohup /usr/local/cronsun-v0.3.5/cronweb -conf /usr/local/cronsun-v0.3.5/conf/base.json &

启动node

启动 node:./cronnode -conf conf/base.json

(若要后台运行则使用 nohup)

nohup /usr/local/cronsun-v0.3.5/cronnode -conf /usr/local/cronsun-v0.3.5/conf/base.json &

访问web页面

访问之前关闭防火墙

systemctl stop firewalld.service

访问web:http://x.x.x.x:7079/ui/ 默认用户名: admin@admin.com 密码:admin

节点管理

添加了所需的节点服务器之后,我们可以将节点进行分组,从而方便定时任务的添加:

添加任务

节点和分组都搞定之后,就可以开始添加定时任务了。

告警配置

首先要清楚 cronsun 的告警是由 cronweb 发出的,而不是 cronnode(但是 cronnode 的 mail.json 也必须 Enable:true,否则还是无法发出告警)。

编辑 cronweb 和 cronnode 的配置文件:mail.json,如下内容

vim /usr/local/cronsun-v0.3.5/conf/mail.json
{
 "Enable": true, # cronweb 的 mail.json 配置中必须将 Enable 填为 true 才可以看到上图的告警开关按钮,否则不显示。
 "To": ["这里填写缺省默认的告警邮件接收地址"],
 "#HttpAPI": "如有此字段,则按 http api 方式发送",
 "#Keepalive": "如果此时间段内没有邮件发送,则关闭 SMTP 连接,单位/秒",
 "Keepalive": 30,
 "#doc": "https://godoc.org/github.com/go-gomail/gomail#Dialer",
 "Host": "填写SMTP服务器地址,比如:stmp.qq.com",
 "Port": 25,
 "Username": "这里填写发送人邮箱地址(用于登陆SMTP+from地址)",
 "Password": "登陆密码",
 "SSL": false,
 "LocalName": ""
}

Ps:LocalName 建议留空,HttpAPI 模式未使用到,这里省略之。

重新启动 cronweb,然后在 web 上的单向任务界面开启告警,即可实现邮件告警,如下图所示:

点击
联系博客作者
Azkaban
Chronos
Airflow
GitHub - shunfei/cronsun: A Distributed, Fault-Tolerant Cron-Style Job System.GitHub
Logo