基于docker的分布式任务调度系统xxl-job搭建

发布时间:2024年01月22日

本文所使用的操作系统为: CentOS-7-x86_64-DVD-2009

一、安装MySQL(docker)

xxl-job 依赖 mysql,所以必须要安装mysql才行!

访问以下链接:https://hub.docker.com/_/mysql/ 寻找自己需要的MySQL版本拉取即可
在这里插入图片描述

1.下载镜像

docker pull mysql

这里未指定版本号,默认拉取的是最新MySQL镜像
在这里插入图片描述

2.导入zip包

下载xxljob项目,查看releases版本
https://github.com/xuxueli/xxl-job/releases
最新版本是2.4.0,下载zip包
在这里插入图片描述
将zip包上传至/opt 目录下,然后进行解压
centos首先需要安装 unzip 命令

yum install unzip

在这里插入图片描述

cd /opt
unzip xxl-job-2.4.0.zip

在这里插入图片描述
进入db目录,其中 tables_xxl_job.sql 就是我们要导入的sql文件

cd /opt/xxl-job-2.4.0/doc/db/

在这里插入图片描述

3.启动容器

运行mysql 镜像,指定密码为123456,映射目录/opt,指定默认编码为utf-8
注意:密码不要包含感叹号,否则会导致xxl-job启动失败

docker run -e MYSQL_ROOT_PASSWORD=123456  -p 3306:3306  -v /opt:/opt mysql  --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

在这里插入图片描述
如果输出:

/usr/sbin/mysqld: ready for connections. Version: '8.0.27'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  MySQL Community Server - GPL.

则表示,启动mysql成功!可以看到版本是8.0.27

4.创建表

在这里插入图片描述
进入docker,导入sql文件(其中:61d147358f52 为自己ID)

docker exec -it 61d147358f52 /bin/bash
 mysql -u root -p123456

在这里插入图片描述
创建数据库,用if NOT EXISTS判断 xxl_job 表是否存在,如果不存在,创建xxl_job表 。

CREATE database if NOT EXISTS `xxl_job` default character set utf8 collate utf8_general_ci;

在这里插入图片描述
切换到xxl_job 数据库

use `xxl_job`;

5.导入sql

source /opt/xxl-job-2.4.0/doc/db/tables_xxl_job.sql;

在这里插入图片描述

6.设置权限

查看默认的授权列表

 select Host,User,authentication_string from mysql.user;

在这里插入图片描述

可以发现,默认已经将root用户设置了远程访问,也就是%的那条记录。但是密码和localhost的不一样。

因此,需要修改密码,并刷新权限

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
flush privileges;

在这里插入图片描述

7.远程连接

使用Navicat 新建一个mysql连接,点击连接测试,效果如下:
在这里插入图片描述
注意:这里必须能够远程访问,因为待会由 xxl-job来连接,必须测试通过,否则会导致xxl-job启动失败!

二、安装xxl-job

1.镜像下载

如果直接下载镜像

docker pull xuxueli/xxl-job-admin

执行会报错:

Using default tag: latest
Error response from daemon: manifest for xuxueli/xxl-job-admin:latest not found

因为官方没有打 latest 的tag标签,所以会提示下载失败!必须写版本才可以!
在上面的内容中,我们已经访问了releases连接,最新版本是2.4.0
那么下载命令为:

docker pull xuxueli/xxl-job-admin:2.4.0

在这里插入图片描述

2.启动容器

注意:官方文档,提到了2个命令

docker run -p 8080:8080 -v /tmp:/data/applogs --name xxl-job-admin  -d xuxueli/xxl-job-admin

docker run -e PARAMS="--spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl-job?Unicode=true&characterEncoding=UTF-8" -p 8080:8080 -v /tmp:/data/applogs --name xxl-job-admin  -d xuxueli/xxl-job-admin

这2个命令,执行之后,是无法访问8080页面的!
正确的命令为:

docker run -e PARAMS="--spring.datasource.url=jdbc:mysql://192.168.37.129:3306/xxl_job?Unicode=true&characterEncoding=UTF-8 --spring.datasource.username=root --spring.datasource.password=123456" -p 8080:8080 -v /tmp:/data/applogs --name xxl-job-admin xuxueli/xxl-job-admin:2.4.0

上面的命令,就是在官方的基础上面改的!指定真实的mysql的ip地址,以及用户和密码。根据实际情况修改!!!
注意:jdbc的地址不能是127.0.0.1,因为官方的镜像没有mysql。官方的jdbc命令只是单纯的指定了数据库为xxl-job,并没有指定用户名和密码!
最后一个参数,是镜像地址。注意:必须带版本,否则无法启动
启动之后,输出如下:
在这里插入图片描述
最后一行,输出 init xxl-job admin success. 表示启动成功!

3.访问页面

如果直接访问:

http://192.168.37.129:8080

是没有任何效果的!!!
真正的访问地址为:

http://192.168.37.129:8080/xxl-job-admin

效果如下:
在这里插入图片描述
账号:amdin 密码:123456
点击登录,效果如下:
在这里插入图片描述

文章来源:https://blog.csdn.net/weixin_44772566/article/details/135697336
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。