Docker部署中间件总结(MySQL、Redis、ElasticSearch、XXL-JOB、Sentinel等...)

2023-11-12

文章目录

1、安装Docker

本文采用的版本是Centos7版本的Linux系统

1.1、卸载旧版Docker

在linux终端先使用命令卸载 旧版本 Docker,如果曾经下载过Docker可以先执行该命令卸载,如果不是root权限,需要命令前加sudo,如果是root不需要加sudo(接下来不会再提醒),切换root权限命令(su root

# 如果是root用户使用该命令即可:
yum remove docker \
        docker-client \
        docker-client-latest \
        docker-common \
        docker-latest \
        docker-latest-logrotate \
        docker-logrotate \
        docker-engine

# 如果不是root用户使用需要使用这个命令,以超级管理员方式执行卸载
# 如果不加sudo会出现提示:
# You need to be root to perform this command.
sudo yum remove docker \
        docker-client \
        docker-client-latest \
        docker-common \
        docker-latest \
        docker-latest-logrotate \
        docker-logrotate \
        docker-engine

1.2、安装Docker前置准备

告诉Linux安装地址之前需要先通过yum命令联网安装需要的包:

yum install -y yum-utils

告诉Linux,Docker的安装地址:

yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

1.3、安装Docker

通过这个命令,安装Docker引擎、客户端、容器:

yum install docker-ce docker-ce-cli containerd.io

1.4、启动Docker服务

启动Docker服务后,检查版本,如果一切正常就说明Linux中的Docker安装成功了!

# 启动Docker服务
systemctl start docker

# 启动后检查Docker版本
docker -v

1.5、设置Docker开机自启动

我们的Docker不是开机就会启动的,所以每次开机Linux需要启动Docker服务,非常麻烦,我们可以设置成Docker开机自启动:

# 这样Docker就开机自启了
systemctl enable docker

1.6、配置Docker阿里云镜像加速

经过上述操作,我们已经顺利安装好Docker,接下来使用Docker过程中,我们需要通过Docker联网去DockerHub上下载镜像使用,所以我们为了下载更快,需要先配置好阿里云镜像,加速下载:

# 根据虚线逐条执行,不要一起执行
mkdir -p /etc/docker

=================================================================

tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://8er86g8v.mirror.aliyuncs.com"]
}
EOF

=================================================================

systemctl daemon-reload

=================================================================

systemctl restart docker

2、安装MySQL

2.1、下拉MySQL镜像

我们通过命令直接去DockerHub下拉MySQL镜像,这里我们使用的是5.7版本的MySQL(因为我目前不是超级管理员权限,需要加上sudo):

# 下拉镜像
docker pull mysql:5.7

# 检查镜像是否下载成功
docker images

在这里插入图片描述

2.2、启动MySQL容器

# 启动MySQL镜像
docker run -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7

# 查看MySQL容器(镜像启动后就是容器)
docker ps

2.3、修改MySQL配置

使用mysql之前我们需要先进行配置修改,直接修改Linux的挂载文件即可(毕竟数据可以同步)

# 进入配置目录
cd /mydata/mysql/conf

# 编写配置文件
vi my.cnf

