gocron 是使用 go 语言开发的轻量级定时任务集中调度和管理系统, 可以用于替代 linux-crontab。
项目地址
环境介绍| 服务器 | 应用 |
|---|---|
| 172.18.138.10 | gocron-web nginx |
| 172.18.35.144 | gocron-web |
| 172.18.138.4 | gocron-node |
操作系统:centos 7.9
gocron version:v1.5.3
安装包如下
gocron-web
gocron
- 下载gocron-web
wget http://8.210.62.122/gocron/gocron-v1.5.3-linux-amd64.tar.gz
tar xzvf gocron-v1.5.3-linux-amd64.tar.gz -C /usr/local/services/
cd /usr/local/services/gocron-linux-amd64
[yingjian@iZwz9b8x8l2oe511fss4qfZ gocron-linux-amd64]$ ./gocron -v
gocron version
Version: v1.5.3
Go Version: go1.13
Git Commit: 93c544f
Built: 2020-02-20 21:23:25
OS/ARCH: linux/amd64
- systemd管理gocron-web
[yingjian@iZwz9b8x8l2oe511fss4qfZ gocron-linux-amd64]$ cat /usr/lib/systemd/system/gocron-web.service [Unit] Description=gocron web manage Documentation=https://github.com/ouqiang/gocron After=network.target [Service] Type=simple User=root ExecStart=/usr/local/services/gocron-linux-amd64/gocron web Restart=on-failure WorkingDirectory=/usr/local/services/gocron-linux-amd64 [Install] WantedBy=multi-user.target systemctl daemon-reload systemctl restart gocron-web #启动 systemctl enable gocron-web #开机自启 systemctl status gocron-web #查看状态创建数据库和对应的用户账号权限
CREATE DATABASE `gocron` CHARACTER SET utf8mb4 COLLATE utf8mb4_bin; # 创建 程序连接数据库 grant all on `gocron`.* to gocron@'%' identified by '******'; # 创建程序使用用户,并将对应库权限授予此用户进行使用 flush privileges;
访问 10 服务器5920端口
如下图所示配置数据库连接地址
144 服务器conf 配置
/usr/local/services/gocron-linux-amd64 #10服务器 [root@iZwz9b8x8l2oe511fss4qfZ gocron-linux-amd64]# ls conf gocron log [root@iZwz9b8x8l2oe511fss4qfZ gocron-linux-amd64]# cd conf/ [root@iZwz9b8x8l2oe511fss4qfZ conf]# ls app.ini install.lock [root@iZwz9b8x8l2oe511fss4qfZ conf]# sz app.ini #下载此文件后上传到144 服务器下的conf目录下
10 app.ini文件
144 app.ini文件
cat nginx.conf
upstream gocron_web {
server 172.18.138.10:5920;
server 172.18.35.144:5920 backup; #当10服务器不能提供服务时,请求才到144服务器上
}
server {
listen 80;
listen 443 ssl;
server_name cron.jinzjy.com;
ssl_certificate cert/3502__jinzjy.com.pem;
ssl_certificate_key cert/3502__jinzjy.com.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location / {
proxy_pass http://gocron_web;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_cookie_path / /;
proxy_set_header Cookie $http_cookie;
}
}
如图所示
4 服务器部署gocron-node1.下载gocron-node
wget http://8.210.62.122/gocron/gocron-v1.5.3-linux-amd64.tar.gz
tar xzvf gocron-node-v1.5.3-linux-amd64.tar.gz -C /usr/local/services/
[yingjian@iZwz9c0rnhno789fl3ibk6Z src]$ cd /usr/local/services/gocron-node-linux-amd64/
[yingjian@iZwz9c0rnhno789fl3ibk6Z gocron-node-linux-amd64]$ ls
gocron-node home_list.txt nohup.out
[yingjian@iZwz9c0rnhno789fl3ibk6Z gocron-node-linux-amd64]$ ./gocron-node -v
Version: v1.5.3
Go Version: go1.13
Git Commit: 93c544f
Built: 2020-02-20 21:24:23
OS/ARCH: linux/amd64
- systemd管理gocron-node
cat /usr/lib/systemd/system/gocron-node.service [Unit] Description=gocron agent/node server Documentation=https://github.com/ouqiang/gocron After=network.target [Service] Type=simple User=root ExecStart=/usr/local/services/gocron-node-linux-amd64/gocron-node -allow-root WorkingDirectory=/usr/local/services/gocron-node-linux-amd64 #执行计划任务时当前目录 Restart=on-failure [Install] WantedBy=multi-user.target systemctl daemon-reload systemctl restart gocron-node #启动 systemctl enable gocron-node #开机自启 systemctl status gocron-node #查看状态gocron-web 添加任务节点 配置邮件通知
相关报错处理
- gocron-node 执行计划任务time-out
查看该任务 配置任务超时时间
本文参考:https://www.treesir.pub/post/gocron-install/
本文参考:http://www.xckey.com/952.html



