如何使用Docker安装部署Cronsun?

news2024/11/17 22:24:30

前言

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1548332.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

大话设计模式——8.原型模式(Prototype Pattern)

1.介绍 用原型实例指定创建对象的种类&#xff0c;并且通过拷贝这些原型创建新的对象。属于创建型模式。 UML图&#xff1a; 1&#xff09;浅拷贝&#xff1a; 指创建一个新的对象&#xff0c;然后将原始对象的字段值复制到新对象中。如果字段是基本类型&#xff0c;直接复制…

MySQL高阶SQL语句

文章目录 MySQL高阶SQL语句MySQL常用查询1、按关键字排序1.1 语法1.2 ASC和DESC1.3 对数据表中信息进行排序1.3.1 普通排序1.3.2 结合where进行条件过滤1.3.3 对多个字段进行排序 2、区间判断及查询不重复记录2.1 and/or —— 且/或2.1.1 普通查询2.1.2 嵌套/多条件查询 2.2 di…

Java毕业设计-基于springboot开发的校园志愿者管理系统-毕业论文+答辩PPT(附源代码+演示视频)

文章目录 前言一、毕设成果演示&#xff08;源代码在文末&#xff09;二、毕设摘要展示1、开发说明2、需求分析3、系统功能结构 三、系统实现展示1、系统功能模块2、管理员功能3、志愿者功能 四、毕设内容和源代码获取总结 Java毕业设计-基于springboot开发的校园志愿者管理系统…

“AI程序员”Devin大杀四方后,人类程序员开始了他们的反击......

“首个AI程序员”Devin发布后&#xff0c;大有要替代人类程序员的意味。 在当时发布之初&#xff0c;Devin展示了AI自主处理各种程序任务的案例。其中Devin生成“生命游戏”的演示是最让我震惊的。 所谓“生命游戏”&#xff0c;是由英国数学家约翰何顿康威&#xff08;John …

CPU设计实战-外设接口介绍与测试

GPIO 内置寄存器&#xff0c;BASE地址由外设所在设备接口处决定&#xff0c;这样就可以确定每个寄存器的地址&#xff1b; 要使用输出先要使能&#xff0c;要用中断也先要使能&#xff1b; 测试实验-数码管驱动 数码管与GPIO的输出接口连接 编写汇编语言 1.使能输出端口 2…

游戏 AI 反作弊|基于时序行为数据的自瞄外挂检测方案,附方案详情!

游戏AI反作弊&#xff0c;上次跟大家分享了基于时序行为数据的透视外挂检测方案&#xff0c;本次跟大家分享 基于时序行为数据的自瞄外挂检测方案&#xff0c;大家记得点赞收藏&#xff01; 游戏 AI 反作弊|内附解决方案详情&#xff01;-CSDN博客 基于时序行为数据的自瞄外挂检…

【正点原子Linux连载】第二十二章 Linux INPUT子系统实验摘自【正点原子】ATK-DLRK3568嵌入式Linux驱动开发指南

1&#xff09;实验平台&#xff1a;正点原子ATK-DLRK3568开发板 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id731866264428 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/docs/boards/xiaoxitongban 第二十…

DNS协议 是什么?说说DNS 完整的查询过程?

一、是什么 DNS&#xff08;Domain Names System&#xff09;&#xff0c;域名系统&#xff0c;是互联网一项服务&#xff0c;是进行域名和与之相对应的 IP 地址进行转换的服务器 简单来讲&#xff0c;DNS相当于一个翻译官&#xff0c;负责将域名翻译成ip地址 IP 地址&#…

【数据分享】1929-2023年全球站点的逐日平均海平面压力(Shp\Excel\免费获取)

气象数据是在各项研究中都经常使用的数据&#xff0c;气象指标包括气温、风速、降水、能见度等指标&#xff0c;说到气象数据&#xff0c;最详细的气象数据是具体到气象监测站点的数据&#xff01; 有关气象指标的监测站点数据&#xff0c;之前我们分享过1929-2023年全球气象站…

笔记本作为其他主机显示屏(HDMI采集器)

前言&#xff1a; 我打算打笔记本作为显示屏来用&#xff0c;连上工控机&#xff0c;这不是贼方便吗 操作&#xff1a; 一、必需品 HDMI采集器一个 可以去绿联买一个&#xff0c;便宜的就行&#xff0c;我的大概就长这样 win10下载 PotPlayer 软件 下载链接&#xff1a;h…

