基于docker的分布式任务调度系统xxl-job搭建
基于docker的分布式任务调度系统xxl-job搭建
本文所使用的操作系统为: 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
点击登录,效果如下:
更多推荐
所有评论(0)