如何使用Docker安装部署Cronsun?

前言

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不能安装太新的版本,不然会遇到驱动不兼容的问题。

最后因本人能力有限,有什么不对的地方望各位大佬指出好让我改进,多多包含,谢谢大家。

  • 30
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ayzen1988

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值