考了PMP证后工资大概是多少 ?

PMP自1999年引入国内以来&#xff0c;大家对这个证书的了解并不深&#xff0c;每年考试的人数也不多。但随着越来越多的企业认可PMP认证&#xff0c;目前考证的人数不断增加&#xff0c;几乎所有与项目管理相关的人都知道这个证书的重要性。这个证书在招聘要求中出现频率较高&a…

嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记12:DAC数模转换

系列文章目录 嵌入式|蓝桥杯STM32G431&#xff08;HAL库开发&#xff09;——CT117E学习笔记01&#xff1a;赛事介绍与硬件平台 嵌入式|蓝桥杯STM32G431&#xff08;HAL库开发&#xff09;——CT117E学习笔记02&#xff1a;开发环境安装 嵌入式|蓝桥杯STM32G431&#xff08;…

【Codesys】-扫描添加失败,手动添加第三方模块,真·DC模式的高速计数模块

欧姆龙耦合器&#xff08;NX-ECC201&#xff09;和高速计数模块&#xff08;NX-EC0132&#xff09;单独使用。扫描设备添加到Codesys中&#xff0c;会报错&#xff0c;无法自动添加。需要手动添加。内容方法如下。如遇到其他第三方耦合器解决方式也同下面一样。记录一下&#x…

三位数组合-第12届蓝桥杯选拔赛Python真题精选

[导读]&#xff1a;超平老师的Scratch蓝桥杯真题解读系列在推出之后&#xff0c;受到了广大老师和家长的好评&#xff0c;非常感谢各位的认可和厚爱。作为回馈&#xff0c;超平老师计划推出《Python蓝桥杯真题解析100讲》&#xff0c;这是解读系列的第42讲。 三位数组合&#…

MySql实战--事务到底是隔离的还是不隔离的

第3篇文章和你讲事务隔离级别的时候提到过&#xff0c;如果是可重复读隔离级别&#xff0c;事务T启动的时候会创建一个视图read-view&#xff0c;之后事务T执行期间&#xff0c;即使有其他事务修改了数据&#xff0c;事务T看到的仍然跟在启动时看到的一样。也就是说&#xff0c…

【zip技巧】4种方法,删除ZIP压缩包密码

之前给大家介绍了zip压缩包加密方法&#xff0c;那么zip压缩包取消密码&#xff0c;大家了解多少呢&#xff1f;有密码的情况下&#xff0c;有哪些方法可以取消密码&#xff1f;无密码又该如何取消密码&#xff1f;今天总结四个方法分享给大家。 一、 最原始的方法&#xff0…

“Hands-free AG audio“和“Stereo“的区别

用蓝牙连接耳机后&#xff0c;发现有两个选项 一个音量大&#xff0c;一个音质好&#xff0c;好奇去查了查。 “Hands-free AG audio”&#xff08;自由通话音频&#xff09;是指一种技术或功能&#xff0c;可以使您在进行通话时无需使用手部操作或接触设备。这通常适用于汽车…

Spring:面试八股

文章目录 参考Spring模块CoreContainerAOP 参考 JavaGuide Spring模块 CoreContainer Spring框架的核心模块&#xff0c;主要提供IoC依赖注入功能的支持。内含四个子模块&#xff1a; Core&#xff1a;基本的核心工具类。Beans&#xff1a;提供对bean的创建、配置、管理功能…

智能文档处理技术综述

一、 智能文档处理介绍 智能文档处理&#xff08;Intelligent Document Processing, IDP&#xff09;是利用人工智能&#xff08;AI&#xff09;、机器学习&#xff08;ML&#xff09;、计算机视觉&#xff08;CV&#xff09;、自然语言处理&#xff08;NLP&#xff09;等技术…

【WEEK4】 【DAY5】AJAX第二部分【中文版】

2024.3.22 Friday 接上文【WEEK4】 【DAY4】AJAX第一部分【中文版】 目录 8.4.Ajax异步加载数据8.4.1.新建User.java8.4.2.在pom.xml中添加lombok、jackson支持8.4.3.更改tomcat设置8.4.4.修改AjaxController.java8.4.5.新建test2.jsp8.4.5.1.注意&#xff1a;和WEB-INF平级&…