Mesos


简介

Mesos 项目是源自 UC Berkeley 的对集群资源进行抽象和管理的开源项目,类似于操作系统内核,用户可以使用它很容易地实现分布式应用的自动化调度:http://mesos.apache.org

Mesos 拥有许多引人注目的特性,包括:

  • 支持数万个节点的大规模场景(Apple、Twitter、eBay 等公司实践);
  • 支持多种应用框架,包括 Marathon、Singularity、Aurora 等;
  • 支持 HA(基于 ZooKeeper 实现);
  • 支持 Docker、LXC 等容器机制进行任务隔离;
  • 提供了多个流行语言的 API,包括 Python、Java、C++ 等;
  • 自带了简洁易用的 WebUI,方便用户直接进行操作。

值得注意的是,Mesos 自身只是一个资源抽象的平台,要使用它往往需要结合运行其上的分布式应用(在 Mesos 中被称作框架,framework),比如 Hadoop、Spark 等可以进行分布式计算的大数据处理应用;比如 Marathon 可以实现 PaaS,快速部署应用并自动保持运行;比如 ElasticSearch 可以索引海量数据,提供灵活的整合和查询能力等。

大部分时候,用户只需要跟这些框架打交道即可,完全无需关心底下的资源调度情况,因为 Mesos 已经自动帮你实现了。这大大方便了上层应用的开发和运维。

安装使用

下面以 Mesos 结合 Marathon 应用框架为例,来看下如何快速搭建一套 Mesos 平台。

Marathon 是可以跟 Mesos 一起协作的一个框架,基于 Scala 实现,可以实现保持应用的持续运行。

docker pull garland/zookeeper
docker pull garland/mesosphere-docker-mesos-master
docker pull garland/mesosphere-docker-marathon
HOST_IP=10.0.0.2 # 导出主节点IP到环境变量

在主节点上启动 Zookeepr 容器:

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=${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://${HOST_IP}:2181/mesos --zk zk://${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 启动任务了。


Vote Vote Cancel Collect Collect Cancel

<< 上一篇: Kubernetes

>> 下一篇: 操作系统