手把手教你如何在Docker环境下安装elastic-job-cloud

手把手教你如何在Docker环境下安装elastic-job-cloud

前言

本文默认你本地已经安装好了Docker环境,同时也具备本地编译打包elastic-job-cloud的环境工具(Git, Maven, JDK),这里仅介绍如何在Docker环境下进行快速部署,下面为了书写方便,将elastic-job-cloud简称为EJC。

准备工作

首先的工作就是要将EJC依赖的Mesos环境搭建起来。
Mesos官网只有源码,如果本地编译需要安装很多系统编译工具,这里为了方便直接使用mesosphere公司发布的镜像。这里我就启动了一个agent,如果你需要多个的,多启动几个即可。
注意:我zk容器的地址为172.17.0.2,你们在部署的时候需要按照你们自己实际IP进行替换
1. 使用命令docker pull zookeeper下载zookeeper镜像
2. 使用命令docker pull mesosphere/mesos-master:1.6.0-rc1下载mesos-master镜像
3. 使用命令docker pull mesosphere/mesos-agent:1.6.0-rc1下载mesos-agent镜像
4. 使用命令command_1中的命令启动zookeeper
5. 使用命令docker inspect --format '{{ .NetworkSettings.IPAddress }}' <container_id> 找出zk容器的IP地址
6. 使用命令command_2中的命令启动mesos-master。
7. 使用命令command_3中的命令启动mesos-agent
8. 浏览器输入http://localhost:5050, 即可查看Mesos Framework的UI操作界面
到这里EJC依赖的Mesos环境就搭建好了,可以使用docker logs container_id 来查看mesos的启动日志。
command_1:

docker run -d \
-p 2181:2181 \
-p 2888:2888 \
-p 3888:3888 \
zookeeper

command_2:

docker run \
-p 5050:5050 \
-e "MESOS_ZK=zk://172.17.0.2:2181/mesos" \
-e "MESOS_PORT=5050" \
-e "MESOS_LOG_DIR=/var/log/mesos" \
-e "MESOS_QUORUM=1" \
-e "MESOS_REGISTRY=in_memory" \
-e "MESOS_WORK_DIR=/var/lib/mesos" \
-d mesosphere/mesos-master:1.6.0-rc1

command_3:

docker run -d \
-e MESOS_PORT=5051 \
-e MESOS_MASTER=zk://172.17.0.2:2181/mesos \
-e MESOS_SWITCH_USER=0 \
-e MESOS_CONTAINERIZERS=docker,mesos \
-e MESOS_LOG_DIR=/var/log/mesos \
-e MESOS_WORK_DIR=/var/tmp/mesos \
-e MESOS_SYSTEMD_ENABLE_SUPPORT=false \
-v "$(pwd)/log/mesos:/var/log/mesos" \
-v "$(pwd)/tmp/mesos:/var/tmp/mesos" \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /sys:/sys \
-v /usr/local/bin/docker:/usr/local/bin/docker \
mesosphere/mesos-agent:1.6.0-rc1

Mesos的UI界面就是长这个样子:
MesosUI操作界面

进入正题

刚开始我以为EJC是远程调用Mesos服务来执行任务的,所以就直接在本地启动了EJC,结果就报错了,本地没有Mesos lib库,所以EJC的运行环境是要依赖Mesos的。这个时候我就只有2个选择,第一就是在本地安装Mesos,第二就是自制EJC的Docker镜像,毫无疑问我选择了第二种。

编译EJC

GitHub上下载或者clone代码到本地,执行mvn clean install获取zip压缩包。

镜像从何而来

对于Docker其实我只是一个初学者,查资料知道最好的方式就是写Dockerfile。因为镜像其实是有继承性的,所以我想的是基于Mesos的镜像,再安装下JDK,然后把EJC的包打进去就好了。于是就写了一个很简单的DockerFile,名称elastic-job-cloud-df

FROM mesosphere/mesos:1.6.0-rc1
MAINTAINER huyong <huyong5802@gmail.com>

RUN apt-get update && \
  apt-get -y install openjdk-8-jdk && \
  apt-get -y install unzip && \
  java -version
VOLUME /logs
ADD elastic-job-cloud.zip elastic-job-cloud.zip
RUN bash -c 'unzip elastic-job-cloud.zip'
ENTRYPOINT ["sh", "elastic-job-cloud/bin/start.sh"]

