Marathon on OS X初体验

本文描述了在OS X上安装使用Marathon的过程。

Marathon简介

Marathon是Mesosphere公司为Mesos生态圈打造的一个轻量级、扩展性很强的调度long-running service的调度框架。支持RESTful api来创建和管理app,自动为app做容错迁移,凡是能用shell起的任务,理论上都可以通过Marathon在mesos上简单地启动和管理起来。

下图为Mesos, Marathon, Chronos混布示意图:

Marathon on OS X初体验_第1张图片

安装和启动过程

Marathon依赖zk和mesos,如果没用mesos集群的话可以跑local模式。

首先download zookeeper包,修改conf/zoo.cfg,然后

bin/zkServer.sh start

启动一个在local:2181的单个zk服务。zk对Marathon来说,用于做同一个app的多个副本的选举,以做到app fail后marathon可以在新的mesos slave上重新启动。另一方面,zk也用于mesos集群的HA模式。即zk同时负责了对mesos和marathon的HA,但节点路径是分开的,可以见下面启动参数。

然后是安装mesos。可以直接使用brew安装,非常非常方便,

brew install mesos

启动和安装可以参考这篇文章

我也是这样在本地启动了一个master和一个slave

/usr/local/sbin/mesos-master --registry=in_memory --ip=127.0.0.1
/usr/local/sbin/mesos-slave --master=127.0.0.1:5050

然后可以在localhost:5050 看到mesos master的UI。

下载Marathon包,我使用的是0.8.0版本,支持0.20.0+版本的mesos。下载完解压就可以使用

./bin/start --master 127.0.0.1:5050 --zk zk://localhost:2181/marathon

这里连接的就是local启动的mesos master和zk。在local:8080查看marathon的UI。

hello world

我直接YY了一个hello world,在marathon提供的UI里create了一个app,如图
Marathon on OS X初体验_第2张图片

填完后,mesos UI上开始定时地蹦出大量的task,
Marathon on OS X初体验_第3张图片

跟到日志里看,stdout里打印如下日志

Registered executor on 192.168.59.3
Starting task test.c633dc4e-f7eb-11e4-b8f3-66ea63a3c279
sh -c 'echo "hello world"'
Forked command at 44530
hello world
Command exited with status 0 (pid: 44530)

Marathon上的app以json格式描述,具体见官方文档

Run with Docker

Github上描述了与Docker的交互,首先把Docker启动起来,可以参考我之前这篇文章 然后 cd到marathon目录,有个Dockerfile文件,执行

docker build -t marathon-tip .
# 接下来是漫长的package下载和install过程。。。

build成功后,在docker中启动marathon,

docker run marathon-tip --master local --zk zk://localhost:2181/marathon

总结

Marathon相比Mesos上另一个service调度框架Apache Aurora更加易上手,本身是Scala开发的,整体和mesos一样让人感觉轻量,主要提供的是google-scale能力和方便的app管理服务。

全文完:)

你可能感兴趣的:(docker,调度,mesos,marathon)