Skip to content

bigdatas/JobX

Folders and files

NameName
Last commit message
Last commit date

Latest commit

7a32357 · Dec 22, 2018
Jun 21, 2018
Dec 3, 2018
Dec 20, 2018
Jun 21, 2018
Sep 5, 2018
Jun 21, 2018
Aug 30, 2018
Aug 26, 2018
Nov 28, 2018
Apr 16, 2017
Apr 16, 2017
Apr 16, 2017
Dec 22, 2018
Apr 16, 2017
Jun 21, 2018
Jun 28, 2018

Repository files navigation

升级日志

V1.2.0 by 2018-xx-xx

1)支持Window端,实现全平台编译和安装

2)简化安装部署流程,提供三个脚本一键安装启动项目(build.sh,agent.sh,server.sh)

3)更换项目rpc调度框架thrift为Netty和Mina

4)引入zookeeper,更改心跳检测机制

5)基于zookeeper,agent实现自动注册

6)基于zookeeper实现server集群,动态增减server,job自动分配,实现高可用

7)server端支持单机和集群两种部署方式,对用户来说一个参数决定哪种部署方式

8)可以自由定义任务的执行身份

9)server内置tomcat和jetty组件,支持开发者模式,大大减轻运维部署的难度

10)webssh新增基于privateKey方式的登录

11)支持上传文件到agent

12)更强大的任务流调度

13)支持对外提供api的方式,允许通过接口调度任务

14)新增一系列的examples调度使用实例

15)修复一系列已知bug,增强稳定性和可用性

此版本是里程碑版本,从底层架构到项目实现都进行重新规划,大大提高了可用性和稳定性,建议所有人升级``

V1.1.0 by 2017-04-20

1)新增agent和server代理连接方式
    
2)新增quartz类型的任务调度

3)新增web终端,实现web终端文件上传,主题更换

4)更改agnet和server心跳检查机制

5)新增流程任务调度

6)增加xss和csrf注入攻击的预防

7)server端增加踢人下线单一登录控制

jobx

一个功能完善通用的 linux 定时任务调度定系统,满足多种场景下各种复杂的定时任务调度,同时集成了 linux 实时监控、webssh,提供一个方便管理定时任务的平台.

你是否有定时执行任务计划的需求,需要在 linux 的 crontab 里一一定义任务?

  • 需要在每台linux服务器的 crontab 里一一定义任务
  • 任务的执行监控太不方便了
  • 得登录到每台机器查看定时任务的运行结果,机器一多简直是一种灾难
  • 对于多台机器协同处理一个任务很麻烦,如何保证多台机器上的任务按顺序依次执行?
  • 当任务运行失败,要重新执行,还得重新定义下执行时间,让其重跑,重跑完成了还得改回正常时间
  • 正在运行的任务要kill掉很麻烦,查看进程然后才能kill ......

jobx的出现将彻底的解决上面所有问题.功能如下:

  • 自动化管理任务,提供可操作的web图形化管理
  • 要当场执行只需点击执行即可,非常方便
  • 时间规则支持 quartz 和 crontab, 更强大更灵活
  • 非常方便的修改任务的执行时间
  • 任务的运行状态实时查看
  • 支持任务 kill (包括由当前任务调起的其他子任务链,彻底 kill)
  • 支持重新执行正在运行的任务
  • 出错后实时通知给任务人(超过重跑次数自动发送邮件,短信)
  • 支持任务超时设置, 一旦超过预定运行时长自动 kill, 任务结束, 防止僵尸任务
  • 支持流程任务(多台机器上协同完成一个大的任务, 按任务分配的顺序依次执行每台机器上的任务)
  • 记录任务的运行日志, 非常方便查看
  • 多用户多角色
  • 现场执行(选择 N 台机器同时执行一个命令或任务)
  • webssh,在浏览器一键 ssh 登录到 linux 服务器
  • 提供服务器的性能实时监控 ......

运行环境

Java JDK 1.7 or greater http://www.oracle.com/technetwork/java/javase/overview/index.html

Tomcat server 8.0 or greater https://tomcat.apache.org

Zookeeper http://zookeeper.apache.org/

Redis https://redis.io/

Browser IE10+

安装说明

  • jobx分为两个 jobx-server 端和 jobx-agent 端, jobx-server 端即为一个 web 可视化的中央管理调度平台,
  • jobx-agent 为要管理的任务的机器, agent 和 server 都依赖 zookeeper, 安装部署 jobx 之前必须先安装和启动 zookeeper
  • server和agent必须连接同一个zookeeper,server端依赖redis

编译步骤:

1)下载源码: 
  > git clone https://github.com/jobxhub/jobx.git

2):编译:
  进入deployment
  > cd deployment
    #修改配置信息
    jobx.password=jobx
    jobx.port=1577
    jobx.registry=zookeeper://${zookeeper_host}:2181?bakup=${zookeeper_host1}:2181,${zookeeper_host2}:2181

    #jobx.host=
    jdbc.driver=com.mysql.jdbc.Driver
    jdbc.url=jdbc:mysql://localhost:3306/jobx
    jdbc.username=root
    jdbc.password=${password}

    jobx.cluster=false
    jobx.cached=memcached

    redis.host=${redis.host}
    redis.password=${redis.password}
    redis.port=6379

    memcached.servers=${memcached.servers}
    memcached.protocol=BINARY

    *nix平台执行 sh build.sh
    window平台双击 build.bat
    
3):启动
    1) agent
        *nix平台:  执行 sh agent.sh
        window平台: 需要进入jobx-agent/target下,解包jobx-agent-${version}.tar.gz 双击bin/startup.bat
   
    2)  server
        *nix平台:  执行 sh server.sh 8080
        window平台 双击 server.bat

    3)  进入到jobx的管理端,如果agent也启动了,应该可以直接在server的执行器页面看到agent,则添加任务即可...

注意事项:

1):如果自行编译项目的,有可能agent端的脚本执行失败,这时请更改agent/bin下所有的脚本的字符集
   a) vim *.sh
   b) :set ff=unix 保存退出即可
   
2):如果agent已经成功启动server还是连接不上,请检查agent端口是否开放(如很多云服务器得开放端口才能访问)

3):如果server端用nginx做反向代理,配置如下:

   
upstream jobx {
     server 127.0.0.1:8080;
}

server {
    listen 80;
    server_name www.jobx.org;
    root /data/www/jobx/;

    location / {
        proxy_pass        http://jobx;
        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        client_max_body_size  10m;
        client_body_buffer_size 1m;
        proxy_connect_timeout 300;
        proxy_send_timeout    300;
        proxy_read_timeout    300;
        proxy_buffer_size     4k;
        proxy_buffers    4   32k;
        proxy_busy_buffers_size 64k;
        proxy_temp_file_write_size  64k;
    }

    #这里必须这么配置,否则web终端无法使用
    location  ^~  /terminal.ws {
        proxy_pass http://jobx;
        proxy_redirect    off;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }

}


常见问题:

 1)创建作业运行身份无法选择?
   由于考虑到权限的问题,当前登录的用户不能随便指定任务的执行身份,需要超级管理员权限的用户(jobx)登录,在设置页面统一设置运行身份,
   多个运行身份用","分割,然后超级管理员在编辑用户,为该用户指定可以执行的身份(可选择多个)
   这样用户在创建任务的时候就可以选择指定身份去执行了

更多问题请加入 jobx 交流群156429713,欢迎大家加入

About

JobX,Let's schedule easy

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Java 98.5%
  • Other 1.5%