制作镜像

  1. 将编译而来的zip压缩包复制到Dockerfile同级目录下
  2. 解压zip压缩包
  3. 按照官方文档修改elastic-job-cloud-scheduler.properties文件的配置参数, config_demo是我的配置样例
  4. 到此,原则上应该说是准备完成了,但是我在运行docker的时候发现start.sh的脚本有些不兼容,报source not found[: =: unexpected operator 错误。所以我就source替换成了., 参数加上了双引号。至于你想问我为什么这么六,我只能告诉你多Google一下就好了。下面给出我的start.sh的脚本。
  5. 在Dockerfile的路径下使用docker build -t huyong/elastic-job-cloud:1.6.0-rc1 -f elastic-job-cloud-df .制作镜像

config_demo

# Routable IP address
hostname=172.17.0.5

# Username for mesos framework
user=root

# Mesos zookeeper address
mesos_url=zk://172.17.0.2:2181/mesos

# Role for mesos framework

#mesos_role=

# Elastic-Job-Cloud's zookeeper address
zk_servers=172.17.0.2:2181

# Elastic-Job-Cloud's zookeeper namespace
zk_namespace=elastic-job-cloud

# Elastic-Job-Cloud's zookeeper digest
zk_digest=

# Job rest API port
http_port=8899

# Max size of job accumulated
job_state_queue_size=100

# Event trace rdb config

#event_trace_rdb_driver=com.mysql.jdbc.Driver

#event_trace_rdb_url=jdbc:mysql://localhost:3306/elastic_job_cloud_log

#event_trace_rdb_username=root

#event_trace_rdb_password=

# Task reconciliation interval

#reconcile_interval_minutes=-1

# Enable/Disable mesos partition aware feature

# enable_partition_aware=false
#!/bin/bash
cd `dirname $0`
cd ..
DEPLOY_DIR=`pwd`
CONF_DIR=${DEPLOY_DIR}/conf
LIB_DIR=${DEPLOY_DIR}/lib/*
CONTAINER_MAIN=io.elasticjob.cloud.scheduler.Bootstrap
JAVA_OPTS=" -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true -Djava.library.path=/usr/local/lib:/usr/lib:/usr/lib64"

. ${CONF_DIR}/elastic-job-cloud-scheduler.properties
if [ "${hostname}" = "" ] || [ "${hostname}" = "127.0.0.1" ] || [ "${hostname}" = "localhost" ]; then
  echo "Please config hostname in conf/elastic-job-cloud-scheduler.properties with a routable IP address."
  exit;
fi
export LIBPROCESS_IP=${hostname}

java ${JAVA_OPTS} -classpath ${CONF_DIR}/*:${LIB_DIR}:. ${CONTAINER_MAIN}

容器运行EJC

使用命令docker run -d -p 8899:8899 huyong/elastic-job-cloud:1.6.0-rc1 启动EJC,启动完成以后使用浏览器访问http://localhost:8899即可。
elastic-job-cloud UI操作界面

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要使用docker-compose安装xxl-job,可以按照以下步骤进行操作: 1. 首先,确保你已经安装Dockerdocker-compose。如果没有安装,请先安装它们。 2. 创建一个docker-compose.yml文件,并将下面的内容复制到文件中: ``` version: '3' services: xxl-job: image: xuxueli/xxl-job-admin:2.2.0 container_name: xxl-job environment: PARAMS: "--spring.datasource.url=jdbc:mysql://{数据库IP}:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai --spring.datasource.username=root --spring.datasource.password={数据库用户密码}" ports: - 8080:8080 volumes: - /data/docker/xxl-job/logs/:/data/applogs/xxl-job/ ``` 3. 将{数据库IP}替换为你的数据库服务器的IP地址,将{数据库用户密码}替换为你的数据库的用户名和密码。 4. 在终端中,进入docker-compose.yml文件所在的目录,然后运行以下命令启动容器: ``` docker-compose up -d ``` 5. 等待一段时间,直到容器启动完成。你可以使用以下命令检查容器的状态: ``` docker ps ``` 6. 如果容器成功启动,你可以通过访问http://localhost:8080来访问xxl-job的管理界面。 这样,你就可以使用docker-compose安装xxl-job了。<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* *2* [Docker compose 安装 xxl-job](https://blog.csdn.net/u011069013/article/details/108756572)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值