Mesos项目是源自UC Berkeley对集群资源进行抽象和管理的开源项目,类似于操作系统内核,用户可以使用它很容易地实现分布式应用的自动化调度。
同时,Mesos自身也很好地结合了Docker等相关容器技术,基于Mesos已有的大量应用框架,可以实现用户应用的快速上线。

软件包:mesos、zookeeper和marathon。
mesos采用经典的主从结构:若干主节点和大量从节点。
其中,mesos master服务和zookeeper需要部署到所有的主节点,mesos slave需要部署在所有从节点。
marathon可以 部署到主节点。

安装方式:源码编译、软件源、Docker镜像。

(1)源码编译方式

源码编译方式可以保障获取到最新版本,但编译过程比较费时。
首先,需要从apache.org开源网站下载最新的源码:
$git clone https://git-wip-us.apache.org/repos/asf/mesos.git
具体安装方式可参考官网介绍

(2)软件源安装方式

通过软件源方式进行安装相对会省时间,但往往不是最新版本。
添加阿里云源:
[root@adson ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
添加mesosphere源:
[root@adson ~]# rpm -Uvh http://repos.mesosphere.com/el/7/noarch/RPMS/mesosphere-el-repo-7-1.noarch.rpm
主节点:
[root@adson ~]# yum install -y mesos marathon
[root@adson ~]# yum -y install mesosphere-zookeeper
从节点:
yum install -y mesos

注意,Marathon最新版本需要jdk 1.8+的支持。
安装Mesos成功后,会在/usr/sbin/下面发现mesos-master和mesos-slave两个二进制文件,分别对应主节点上需要运行的管理服务和从节点上需要运行的任务服务。
用户可以手动运行二进制文件启动服务,也可以通过service命令来方便进行管理。
service mesos-master restart
通过service命令来管理,实际上是通过调用/usr/bin/mesos-init-wrapper脚本文件进行处理。

(3)基于Docker的方式

需要如下三个镜像:
Zookeeper:https://registry.hub.docker.com/u/garland/zookeeper/
Mesos:https://registry.hub.docker.com/u/garland/mesosphere-docker-mesos-master/
Marathon:https://registry.hub.docker.com/u/garland/mesosphere-docker-marathon/

其中mesos-master镜像在后面将分别作为master和slave角色进行使用。

拉取镜像:
主节点adson:
[root@adson ~]# docker pull garland/zookeeper
[root@adson ~]# docker pull garland/mesosphere-docker-mesos-master
docker pull garland/mesosphere-docker-marathon

从节点:
[root@registry ~]# docker pull garland/mesosphere-docker-mesos-master
[root@docker1 ~]# docker pull garland/mesosphere-docker-mesos-master

所有节点定义主节点机器的地址到环境变量:
HOST_IP=192.168.6.64

主节点:
启动zookeeper容器:
docker run -d
-p 2181:2181
-p 2888:2888
-p 3888:3888
garland/zookeeper

启动mesos-master服务容器:
docker run --net=“host”
-p 5050:5050
-e “MESOS_HOSTNAME=KaTeX parse error: Expected 'EOF', got '\ ' at position 12: {HOST_IP}" \̲ ̲-e "MESOS_IP={HOST_IP}”
-e “MESOS_ZK=zk://${HOST_IP}: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
garland/mesosphere-docker-mesos-master

启动Marathon:
docker run
-d
-p 8080:8080
garland/mesosphere-docker-marathon --master zk:// H O S T I P : 2181 / m e s o s − − z k z k : / / {HOST_IP}:2181/mesos --zk zk:// HOSTIP:2181/mesoszkzk://{HOST_IP}:2181/marathon

从节点:
启动mesos slave容器:
docker run -d
–name mesos_slave_1
–entrypoint=“mesos-slave”
-e “MESOS_MASTER=zk://${HOST_IP}:2181/mesos”
-e “MESOS_LOG_DIR=/var/log/mesos”
-e “MESOS_LOGGING_LEVEL=INFO”
garland/mesosphere-docker-mesos-master:latest

接下来,可以访问本地的8080端口来使用Marathon启动任务了。
在这里插入图片描述

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