前言
Cronsun是一款开源的分布式任务调度系统,主要用于在*nix服务器集群中管理和调度周期性任务。相比于传统的Linux crontab
工具,Cronsun提供了一个集中化的Web界面,使得在多台服务器上的定时任务更容易管理和监控,并且具备任务失败通知、任务高可用性(当某台服务器宕机时,任务可以自动在其他正常的服务器上继续执行)等特点。
Cronsun支持多租户、任务分组、任务依赖、任务统计等多种功能,适合大规模、复杂环境下对定时任务有高级需求的场景。开发者可以通过Cronsun简洁的API或界面轻松添加、编辑、删除定时任务,并且能够实时跟踪任务执行状态和历史记录。
前期准备,需要安装好docker、docker-compose的运行环境。
Cronsun的github地址如下。
GitHub - shunfei/cronsun: A Distributed, Fault-Tolerant Cron-Style Job System.
一、安装MongoDB
1、创建相关目录,执行如下命令。
mkdir -p /docker/mongodb/data/db/
cd /docker/mongodb
2、编写yaml文件,内容如下。
mongo版本不能用最新的,不然cronsun启动的时候连接不上mongodb数据库,应该是cronsun代码太久了,驱动无法兼容。
vim docker-compose.yaml
version: '2.2.2'
services:
mongodb:
image: mongo:3.0
container_name: mongodb
restart: always
ports:
- "27017:27017"
volumes:
- ./data/db:/data/db
environment:
MONGO_INITDB_ROOT_USERNAME: admin
MONGO_INITDB_ROOT_PASSWORD: admin
MONGO_INITDB_DATABASE: admin
command: --auth
networks:
- mynet
networks:
mynet:
name: mynet
driver: bridge
3、启动mongodb容器,执行如下命令。
docker-compose up -d
4、查看服务是否正常启动,执行如下命令。
docker-compose ps -a
正常情况会返回如下内容。
5、进入mongodb容器,执行如下命令。
docker exec -ti mongodb bash
6、登录mongodb,执行如下命令,账号密码数据库换成你自己设定的值。
mongo -u admin -p admin --authenticationDatabase admin
7、创建cronsun数据库,并且给账号读写授权,执行如下命令。
use cronsun
db.createUser(
{
user: "admin",
pwd: "admin",
roles: [ { role: "readWrite", db: "cronsun" } ]
}
)
8、至此,mongodb已安装完成,并且创建好cronsun数据库。
二、安装etcd
1、创建相关目录,执行如下命令。
mkdir -p /docker/etcd/data/
cd /docker/etcd/
2、编写yaml文件,内容如下。
vim docker-compose.yaml
version: '2.2.2'
services:
etcd:
image: bitnami/etcd
container_name: etcd
ports:
- "2379:2379"
- "2380:2380"
volumes:
- ./data:/bitnami/etcd/data
environment:
ALLOW_NONE_AUTHENTICATION: yes
networks:
- mynet
networks:
mynet:
name: mynet
driver: bridge
3、启动etcd容器,执行如下命令。
docker-compose up -d
4、查看服务是否正常启动,执行如下命令。
docker-compose ps -a
正常情况会返回如下内容。
5、至此,etcd已安装完成。
三、安装Cronsun
1、浏览器打开github地址,找到已发布的下载文件地址。
GitHub - shunfei/cronsun: A Distributed, Fault-Tolerant Cron-Style Job System.
2、使用alpine镜像运行一个cronsun容器,执行如下命令。
docker run -it --name cronsun --network mynet -p 7079:7079 alpine
3、进入cronsun容器,执行如下命令。
docker exec -ti cronsun sh
4、因为alpine镜像使用的是apk包管理,我们需要更换国内源地址,执行如下命令更换为阿里云地址。
vi /etc/apk/repositories
https://mirrors.aliyun.com/alpine/v3.15/main
https://mirrors.aliyun.com/alpine/v3.15/community
5、安装相关依赖,执行如下命令。
apk update
apk add zip curl
6、下载cronsun可执行文件,执行如下命令。
wget https://github.com/shunfei/cronsun/releases/download/v0.3.5/cronsun-v0.3.5-linux-amd64.zip
7、解压cronsun,执行如下命令。
unzip cronsun-v0.3.5-linux-amd64.zip
cd cronsun-v0.3.5/
8、修改db配置,如下内容,Hosts、Database、UserName、Password。
9、修改etcd配置,如下内容,Endpoints。
10、启动web服务,执行如下命令。
./cronweb -conf conf/base.json
11、启动node服务,执行如下命令。
./cronnode -conf conf/base.json
12、至此,cronsun已安装完成。
四、测试验证
1、浏览器打开cronsun,地址如下。
http://宿主机IP:7079/ui/#/login
2、使用用户名 admin@admin.com 和密码 admin 进行登录。
3、新建分组节点。
4、新建任务。
5、修改项目test1的index.php代码,增加写入日志内容。
vim index.php
<?php
echo "hello ayzen!this is test1!\r\n";
$datetime = date('Y-m-d H:i:s');
file_put_contents("./index.log", "datetime=${datetime},index.php running!\r\n", FILE_APPEND);
6、查看index.log日志,检查调度任务是否有正常运行。
如上图所示,说明调度任务已正常运行。
7、至此,cronsun的测试已验证完成。
总结
本文介绍了cronsun是什么,以及它的安装部署流程。
1、安装MongoDB。
2、安装etcd。
3、安装Cronsun。
4、测试验证。
需要注意的是,因为cronsun太久了已经有5年多未更新版本了,所以mongodb不能安装太新的版本,不然会遇到驱动不兼容的问题。
最后因本人能力有限,有什么不对的地方望各位大佬指出好让我改进,多多包含,谢谢大家。