# 粘贴内容
[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve

# 修改完配置需要重启容器才能生效
docker restart mysql

3、安装Redis

3.1、下拉Redis镜像

# 下载Redis镜像(不指定版本就是最新版)
docker pull redis

3.2、启动Redis容器

注意:我们需要现在Linux中把文件建好,在进行Redis容器挂载,否则会出错(MySQL不需要提前建文件)

# 创建目录和配置文件
mkdir -p /mydata/redis/conf
cd /mydata/redis/conf
touch redis.conf

# 启动镜像
docker run -p 6379:6379 --name redis -v /mydata/redis/data:/data \
-v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \
-d redis redis-server /etc/redis/redis.conf

# 查看Redis是否启动
docker ps

4、安装ElasticSearch

4.1、下拉ElasticSearch镜像

下载ElasticSearch镜像(我选择7.4.2版本),检索数据需要存放在该容器中:

docker pull elasticsearch:7.4.2

4.2、下拉Kibana镜像

下载Kibana镜像,Kibana是ElasticSearch的可视化界面,类似于操作MySQL的Navicat:

docker pull kibana:7.4.2

4.3、启动容器前配置

# 创建config文件夹(用于挂载ES的配置)
mkdir -p /mydata/elasticsearch/config
# 创建data文件夹(用于挂载ES的数据)
mkdir -p /mydata/elasticsearch/data
# 进入到config文件夹,执行该命令,添加ES配置文件
# 该文件作用:可以接收所有远程主机的访问
echo "http.host: 0.0.0.0" >/mydata/elasticsearch/config/elasticsearch.yml
# 修改文件权限,保证任何用户任何组都可读写(否则ElasticSearch容器启动就会闪退)
chmod -R 777 /mydata/elasticsearch/

4.4、启动ElasticSearch容器

命令:

docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx128m" \
-v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \
-v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.4.2 

解释:

–name:为容器起个名
-p:暴露端口(9200为ElasticSearch端口,9300为分布式集群节点之间的通信端口)
-e “discovery.type=single-node”:ElasticSearch以单节点模式运行
-e ES_JAVA_OPTS=“-Xms64m -Xmx128m”:初始64m,最大128m
-v:进行挂载,不多解释
-d:后台启动

4.5、启动Kibana容器

docker run --name kibana -e ELASTICSEARCH_HOSTS=http://192.168.56.10:9200 -p 5601:5601 -d kibana:7.4.2

5、安装Nacos

5.1、配置数据库

这样可以持久化Nacos数据到MySQL中,即使Nacos容器出现问题,数据也不会丢失,创建数据库脚本链接:https://github.com/alibaba/nacos/blob/master/config/src/main/resources/META-INF/nacos-db.sql

如果打不开链接,可以使用以下SQL脚本内容:

/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = config_info   */
/******************************************/
CREATE TABLE `config_info` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `data_id` varchar(255) NOT NULL COMMENT 'data_id',
  `group_id` varchar(128) DEFAULT NULL,
  `content` longtext NOT NULL COMMENT 'content',
  `md5` varchar(32) DEFAULT NULL COMMENT 'md5',
  `gmt_create` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '创建时间',
  `gmt_modified` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '修改时间',
  `src_user` text COMMENT 'source user',
  `src_ip` varchar(20) DEFAULT NULL COMMENT 'source ip',
  `app_name` varchar(128) DEFAULT NULL,
  `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
  `c_desc` varchar(256) DEFAULT NULL,
  `c_use` varchar(64) DEFAULT NULL,
  `effect` varchar(64) DEFAULT NULL,
  `type` varchar(64) DEFAULT NULL,
  `c_schema` text,
  `encrypted_data_key` text NOT NULL COMMENT '秘钥',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_configinfo_datagrouptenant` (`data_id`,`group_id`,`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info';

/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = config_info_aggr   */
/******************************************/
CREATE TABLE `config_info_aggr` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `data_id` varchar(255) NOT NULL COMMENT 'data_id',
  `group_id` varchar(128) NOT NULL COMMENT 'group_id',
  `datum_id` varchar(255) NOT NULL COMMENT 'datum_id',
  `content` longtext NOT NULL COMMENT '内容',
  `gmt_modified` datetime NOT NULL COMMENT '修改时间',
  `app_name` varchar(128) DEFAULT NULL,
  `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_configinfoaggr_datagrouptenantdatum` (`data_id`,`group_id`,`tenant_id`,`datum_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='增加租户字段';


/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = config_info_beta   */
/******************************************/
CREATE TABLE `config_info_beta` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `data_id` varchar(255) NOT NULL COMMENT 'data_id',
  `group_id` varchar(128) NOT NULL COMMENT 'group_id',
  `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
  `content` longtext NOT NULL COMMENT 'content',
  `beta_ips` varchar(1024) DEFAULT NULL COMMENT 'betaIps',
  `md5` varchar(32) DEFAULT NULL COMMENT 'md5',
  `gmt_create` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '创建时间',
  `gmt_modified` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '修改时间',
  `src_user` text COMMENT 'source user',
  `src_ip` varchar(20) DEFAULT NULL COMMENT 'source ip',
  `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
  `encrypted_data_key` text NOT NULL COMMENT '秘钥',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_configinfobeta_datagrouptenant` (`data_id`,`group_id`,`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_beta';

/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = config_info_tag   */
/******************************************/
CREATE TABLE `config_info_tag` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `data_id` varchar(255) NOT NULL COMMENT 'data_id',
  `group_id` varchar(128) NOT NULL COMMENT 'group_id',
  `tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id',
  `tag_id` varchar(128) NOT NULL COMMENT 'tag_id',
  `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
  `content` longtext NOT NULL COMMENT 'content',
  `md5` varchar(32) DEFAULT NULL COMMENT 'md5',
  `gmt_create` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '创建时间',
  `gmt_modified` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '修改时间',
  `src_user` text COMMENT 'source user',
  `src_ip` varchar(20) DEFAULT NULL COMMENT 'source ip',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_configinfotag_datagrouptenanttag` (`data_id`,`group_id`,`tenant_id`,`tag_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_tag';

/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = config_tags_relation   */
/******************************************/
CREATE TABLE `config_tags_relation` (
  `id` bigint(20) NOT NULL COMMENT 'id',
  `tag_name` varchar(128) NOT NULL COMMENT 'tag_name',
  `tag_type` varchar(64) DEFAULT NULL COMMENT 'tag_type',
  `data_id` varchar(255) NOT NULL COMMENT 'data_id',
  `group_id` varchar(128) NOT NULL COMMENT 'group_id',
  `tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id',
  `nid` bigint(20) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`nid`),
  UNIQUE KEY `uk_configtagrelation_configidtag` (`id`,`tag_name`,`tag_type`),
  KEY `idx_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_tag_relation';

/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = group_capacity   */
/******************************************/
CREATE TABLE `group_capacity` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `group_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Group ID,空字符表示整个集群',
  `quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',
  `usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量',
  `max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',
  `max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数,,0表示使用默认值',
  `max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',
  `max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量',
  `gmt_create` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '创建时间',
  `gmt_modified` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '修改时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_group_id` (`group_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='集群、各Group容量信息表';

/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = his_config_info   */
/******************************************/
CREATE TABLE `his_config_info` (
  `id` bigint(64) unsigned NOT NULL,
  `nid` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `data_id` varchar(255) NOT NULL,
  `group_id` varchar(128) NOT NULL,
  `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
  `content` longtext NOT NULL,
  `md5` varchar(32) DEFAULT NULL,
  `gmt_create` datetime NOT NULL DEFAULT '2010-05-05 00:00:00',
  `gmt_modified` datetime NOT NULL DEFAULT '2010-05-05 00:00:00',
  `src_user` text,
  `src_ip` varchar(20) DEFAULT NULL,
  `op_type` char(10) DEFAULT NULL,
  `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
  `encrypted_data_key` text NOT NULL COMMENT '秘钥',
  PRIMARY KEY (`nid`),
  KEY `idx_gmt_create` (`gmt_create`),
  KEY `idx_gmt_modified` (`gmt_modified`),
  KEY `idx_did` (`data_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='多租户改造';


/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = tenant_capacity   */
/******************************************/
CREATE TABLE `tenant_capacity` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `tenant_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Tenant ID',
  `quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',
  `usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量',
  `max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',
  `max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数',
  `max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',
  `max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量',
  `gmt_create` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '创建时间',
  `gmt_modified` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '修改时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='租户容量信息表';


CREATE TABLE `tenant_info` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `kp` varchar(128) NOT NULL COMMENT 'kp',
  `tenant_id` varchar(128) default '' COMMENT 'tenant_id',
  `tenant_name` varchar(128) default '' COMMENT 'tenant_name',
  `tenant_desc` varchar(256) DEFAULT NULL COMMENT 'tenant_desc',
  `create_source` varchar(32) DEFAULT NULL COMMENT 'create_source',
  `gmt_create` bigint(20) NOT NULL COMMENT '创建时间',
  `gmt_modified` bigint(20) NOT NULL COMMENT '修改时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_tenant_info_kptenantid` (`kp`,`tenant_id`),
  KEY `idx_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='tenant_info';

CREATE TABLE users (
	username varchar(50) NOT NULL PRIMARY KEY,
	password varchar(500) NOT NULL,
	enabled boolean NOT NULL
);

CREATE TABLE roles (
	username varchar(50) NOT NULL,
	role varchar(50) NOT NULL,
	constraint uk_username_role UNIQUE (username,role)
);

CREATE TABLE permissions (
    role varchar(50) NOT NULL,
    resource varchar(512) NOT NULL,
    action varchar(8) NOT NULL,
    constraint uk_role_permission UNIQUE (role,resource,action)
);

INSERT INTO users (username, password, enabled) VALUES ('nacos', '$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu', TRUE);

INSERT INTO roles (username, role) VALUES ('nacos', 'ROLE_ADMIN');

5.2、启动Nacos容器

#推荐使用这种方式,可以连接自己的数据库
docker run -d -p 8848:8848 -p 9848:9848 \
--name nacos \
--env MODE=standalone \
--env SPRING_DATASOURCE_PLATFORM=mysql \
--env MYSQL_SERVICE_HOST=192.168.0.12 \
--env MYSQL_SERVICE_PORT=3306 \
--env MYSQL_SERVICE_DB_NAME=nacos \
--env MYSQL_SERVICE_USER=root \
--env MYSQL_SERVICE_PASSWORD=wisesoft \
nacos/nacos-server:latest

5.3、访问Nacos地址

访问链接:http://ip:8848/nacos
默认账号:nacos
默认密码:nacos
在这里插入图片描述

5.4、注意事项

该技术文章中,安装的Nacos为2.0.3,那么nacos_config数据库中的config_infohis_config_infoencrypted_data_key字段需要删除掉,否则使用Nacos过程中会报错!

参考链接:https://blog.csdn.net/qq_60361946/article/details/127760181

6、安装XXL-JOB

6.1、配置数据库

跟安装nacos一样,需要先准备数据库,这里不做过多解释:

https://github.com/xuxueli/xxl-job/blob/master/doc/db/tables_xxl_job.sql

CREATE database if NOT EXISTS `xxl_job` default character set utf8mb4 collate utf8mb4_unicode_ci;
use `xxl_job`;

SET NAMES utf8mb4;

CREATE TABLE `xxl_job_info` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `job_group` int(11) NOT NULL COMMENT '执行器主键ID',
  `job_desc` varchar(255) NOT NULL,
  `add_time` datetime DEFAULT NULL,
  `update_time` datetime DEFAULT NULL,
  `author` varchar(64) DEFAULT NULL COMMENT '作者',
  `alarm_email` varchar(255) DEFAULT NULL COMMENT '报警邮件',
  `schedule_type` varchar(50) NOT NULL DEFAULT 'NONE' COMMENT '调度类型',
  `schedule_conf` varchar(128) DEFAULT NULL COMMENT '调度配置,值含义取决于调度类型',
  `misfire_strategy` varchar(50) NOT NULL DEFAULT 'DO_NOTHING' COMMENT '调度过期策略',
  `executor_route_strategy` varchar(50) DEFAULT NULL COMMENT '执行器路由策略',
  `executor_handler` varchar(255) DEFAULT NULL COMMENT '执行器任务handler',
  `executor_param` varchar(512) DEFAULT NULL COMMENT '执行器任务参数',
  `executor_block_strategy` varchar(50) DEFAULT NULL COMMENT '阻塞处理策略',
  `executor_timeout` int(11) NOT NULL DEFAULT '0' COMMENT '任务执行超时时间,单位秒',
  `executor_fail_retry_count` int(11) NOT NULL DEFAULT '0' COMMENT '失败重试次数',
  `glue_type` varchar(50) NOT NULL COMMENT 'GLUE类型',
  `glue_source` mediumtext COMMENT 'GLUE源代码',
  `glue_remark` varchar(128) DEFAULT NULL COMMENT 'GLUE备注',
  `glue_updatetime` datetime DEFAULT NULL COMMENT 'GLUE更新时间',
  `child_jobid` varchar(255) DEFAULT NULL COMMENT '子任务ID,多个逗号分隔',
  `trigger_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '调度状态:0-停止,1-运行',
  `trigger_last_time` bigint(13) NOT NULL DEFAULT '0' COMMENT '上次调度时间',
  `trigger_next_time` bigint(13) NOT NULL DEFAULT '0' COMMENT '下次调度时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE `xxl_job_log` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `job_group` int(11) NOT NULL COMMENT '执行器主键ID',
  `job_id` int(11) NOT NULL COMMENT '任务,主键ID',
  `executor_address` varchar(255) DEFAULT NULL COMMENT '执行器地址,本次执行的地址',
  `executor_handler` varchar(255) DEFAULT NULL COMMENT '执行器任务handler',
  `executor_param` varchar(512) DEFAULT NULL COMMENT '执行器任务参数',
  `executor_sharding_param` varchar(20) DEFAULT NULL COMMENT '执行器任务分片参数,格式如 1/2',
  `executor_fail_retry_count` int(11) NOT NULL DEFAULT '0' COMMENT '失败重试次数',
  `trigger_time` datetime DEFAULT NULL COMMENT '调度-时间',
  `trigger_code` int(11) NOT NULL COMMENT '调度-结果',
  `trigger_msg` text COMMENT '调度-日志',
  `handle_time` datetime DEFAULT NULL COMMENT '执行-时间',
  `handle_code` int(11) NOT NULL COMMENT '执行-状态',
  `handle_msg` text COMMENT '执行-日志',
  `alarm_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '告警状态:0-默认、1-无需告警、2-告警成功、3-告警失败',
  PRIMARY KEY (`id`),
  KEY `I_trigger_time` (`trigger_time`),
  KEY `I_handle_code` (`handle_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE `xxl_job_log_report` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `trigger_day` datetime DEFAULT NULL COMMENT '调度-时间',
  `running_count` int(11) NOT NULL DEFAULT '0' COMMENT '运行中-日志数量',
  `suc_count` int(11) NOT NULL DEFAULT '0' COMMENT '执行成功-日志数量',
  `fail_count` int(11) NOT NULL DEFAULT '0' COMMENT '执行失败-日志数量',
  `update_time` datetime DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `i_trigger_day` (`trigger_day`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE `xxl_job_logglue` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `job_id` int(11) NOT NULL COMMENT '任务,主键ID',
  `glue_type` varchar(50) DEFAULT NULL COMMENT 'GLUE类型',
  `glue_source` mediumtext COMMENT 'GLUE源代码',
  `glue_remark` varchar(128) NOT NULL COMMENT 'GLUE备注',
  `add_time` datetime DEFAULT NULL,
  `update_time` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE `xxl_job_registry` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `registry_group` varchar(50) NOT NULL,
  `registry_key` varchar(255) NOT NULL,
  `registry_value` varchar(255) NOT NULL,
  `update_time` datetime DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `i_g_k_v` (`registry_group`,`registry_key`,`registry_value`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE `xxl_job_group` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `app_name` varchar(64) NOT NULL COMMENT '执行器AppName',
  `title` varchar(12) NOT NULL COMMENT '执行器名称',
  `address_type` tinyint(4) NOT NULL DEFAULT '0' COMMENT '执行器地址类型:0=自动注册、1=手动录入',
  `address_list` text COMMENT '执行器地址列表,多地址逗号分隔',
  `update_time` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE `xxl_job_user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(50) NOT NULL COMMENT '账号',
  `password` varchar(50) NOT NULL COMMENT '密码',
  `role` tinyint(4) NOT NULL COMMENT '角色:0-普通用户、1-管理员',
  `permission` varchar(255) DEFAULT NULL COMMENT '权限:执行器ID列表,多个逗号分割',
  PRIMARY KEY (`id`),
  UNIQUE KEY `i_username` (`username`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE `xxl_job_lock` (
  `lock_name` varchar(50) NOT NULL COMMENT '锁名称',
  PRIMARY KEY (`lock_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

INSERT INTO `xxl_job_group`(`id`, `app_name`, `title`, `address_type`, `address_list`, `update_time`) VALUES (1, 'xxl-job-executor-sample', '示例执行器', 0, NULL, '2018-11-03 22:21:31' );
INSERT INTO `xxl_job_info`(`id`, `job_group`, `job_desc`, `add_time`, `update_time`, `author`, `alarm_email`, `schedule_type`, `schedule_conf`, `misfire_strategy`, `executor_route_strategy`, `executor_handler`, `executor_param`, `executor_block_strategy`, `executor_timeout`, `executor_fail_retry_count`, `glue_type`, `glue_source`, `glue_remark`, `glue_updatetime`, `child_jobid`) VALUES (1, 1, '测试任务1', '2018-11-03 22:21:31', '2018-11-03 22:21:31', 'XXL', '', 'CRON', '0 0 0 * * ? *', 'DO_NOTHING', 'FIRST', 'demoJobHandler', '', 'SERIAL_EXECUTION', 0, 0, 'BEAN', '', 'GLUE代码初始化', '2018-11-03 22:21:31', '');
INSERT INTO `xxl_job_user`(`id`, `username`, `password`, `role`, `permission`) VALUES (1, 'admin', 'e10adc3949ba59abbe56e057f20f883e', 1, NULL);
INSERT INTO `xxl_job_lock` ( `lock_name`) VALUES ( 'schedule_lock');

commit;

6.2、配置docker-compose.yml文件

version: "2.2"
services:
  xxl-job-admin:
    restart: always
    image: xuxueli/xxl-job-admin:2.3.1
    container_name: xxl-job-admin
    volumes:
      - /data/xxl-job-admin/logs:/data/applogs
    ports:
      - "8800:8800"
    environment:
      PARAMS: '
      --server.port=8800
      --server.servlet.context-path=/xxl-job-admin
      --spring.datasource.url=jdbc:mysql://120.53.242.235:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
      --spring.datasource.username=root
      --spring.datasource.password=root      
      --xxl.job.accessToken=Lpoms_xxljob_default_token'

6.3、运行docker-compose.yml文件

# 安装 docker-compose
yum install docker-compose
# 移动文件
cd /usr/bin
mv docker-compose /usr/local/bin
# 查看版本
docker-compose version
# 启动 docker-compose
docker-compose up -d

启动完成后访问:http://ip:8800/xxl-job-admin/
默认账号:admin
默认密码:123456
在这里插入图片描述

7、安装Sentinel

7.1、下拉Sentinel镜像

# DockerHub仓库搜索Sentinel镜像
docker search sentinel

# 下拉Sentinel镜像
docker pull bladex/sentinel-dashboard

7.2、启动Sentinel容器

docker run --name sentinel-dashboard -p 8858:8858 -d bladex/sentinel-dashboard:latest  

7.3、访问Sentinel

启动完成后,访问地址:http://ip:8858
登录账号: sentinel
登录密码:sentinel
在这里插入图片描述

8、安装Jenkins

8.1、下拉Jenkins镜像

docker pull jenkins/jenkins

8.2、启动Jenkins容器

# 先创建挂载目录,分配权限
mkdir -p /mydata/jenkins_home/
chmod 777 /mydata/jenkins_home/

# 启动容器
docker run -d -p 8080:8080 -p 50000:50000 -v /mydata/jenkins_home:/var/jenkins_home -v /etc/localtime:/etc/localtime --name jenkins jenkins/jenkins

8.3、配置镜像加速

# 进入挂载目录
cd /mydata/jenkins_home

# 修改配置文件,将url标签内容修改为清华大学官方镜像
# https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
vim hudson.model.UpdateCenter.xml

8.4、访问Jenkins

获取Jenkins登录密码:

# 查看Jenkins密码
cat /mydata/jenkins_home/secrets/initialAdminPassword

浏览器输入ip:8080,进入到Jenkins页面,输入密码登录即可:
在这里插入图片描述

9、安装Kafka

9.1、启动Zookpeer容器

# 建立网络
docker network create app-tier --driver bridge

# 安装Zookpeer
docker run -d --name zookeeper-server \
    --network app-tier \
    -e ALLOW_ANONYMOUS_LOGIN=yes \
    bitnami/zookeeper:latest

9.2、启动Kafka容器

docker run -d --name kafka-server \
    --network app-tier \
    -p 9092:9092 \
    -e ALLOW_PLAINTEXT_LISTENER=yes \
    -e KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper-server:2181 \
    -e KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://192.168.0.101:9092 \
    bitnami/kafka:latest

10、安装Minio

10.1、下拉Minio镜像

docker pull minio/minio

10.2、启动Minio容器

# 创建挂载目录
mkdir -p /home/minio/config
mkdir -p /home/minio/data

# 启动容器
docker run -p 9000:9000 -p 9090:9090 \
     --name minio \
     -d --restart=always \
     -e "MINIO_ACCESS_KEY=minioadmin" \
     -e "MINIO_SECRET_KEY=minioadmin" \
     -v /home/minio/data:/data \
     -v /home/minio/config:/root/.minio \
     minio/minio server \
     /data --console-address ":9090" -address ":9000"

10.3、访问Minio

通过ip:9090/login即可访问Minio:
在这里插入图片描述

11、安装Nginx

11.1、下拉镜像

docker run -p80:80 --name nginx -d nginx

11.2、移动配置文件

# 创建文件夹
mkdir -p /mydata/nginx/html
mkdir -p /mydata/nginx/logs
mkdir -p /mydata/nginx/conf

# nginx 配置文件拷贝
docker container cp nginx:/etc/nginx /mydata/nginx/conf/
mv /mydata/nginx/conf/nginx/* /mydata/nginx/conf/
rm -rf /mydata/nginx/conf/nginx

11.3、停止、删除Nginx容器

# 停止 nginx 容器
docker stop nginx
# 删除 nginx 容器
docker rm nginx

11.4、启动Nginx容器

docker run -p 80:80 --name nginx \
-v /mydata/nginx/html:/usr/share/nginx/html \
-v /mydata/nginx/logs:/var/log/nginx \
-v /mydata/nginx/conf/:/etc/nginx \
--restart always nginx
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Docker部署中间件总结(MySQL、Redis、ElasticSearch、XXL-JOB、Sentinel等...) 的相关文章

  • Ubuntu Python shebang 线不工作

    无法让 shebang 线在 Ubuntu 中为 python 脚本工作 我每次只收到命令未找到错误 test py usr bin env python print Ran which python usr bin python 在 sh
  • Docker Hub API v2 令牌身份验证问题

    目前 我正在开发一个非常轻量级版本的 Docker 容器编排器 并且我必须能够从公共 Docker Hub 注册表获取图像摘要 我想使用 Docker Registry API v2 来实现此目的 我正在尝试使用以下 API 调用获取授权令
  • MySql 最后插入 ID,连接器 .net

    我正在使用 MySql Connector net 我需要获取最后一个查询生成的插入 id 现在 我假设返回值是MySqlHelper ExecuteNonQuery应该是最后一个插入id 但它只返回1 我正在使用的代码是 int inse
  • 使 pdo::query 静态

    当我运行下面的代码时出现此错误 我通常使用 msql 函数 但我尝试使用 PDO 代替 怎么了 致命错误 第 14 行无法静态调用非静态方法 PDO query
  • Nextjs 无法在生产环境中的“.next”目录中找到有效的构建

    我正在 docker 中运行我的应用程序 但我的生产构建和启动脚本仅在 docker 环境中失败 虽然node env开发在docker环境下运行良好 这是我的脚本 无法进行生产构建并启动服务器 我正在使用nodemon和babel bui
  • Python:如何使用生成器来避免 sql 内存问题

    我有以下方法来访问 mysql 数据库 并且查询在服务器中执行 我无权更改有关增加内存的任何内容 我对生成器很陌生 并开始阅读更多有关它的内容 并认为我可以将其转换为使用生成器 def getUNames self globalUserQu
  • mysql-如何向列申请补助?

    用户名 撤销对数据库的选择 Person I set GRANT SELECT id ON database Person TO username localhost 不是工作 gt SELECT secret FROM Person Go
  • “ModuleNotFoundError:我的 Docker 容器中没有名为 的模块”

    我正在尝试在 Docker 容器中运行 python 脚本 但我不知道为什么 python 找不到任何 python 模块 我认为它与 PYTHONPATH 环境变量有关 所以我尝试将其添加到 Dockerfile 中 如下所示 ENV P
  • PHP 绑定“bigint”数据类型(MySQLi 准备好的语句)

    studentId 57004542323382 companyOfferId 7 sql INSERT INTO studentPlacement companyOfferId studentId VALUES if stmt db gt
  • 截断 Mysql 表 Cron 作业?

    我在如何使用 cron 作业截断 Mysql 表时遇到了一些麻烦 无论我尝试什么 我似乎都无法让数据库清除表格 感谢您的帮助 mysql uderp example pexample hlocalhost Dexample e TRUNCA
  • vmsplice() 和 TCP

    在原来的vmsplice 执行 有人建议 http lwn net Articles 181169 如果您的用户态缓冲区是管道中可容纳的最大页面数的 2 倍 则缓冲区后半部分成功的 vmsplice 将保证内核使用缓冲区的前半部分完成 但事
  • MySQL 使用 ALTER IGNORE TABLE 出现重复错误

    我的 MySQL 中有一个有重复项的表 我尝试删除重复项并保留一项 我没有主键 我可以通过以下方式找到重复项 select user id server id count as NumDuplicates from user server
  • 批量删除文件名中包含 BASH 中特殊字符的子字符串

    我的目录中有一个文件列表 opencv calib3d so2410 so opencv contrib so2410 so opencv core so2410 so opencv features2d so2410 so opencv
  • 在没有 noexec 选项的情况下将卷挂载到 docker 容器中

    据我所知 docker 也包括 docker compose 使用 noexec 选项将卷安装到容器中 因此我无法从安装的目录中启动任何程序 services app build context dockerfile Dockerfile
  • MySQL PHP邮政编码比较具体距离

    我试图找出比较一个邮政编码 用户提供的 和一大堆其他邮政编码 现在大约有 200 个邮政编码 之间的距离的最有效方法 相对于加载时间 但它会随着时间的推移而增加 我不需要任何精确的东西 只是在球场上 我下载了整个美国的邮政编码 csv 文件
  • Linux 中 m 标志和 o 标志将存储在哪里

    我想知道最近收到的路由器通告的 m 标志和 o 标志的值 从内核源代码中我知道存储了 m 标志和 o 标志 Remember the managed otherconf flags from most recently received R
  • SSH,运行进程然后忽略输出

    我有一个命令可以使用 SSH 并在 SSH 后运行脚本 该脚本运行一个二进制文件 脚本完成后 我可以输入任意键 本地终端将恢复到正常状态 但是 由于该进程仍在我通过 SSH 连接的计算机中运行 因此任何时候它都会登录到stdout我在本地终
  • 将古吉拉特语文本插入 MySQL 表会产生垃圾字符和不可读的文本

    我有三个 MySQL 表 我正在向其中插入古吉拉特语内容 当我插入两个表时 它们插入得很好并且可读 但在一个表中 它显示垃圾字符 不可读的文本 我怎样才能解决这个问题 MySQL 有每个表的字符集设置 http dev mysql com
  • 带有 npm 启动脚本的 Nodejs 应用程序

    我对nodejs很陌生 在我的docker化环境中 我想为nodejs应用程序提供appdynamics支持 这要求每个应用程序都要求将以下内容作为其应用程序的第一行 require appdynamics profile controll
  • FileOutputStream.close() 中的设备 ioctl 不合适

    我有一些代码可以使用以下命令将一些首选项保存到文件中FileOutputStream 这是我已经写了一千遍的标准代码 FileOutputStream out new FileOutputStream file try BufferedOu

随机推荐

  • zTree节点重叠或者遮挡

    ztree官网 http www treejs cn v3 api php 问题 zTree节点重叠或者遮挡 分析 由于zTree和bootstrap插件样式冲突导致的树重叠问题 解决 设置zTreeStyle css文件的 ztree l
  • 机器人比赛对青少年成长的意义

    机器人比赛主要考核参赛选手的实际操作 科学素养 团队合作 创新思维 项目与时间管理和语言表达等能力 格物斯坦小坦克认为以比赛的形式给学生们提供一个交流科学技术的平台 激发学生的潜能 锻炼实际动手能力 培养学生临场随机应变的灵活思维 在提升比
  • 本地部署你的专属ChatGPT,不用想方设法翻墙了

    自ChatGPT问世以来 由于安全问题ChatGTP始终没有在国内提供服务 那访问ChatGTP有条件的就通过专线到国外进行访问 没条件的但喜欢折腾的可以通过各种野路子科学上网 没条件不喜欢折腾的听听就行 无意间在gitHub上发现了一个开
  • MySQL-DDL语句

    MySQL DDL语句 数据库操作语句 增删数据库 查看数据库列表 创建数据库 进入 使用 数据库 查看当前所在的数据库 查看数据库的建库语句 查看数据库的编码集和校验集 删除数据库 修改数据库的编码集 查看数据库支持的编码集和校验集 数据
  • C语言文件操作收尾【随机读写 + 结束判定 + 文件缓冲区】

    全文目录 前言 fseek 重定位位置指示器函数 ftell 获取当前文件指示器的位置 rewind 重置位置指示器 文本文件和二进制文件 文件读取结束的判定 feof 和 ferror 文件缓冲区 总结 前言 有了文件的顺序读写基础 那么
  • 鸿蒙系统是基于linux开发的吗

    鸿蒙系统不是基于linux开发的 而是基于微内核开发的 鸿蒙系统是一款基于微内核面向全场景的分布式操作系统 而Linux是一个单内核结构 同时又吸收了微内核的优点 避免了微内核设计上的缺陷 让一切都运行在内核态 直接调用函数 无需消息传递
  • sql-labs 5-22关(基础关)

    sql lab 第五关 这关是报错注入类型 也可以用盲注 1 判断注入类型 判断闭合方式 1 有回显 1 and 1 1 有回显 1 and 1 2 有回显 1 and 1 2 报错 猜测闭合为单引号 加上注释符 id 1 and 1 1
  • 基于QTreeView和QFileSystemModel,如何做到展开/收缩文件夹分支时改变图标?

    继承QFileSystemModel 添加变量set 重写data和setData函数即可 头文件 public QVariant data const QModelIndex index int role const bool setDa
  • 可重入锁和不可重入锁

    可重入锁 又名递归锁 是指在同一个线程中的在外层方法获取锁的时候 再进入该线程的内层方法会自动获取锁 前提锁对象得是同一个对象或者class 不会应为之前已经获取过还没释放而阻塞 java中ReentrantLock和synchronize
  • Python 爬虫天天基金数据——基金清单

    基金数据目录 1 场外基金清单 列表 2 基金净值 建议直接调用相关API接口 tushare and AKshare 3 业绩排行 4 基金评级 5 基金经理 6 基金公司 1 1关于 场外基金清单 我们可以通过天天基金网或者相关API接
  • windows下创建进程,CreateProcess()详解及用法

    windows下想要创建一个子进程不如linux的fork函数来得方便 通过CreateProcess函数创建一个新的进程 函数的定义如下 cpp view plain copy BOOL CreateProcess LPCTSTR lpA
  • JS执行机制、同步和异步、宏观任务和微观任务

    1 JS 是单线程 JavaScript 语言的一大特点就是单线程 也就是说 同一个时间只能做一件事 这是因为 Javascript 这门脚本语言诞生的使命所致 JavaScript 是为处理页面中用户的交互 以及操作 DOM 而诞生的 比
  • C# 映射递归对象

    首先映射对象很简单 同名的可以使用表达树进行一个深拷贝
  • 算法导论之单源最短路径(Bellman-Ford和Dijkstra)

    Bellman Ford 一 Bellman Ford算法的思想 Bellman Ford算法 以下简称BF算法 用于解决边的权重可以为负值的单源最短路径 它通过对边进行松弛操作逐渐降低从源结点s到各结点v的最短路径估计值v d 直到该估计
  • BT问题调试 -- HFP(AT指令)

    HFP基本知识 HFP的两个角色 AG和HF HFP AG角色发起连接请求 HFP HF角色发起连接请求 针对HFP的注意事项 必须先有SLC的建立过程 该过程可以由HF AG的任何一方发起 AT COPS用来查询运营商网络名称 AG的回应
  • 接口管理这下总会了吧?

    接口管理这下总会了吧 文章目录 接口管理这下总会了吧 使用方式 引入依赖 添加 Swagger 注解 配置扫描规则 application yaml 效果 实现原理 小结 利用 Spring Boot 快速集成 Swagger 实现 Swa
  • Massve MIMO波束成形

    转载https blog csdn net qq 23947237 article details 88395034 当 Massive MIMO 系统在基站端配置大量天线的时候 不仅提高系统硬件的复杂度 还加大了成本消耗 对于这点学术工作
  • sequence中常用的宏方法

    uvm do系列宏 宏 功能 uvm do 产生包 随机化 发包 uvm do on 在 uvm do基础上 指定用哪个sequenser发包 uvm do pri 在 uvm do基础上 给产生的transaction包指定优先级 uvm
  • 关于解决web工程在eclipse内置浏览器能显示图片,在外置浏览器不能显示的问题。

    今天下午在学习前端的一些基础 到了把图片导入网页的章节 我发现在eclipse内置的浏览器能够完美的显示 只要你把路径写好了就行 如 img alt 显示错误 src C Users Administrator eclipse worksp
  • Docker部署中间件总结(MySQL、Redis、ElasticSearch、XXL-JOB、Sentinel等...)

    文章目录 1 安装Docker 1 1 卸载旧版Docker 1 2 安装Docker前置准备 1 3 安装Docker 1 4 启动Docker服务 1 5 设置Docker开机自启动 1 6 配置Docker阿里云镜像加速 2 安装My