大数据运维调度平台TASKCTL如何进行Docker部署

89 阅读4分钟

介绍: TASKCTL是一款批量调度自动化技术专业产品

制作镜像

由于在dockerhub上没有查询到有关于TASKCTL的镜像就只能自己制作了,但由于本人仅是对软进 行件部署安装,没有实际的应用场景,所有制作的镜像也仅提供了最基础的运行环境。这也是给想要 在Docker上部署TASKCTL的小伙伴提供一点思路,可以根据个人的不同需求来定制自己的镜像。

准备工作

首先从官网下载安装包 (cir_linux_64_8.0.tar、taskctl-web-8.0.tar)

TASKCTL下载安装地址 :www.taskctl.com

Docker拉取一个centos的基本镜像:

1 docker pull centos
2 ## centos latest 5d0da3dc9764 9 months ago 231MB

制作taskctl-base镜像

先启动一个centos容器,将cir_linux_64_8.0.tar包copy到容器中。

1 # 后台启动centos并将日志输出到黑洞文件,这样防止无交互容器直接停止
2 docker run -d --name taskctl-base centos tail -f /dev/null
3 # copy 两个压缩包到容器的/root 目录下(这个根据个人喜好到哪个目录)
4 docker cp 包所在位置/cir_linux_64_8.0.tar taskctl-base:/root
5 # 进入容器
6 docker exec -it taskctl-base /bin/bash

由于安装包中用到了诸如 ifconfig 、vim的基础命令(具体需求哪些我也没仔细测),没有的话安 装会报错,所以需要安装一下基础命令。

1 yum install net-tools.x86_64 -y
2 yum install vim -y

如果报错:Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: No URLs in mirrorlist

进入/etcyum.repos.d/目录修改centos文件内容:

1 sed-i's/mirrorlist/#mirrorlist/g'/etc/yum.repos.d/CentOS-*
2 sed-i's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*

进入容器测试安装一次,如果安装成功那么就可以打包成基础镜像了。安装教程官网也有,就是 linux下安装TASKCTL,这里就简要说一下。

1 #配置环境变量
2 vim/etc/profile
3 #写入内容
4 exportTASKCTLDIR=$HOME/taskctl
5 exportPATH=$PATH:$TASKCTLDIR/bin:.
6 #生效
7 source/etc/profile
8 #查看centos的ip地址,安装的时候用(我这里是127.17.0.2)
9 # 安装java环境
10 yum install java-1.8.0-openjdk-devel.x86_64

安装TASKCTL核心服务

1 cd/root/cirinst/ 
2 ./inst

选择2.自定义安装---->调度服务安装(无高可靠)------>输入ip(127.17.0.2) ----- >端口

初始化节点并启动

1 # 初始化
2 ctlinit
3 #启动
4 ctlstart
5 #查看基本信息,选择1,节点基本信息 6 ctlninfo

启动web服务(安装了java环境以后),直接解压taskctl-web包运行包下的./startup.sh脚本。 到此处安装成功。确认环境和安装包都没有问题,那么就可以制作镜像了。

1.#退出并停止容器 
2.exit

提交镜像

1.docker commit -a="huangrui" -m="taskctl" taskctl-base huangrui/taskctl-base

制作基础镜像完成。

启动服务

上面制作的基础镜像中带有核心的安装包和web的安装包,满足了taskctl基础环境。一下所有 的容器也是在此镜像的基础上搭建的。

新建Docker网络

 1 docker network create --driver bridge --subnet 172.17.0.0/16 --gateway 172.17.0.1 taskctl-network

新建所有的taskctl服务都是用自建的docker-network网络,这样就无需使用ip可以直接使用容器 名进行识别,也减少了由于网络不通出现的错误。

启动task-service容器

1 # 80 端口是web服务的端口,配置文件在/root/taskctl-web-8.0.010/conf/application.yml中
2 docker run -d -p 8888:80 --name docker-task8 huangrui/taskctl-base
3 # 启动核心服务
4 docker exec -it docker-task8 ctlinit
5 docker exec -it docker-task8 ctlstart
6 docker exec -it docker-task8 /root/taskctl-web-8.0.010/start.sh

到此访问IP:8888就可以使用TASKCTL服务了

代理节点

代理节点的安装和service的其实大同小异,进入taskctl-base中,在安装task服务的时候选择代理 节点安装,然后退出容器,保存镜像即可。这样吧service节点和代理节点镜像分开,对于批量启动仅 需要修改代理的IP即可。

其他

由于本教程仅提供思路,所有就没有上传我的镜像,制作起来也不难。主要遇到的坑在于安装代理 节点的时候容器的IP和已安装的节点IP不同,这样批量启动的时候每个容器都去重新安装属实不舒服, 提供两个解决思路:

1.使用Docker网络,在制作镜像时候配置容器host:

格式: 镜像名称 ifconfig中的IP

2. 使用脚本,在大量启动代理节点时修改/root/taskctl/conf目录下的配置地址(ifconfig),也 可以使用启动时固定写死IP