本文描述了在OS X上安裝使用Marathon的過程。
Marathon簡介
Marathon是Mesosphere公司爲Mesos生態圈打造的一個輕量級、擴展性很強的調度long-running service的調度框架。支持RESTful api來創建和管理app,自動爲app做容錯遷移,凡是能用shell起的任務,理論上都可以通過Marathon在mesos上簡單地啓動和管理起來。
下圖爲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,如圖
填完後,mesos UI上開始定時地蹦出大量的task,
跟到日誌裏看,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管理服務。
全文完:)