Marathon on OS X初體驗

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

Marathon簡介

Marathon是Mesosphere公司爲Mesos生態圈打造的一個輕量級、擴展性很強的調度long-running service的調度框架。支持RESTful api來創建和管理app,自動爲app做容錯遷移,凡是能用shell起的任務,理論上都可以通過Marathon在mesos上簡單地啓動和管理起來。

下圖爲Mesos, Marathon, Chronos混布示意圖:

Mesos, Marathon, Chronos混布示意圖

安裝和啓動過程

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 ui

填完後,mesos UI上開始定時地蹦出大量的task,
mesos UI

跟到日誌裏看,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管理服務。

全文完:)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章