Mesos實踐 基於MZM的PAAS的構建 3 Marathon簡介
為分散式微服務框架提供合適的PAAS平臺,使用成熟的M(Mesos)Z(Zookeeper)M(Marathon)可以作為選擇之一。在本文中將會對Marathon進行簡單的介紹。
URL | https://github.com/mesosphere/marathon |
---|
什麼是Marathon
Marathon是一個可以用於生產環境的容器編排框架,如果說Mesos把自身定成分散式的作業系統的話,那麼Marathon就是執行在作業系統上為其管理各種應用程序的init大管家。
同時從Marathon 0.7.0 和Mesos 0.20.0之後,更是更加容易更加原生態地部署/執行/擴充套件Docker容器應用。目前也已經在很多公司中得到了廣泛的應用比如:eBay/PayPal/Yelp等。
特性
特性 | 詳細說明 |
---|---|
High Availability | Marathon runs as an active/passive cluster with leader election for 100% uptime. |
Multiple container runtimes | 支援使用cgroups的Mesos Containers和Docker |
Stateful apps | Marathon can bind persistent storage volumes to your application. You can run databases like MySQL and Postgres, and have storage accounted for by Mesos. |
UI | 華美而且強大 |
Constraints | e.g. Only one instance of an application per rack, node, etc. |
服務發現和負載均衡 | 多種實現 |
Health Checks | 使用HTTP或者TCP方式評估應用程式執行狀況 |
Event Subscription | Supply an HTTP endpoint to receive notifications - for example to integrate with an external load balancer. |
Metrics | Query them at /metrics in JSON format or push them to systems like graphite, statsd and Datadog. |
REST API | 完整的REST API,可以更加便利地整合 |
執行環境依賴
元件 | 詳細說明 |
---|---|
libmesos | JNI繫結以便於Mesos Master進行通訊 |
Apache Zookeeper | Leader選舉時需要用到Zookeeper |
CentOS7上的安裝
yum install -y marathon
- 1
設定zookeeper的quorum
設定檔案:/etc/marathon/conf/zk
設定zookeeper的quorum 比如:zk://192.168.32.32:2181,192.168.32.33:2181,192.168.32.34:2181/marathon
也可以在啟動的時候通過--zk指定
- 1
- 2
- 3
高可用性模式
Marathon預設啟用高可用性模式,如果需要關閉的話使用–disable_ha在命令列中進行設定即可。
啟動/停止/確認狀態
CentOS下使用systemctl即可對marathon的進行啟動/停止/狀態確認。
啟動:systemctl start marathon
啟動:systemctl stop marathon
啟動:systemctl status marathon
- 1
- 2
- 3
Application
我們說Marathon類似於init,那麼執行在其上的就被稱為Application,典型情況下每個Application代表著一個在持續執行著的服務(也有人稱之為長服務,因為很多E文的資料中為 long-running service),
而這些服務可以在多個機器啟動多個例項,通過調整例項的個數來進行系統的橫向擴充套件。
Hello Marathon
讓我們來舉一個具體的例子來說明,在Marathon上描述這樣一個Application:
每5秒鐘說一句Hello Marathon,永不停息。從Marathon看來描述這個Application的JSON可能就長成如下這個樣子。
{
"id": "basic-0",
"cmd": "while [ true ] ; do echo 'Hello Marathon' ; sleep 5 ; done",
"cpus": 0.1,
"mem": 10.0,
"instances": 1
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
這是一個id名稱為basic-0的Application,啟動的例項是1,分配的CPU和記憶體分別是0.1和10MB,執行的內容則是每sleep 5秒鐘就echo一下Hello Marathon的這樣一個死迴圈的指令碼。
而這個執行的方式這是通過Mesos呼叫/bin/sh -c ${cmd}來實現的。而在Marathon上管理這樣的Appliction,則可以通過它宣稱非常Beautiful 且 powerful的UI來可視地展現。
Marathon與DC/OS
更為簡單的使用Marathon的方法官方稱是使用DC/OS, 因為在DC/OS中預安裝了Marathon,所以可以直接使用。對DC/OS感興趣的話,可以參看下面的文章進行部署。基本上DC/OS也是在MZM的基礎上進一步的封裝,
但是它更側重於“像管理一臺機器那樣管理整個Data Center”,ALL-In-One的全部安裝了,本系列文章側重於我們自己也有動手搭建簡單的類似平臺的能力,所以略顯囉嗦。
專案 | URL地址 |
---|---|
DC/OS專題之安裝部署篇 | http://blog.csdn.net/liumiaocn/article/details/52049434 |
再分享一下我老師大神的人工智慧教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智慧的隊伍中來!https://www.cnblogs.com/captainbed