🙊
🙊
🙊
🙊
关于作者
搜索文档…
🙊
🙊
🙊
🙊
关于作者
个人简历
联系作者
运维面试必问
RAID 磁盘阵列
MBR 与 GPT 分区
Linux 内核优化
关系型数据库
关系型数据库基本原理
SQL 基本语法
Linux运维学习笔记
计算机网络基础知识
Linux 系统启动过程
Linux 命令基本格式
Linux 文件删除原理
Linux 命令行判断GPT和MBR分区
Linux 目录结构说明
Linux 查看命令帮助信息
Linux Yum 命令
Linux Apt 命令
Linux 运维管理
Linux 硬件管理
Linux 软件管理
Linux 磁盘管理
Linux 系统管理
Linux 网络管理
Linux 用户和组管理
Linux 文件与目录管理
Linux 文件压缩与解压缩管理
Linux SSL证书自动更新管理
系统安全加固
Linux 操作系统加固
Windows 操作系统安全加固
Password 安全加固
OpenSSL 安全加固
NFS 服务安全加固
Rsync 服务安全加固
IIS 服务安全加固
PHP 语言环境安全加固
Apache 服务安全加固
Nginx 服务安全加固
Tomcat 服务安全加固
MySQL 服务安全加固
PostgreSQL 服务安全加固
Redis 服务安全加固
MongoDB 服务安全加固
暴力破解攻击和防御
Linux 系统故障排查
Linux 系统重置密码方法
Linux 系统误操作修改目录权限为 777 修复方法
Windows 系统故障排查
Windows 和 Windows Server 中启用/禁用 SMBv1、SMBv2 和 SMBv3
Windows10建立映射网络驱动器报错,无法挂载共享文件系统,解决办法
运维工具使用
常用 Git 命令简介及使用
常用 SVN 命令简介及使用
常用 Vi / Vim 文本编辑工具简介及使用
国内常用加速源使用及配置
软碟通制作U启动和再生龙恢复Linux系统及备份
常用JetBrains系列IDE快捷键
运维环境搭建
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 日志系统部署
中间件教程学习
Nginx 极简教程
Nginx 安装
Nginx 配置
Nginx 问题集
Mysql 教程
Mysql 运维
Mysql 原理
Redis 教程
Redis 持久化
Redis 复制
Redis 哨兵
Redis 集群
Redis 运维
PostgreSQL 教程
H2 教程
SqLite 教程
Linux 命令大全
Linux 运维教程
Shell 教程
Java 教程
Python 全栈教程
nftables 中文教程
Docker -入门到实践
Docker 入门教程
Prometheus 监控
Kubernetes中文指南/云原生应用架构实践手册
ELKstack 中文指南
Elasticsearch 权威指南
Python 入门指南
Nginx 入门教程
MySQL 入门教程
Go 语言高级编程
Python 爬虫教程
Github 漫游指南
Jenkins 中文教程
数据库中间件 flyway
Nosql 数据库
常用工具快捷键
Windows10常用快捷键大全
PyCharm 使用技巧
由
GitBook
提供支持
Cronsun 任务管理器部署
博客作者:联系请
点击
,搬运不易,希望请作者喝咖啡,可以点击
联系博客作者
引言
cronsun
是一个分布式任务系统,单个节点和
*nix
机器上的
crontab
近似。支持界面管理机器上的任务,支持任务失败邮件提醒,安装简单,使用方便,是替换
crontab
一个不错的选择。
cronsun
是为了解决多台
*nix
机器上
crontab
任务管理不方便的问题,同时提供任务高可用的支持(当某个节点死机的时候可以自动调度到正常的节点执行)。
cronsun
和
Azkaban
、
Chronos
、
Airflow
这些不是同一类型的。
项目状态
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
项目开源地址
GitHub - shunfei/cronsun: A Distributed, Fault-Tolerant Cron-Style Job System.
GitHub
部署操作
环境准备
1
sed -i 's/ONBOOT=on/ONBOOT=yes/g' /etc/sysconfig/network-scripts/ifcfg-ens33 #配置网络
2
service network restart #重启网络
3
yum -y install vim unzip net-tools wget zip bash-completion java*
Copied!
单节点安装etcd服务
下载安装包,下载地址:https://github.com/etcd-io/etcd/releases
1
wget https://github.com/etcd-io/etcd/releases/download/v3.3.13/etcd-v3.3.13-linux-amd64.tar.gz
Copied!
解压文件
1
tar -zxvf etcd-v3.3.13-linux-amd64.tar.gz
2
cd etcd-v3.3.13-linux-amd64
Copied!
目录下有两个可执行文件etcd 和 etcdctl
1
cp etcd /usr/bin/
2
cp etcdctl /usr/bin/
Copied!
配置服务
1
vim /usr/lib/systemd/system/etcd.service (添加以下内容)
2
[Unit]
3
Description=Etcd Server
4
After=network.target
5
[Service]
6
Type=simple
7
WorkingDirectory=/var/lib/etcd/
8
EnvironmentFile=-/etc/etcd/etcd.conf
9
ExecStart=/usr/bin/etcd
10
[Install]
11
WantedBy=multi-user.target
Copied!
创建工作文件夹
1
mkdir -p /var/lib/etcd && mkdir -p /etc/etcd
2
vim /etc/etcd/etcd.conf (添加以下内容)
3
#[member]
4
ETCD_NAME=default
5
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
6
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"
7
ETCD_ADVERTISE_CLIENT_URLS=
8
http://0.0.0.0:2379
Copied!
注意:默认监听地址是127.0.0.1,允许远程连接需要改为0.0.0.0
启动etcd服务
1
systemctl daemon-reload && systemctl enable etcd.service && systemctl start etcd.service
Copied!
测试etcd服务状态:
1
etcdctl cluster-health
Copied!
1
cd /root
Copied!
单节点mongodb的安装
单节点mongodb的安装
1
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.11.tgz
2
mkdir /usr/local/mongodb
3
tar -xf mongodb-linux-x86_64-4.0.11.tgz
4
cp -r mongodb-linux-x86_64-4.0.11/bin /usr/local/mongodb
5
cd /usr/local/mongodb
Copied!
1
mkdir -p etc log data/db #配置文件目录 日志目录 存放数据
Copied!
配置文件:
1
vim /usr/local/mongodb/etc/mongodb.conf
2
logpath=/usr/local/mongodb/log/mongodb.log #指定日志文件名
3
dbpath=/usr/local/mongodb/data/db #指定数据库目录
4
logappend=true #日志为 追加方式记录
5
fork=true #服务以守护进程的方式进行
6
bind_ip=0.0.0.0 #修改运行的ip,默认是127.0.0.1, 多节点需要允许其他的ip连接, 所以配置为0.0.0.0,允许其他ip连接
7
port=27017 #修改运行的端口号
8
/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/etc/mongodb.conf #指向配置文件执行bin目录下的快捷方式
Copied!
1
netstat -ntuap | grep mongod #查询服务是否启动
Copied!
MongoDB 的可执行文件位于 bin 目录下,所以可以将其添加到 PATH 路径中:
1
export PATH=<mongodb-install-directory>/bin:$PATH
Copied!
<mongodb-install-directory>
为MongoDB 的安装路径,如本文档的 /usr/local/mongodb
部署 cronsun 任务管理器
Cronsun下载地址: https://github.com/shunfei/cronsun/releases
1
wget https://github.com/shunfei/cronsun/releases/download/v0.3.5/cronsun-v0.3.5-linux-amd64.zip
2
unzip cronsun-v0.3.5 && mv cronsun-v0.3.5 /usr/local/
Copied!
解压后修改 conf 目录下的配置文件:db.json 和 etcd.json,分别修改 MongoDB 和 etcd 的实际地址。
1
vim /usr/local/cronsun-v0.3.5/conf/etcd.json
2
{
3
"Endpoints":[
4
"http://10.88.216.18:2379" #这里修改的是etcd服务的地址和端口
5
],
6
"Username":"",
7
"Password":"",
8
"#DialTimeout":"单位秒",
9
"DialTimeout": 2
10
}
Copied!
1
vim /usr/local/cronsun-v0.3.5/conf/db.json
2
{
3
"Hosts": [
4
"10.88.216.18:27017" #这里修改的是MongoDB服务的地址和端口
5
],
6
"Database": "cronsun",
7
"#AuthSource": "AuthSource Specify the database name associated with the user’s credentials.",
8
"#AuthSource": "AuthSource defaults to the cronsun's Database.",
9
"#AuthSource": "If connect mongodb like './bin/mongo mytest -u test -p 123 --authenticationDatabase admin' ",
10
"#AuthSource": "the AuthSource is 'admin'. ",
11
"AuthSource": "",
12
"UserName": "",
13
"Password": "",
14
"#Timeout": "connect timeout duration/second",
15
"Timeout": 15
16
}
Copied!
添加节点
cronsun基于etcd实现了自动发现和注册的功能,所以添加节点非常简单,直接将cronnode和conf拷贝到客户端服务器启动之后,就能在前台->节点页面看到该服务器了,当然节点和Etcd以及MongoDB之间的网络必须畅通。
1
scp -r /usr/local/cronsun-v0.3.5 10.88.216.21:/usr/local/ #拷贝cronnode配置文件到节点主机
Copied!
程序启动
启动web
启动web:./cronweb -conf conf/base.json
(若要后台运行则使用 nohup)
1
nohup /usr/local/cronsun-v0.3.5/cronweb -conf /usr/local/cronsun-v0.3.5/conf/base.json &
Copied!
启动node
启动 node:./cronnode -conf conf/base.json
(若要后台运行则使用 nohup)
1
nohup /usr/local/cronsun-v0.3.5/cronnode -conf /usr/local/cronsun-v0.3.5/conf/base.json &
Copied!
访问web页面
访问之前关闭防火墙
systemctl stop firewalld.service
访问web:http://x.x.x.x:7079/ui/ 默认用户名:
[email protected]
密码:admin
节点管理
添加了所需的节点服务器之后,我们可以将节点进行分组,从而方便定时任务的添加:
添加任务
节点和分组都搞定之后,就可以开始添加定时任务了。
告警配置
首先要清楚 cronsun 的告警是由 cronweb 发出的,而不是 cronnode(但是 cronnode 的 mail.json 也必须 Enable:true,否则还是无法发出告警)。
编辑 cronweb 和 cronnode 的配置文件:mail.json,如下内容
1
vim /usr/local/cronsun-v0.3.5/conf/mail.json
2
{
3
"Enable": true, # cronweb 的 mail.json 配置中必须将 Enable 填为 true 才可以看到上图的告警开关按钮,否则不显示。
4
"To": ["这里填写缺省默认的告警邮件接收地址"],
5
"#HttpAPI": "如有此字段,则按 http api 方式发送",
6
"#Keepalive": "如果此时间段内没有邮件发送,则关闭 SMTP 连接,单位/秒",
7
"Keepalive": 30,
8
"#doc": "https://godoc.org/github.com/go-gomail/gomail#Dialer",
9
"Host": "填写SMTP服务器地址,比如:stmp.qq.com",
10
"Port": 25,
11
"Username": "这里填写发送人邮箱地址(用于登陆SMTP+from地址)",
12
"Password": "登陆密码",
13
"SSL": false,
14
"LocalName": ""
15
}
Copied!
Ps:LocalName 建议留空,HttpAPI 模式未使用到,这里省略之。
重新启动 cronweb,然后在 web 上的单向任务界面开启告警,即可实现邮件告警,如下图所示:
运维环境搭建 - 以前
Windows Server 部署 IIS
下一个 - 运维环境搭建
Teltport 堡垒机部署
最近更新
1yr ago
复制链接
内容
引言
项目状态
cronsun特性:
部署对象说明
程序名称
程序架构
部署位置
项目开源地址
部署操作
环境准备
单节点安装etcd服务
单节点mongodb的安装
部署 cronsun 任务管理器
添加节点
程序启动
启动web
启动node
访问web页面
节点管理
添加任务
告警配置