Gocron:替代 crontab 的可视化定时任务系统部署

Gocron 是 Go 语言写的轻量级定时任务集中调度和管理系统,用来替代 Linux-crontab,项目地址:github.com/ouqiang/gocron。核心卖点是 Web 界面管理任务,支持到秒级表达式、失败重试、超时强杀、任务依赖、权限控制,通知支持邮件、Slack、Webhook,跨 Windows、Linux、Mac OS 平台。

准备 MySQL

RPM 方式安装,从 https://downloads.mysql.com/archives/community/ 下载 mysql-community-server、mysql-community-client、mysql-community-common、mysql-community-libs:

MySQL-rpm

上传到服务器后安装:

[root@localhost ~]# rpm -ivh mysql-community*
[root@localhost ~]# systemctl start mysqld.service
[root@localhost ~]# systemctl enable mysqld.service

重置 root 密码,先把 validate_password 策略调低:

[root@localhost ~]# cat /var/log/mysqld.log | grep 'password'
[root@localhost ~]# mysql -uroot -p

##密码验证策略低要求
mysql> set global validate_password_policy=0; (0或LOW代表低级)
##密码至少要包含的小写字母个数和大写字母个数
mysql> set global validate_password_mixed_case_count=0;

##密码至少要包含的数字个数。
mysql> set global validate_password_number_count=0; 

##密码至少要包含的特殊字符数
mysql> set global validate_password_special_char_count=0; 

##密码长度
mysql> set global validate_password_length=3;

##再次设置密码
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

建库:

mysql> CREATE DATABASE `gocron` CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

安装调度器(gocron web)

发布包在 github.com/ouqiang/gocron/releases:

gocron-github

gocron 是 Go 程序,缺 go 环境先装:

[root@localhost ~]# go env
-bash: go: 未找到命令

[root@localhost ~]# yum install golang

下载 v1.5.3 并解压:

[root@localhost ~]# wget https://github.com/ouqiang/gocron/releases/download/v1.5.3/gocron-v1.5.3-linux-amd64.tar.gz
[root@localhost ~]# tar -zxvf gocron-v1.5.3-linux-amd64.tar.gz -C /usr/local/

启动,默认监听 5920:

[root@localhost ~]# cd /usr/local/gocron-linux-amd64
[root@localhost gocron-linux-amd64]# nohup ./gocron web >/tmp/gocron.log 2>&1 &

#默认监听端口为5920
[root@localhost gocron-linux-amd64]# firewall-cmd --permanent --zone=public --add-port=5920/tcp
success
[root@localhost gocron-linux-amd64]# firewall-cmd --reload
success

Web 界面

访问 http://ip:5920,首次进入初始化管理员账号:

gocron-web01
gocron-web02
gocron-web03

部署任务节点(gocron-node)

执行方式为 shell 的任务,必须在目标主机上装 gocron-node,默认端口 5921。注意:节点不能用 root 启动,要建普通用户。

[root@localhost ~]# wget https://github.com/ouqiang/gocron/releases/download/v1.5.3/gocron-node-v1.5.3-linux-amd64.tar.gz

[root@localhost ~]# tar -zxvf gocron-node-v1.5.3-linux-amd64.tar.gz -C /usr/local/

[root@localhost ~]# useradd gocron-user

目录属主给普通用户,放通端口,用该用户拉起:

[root@localhost ~]# chown -R gocron-user. /usr/local/gocron-node-linux-amd64/

[root@localhost ~]# firewall-cmd --permanent --zone=public --add-port=5921/tcp
success
[root@localhost ~]# firewall-cmd --reload
success

#用普通用户来启动服务
[root@localhost ~]# su - gocron-user -c " cd /usr/local/gocron-node-linux-amd64 && nohup ./gocron-node > /tmp/gocron-node.log 2>&1 &"

在 Web 端把节点加进来:

gocron-web04
gocron-web05
gocron-web06
gocron-web07

然后创建任务,选执行节点,配表达式:

gocron-web08
gocron-web09
gocron-web10
gocron-web11
gocron-web12
gocron-web13

任务执行结果和日志在界面上直接查:

gocron-web14

使用注意点

shell 任务找不到节点就是 5921 没通或节点用 root 起挂了;HTTP 任务由调度器直接发请求,不需要节点,探活类任务用它更省事。crontab 表达式精确到秒,迁移旧任务时注意语义核对,建议先在界面里空跑一天再切换。

© 版权声明
THE END
喜欢就支持一下吧
点赞13 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容