| 1. Mesos簡介1.1 MesosApache Mesos 是一個分布式系統(tǒng)的管理軟件,對集群的資源進行分配和管理。 
 Mesos主要由以下幾部分組成: Master: 管理各Slave節(jié)點 Slave: 為集群提供資源 Framework: scheduler從Master請求資源,executor在Slave上執(zhí)行任務(wù) Slave節(jié)點上的每個executor是一個容器 
 官方文檔: http://mesos./documentation/latest/architecture/ http://mesos./documentation/latest/getting-started/ 
 Mesos主服務(wù)器使用Zookeeper進行服務(wù)選舉和發(fā)現(xiàn)。它有一個注冊器記錄了所有運行任何和從服務(wù)器信息,使用MultiPaxos進行日志復(fù)制實現(xiàn)一致性。 Mesos有一個從服務(wù)器恢復(fù)機制,無論什么時候一個從服務(wù)器死機了,用戶的任務(wù)還是能夠繼續(xù)運行,從服務(wù)器會將一些關(guān)鍵點信息如任務(wù)信息 狀態(tài)更新持久化到本地磁盤上,重新啟動時可以從磁盤上恢復(fù)運行這些任務(wù)(類似Java中的鈍化和喚醒) 
 1.2 MarathonMarathon 是Mesos的一個Framework,用來執(zhí)行需要長時間運行的任務(wù)。如果把Mesos比喻成Kernel的話,那么Marathon就是它的守護進程Daemon。 它還具備HA,Health Checks,服務(wù)發(fā)現(xiàn)等功能。如果某個Docker進程崩潰,Marathon會重新啟動同樣的進程。 
 1.3 ChronosChronos本質(zhì)上是cron-on-mesos,這是一個用來運行基于容器定時任務(wù)的Mesos框架。 
 1.4 ZooKeeperZooKeeper用于集群的管理,包括統(tǒng)一配置管理,選舉Leader等。 
 2. 安裝Mesos本次測試環(huán)境的構(gòu)成如下: 
 Mesos Master: test166 Mesos Slave: test166,test167 Marathon: test166 Chronos: test166 ZooKeeper: test166 
 2.1 安裝準(zhǔn)備在所有機器上,安裝Mesos源 
 
 在所有機器的/etc/hosts中,指定主機名 
 
 2.2 安裝Master2.2.1 在Master上安裝Mesos,Marathon,Chronos,ZooKeeper
 如果服務(wù)器上之前裝過jdk,升級到最新版本 2.2.2 ZooKeeper設(shè)定本次配置的Master是單節(jié)點環(huán)境,ZooKeeper也是單點 
 2.2.3 啟動服務(wù)
 
 2.3 安裝Slave2.3.1 在Slave上安裝Mesos,Docker
 2.3.2 Docker相關(guān)設(shè)定
 2.3.3 ZooKeeper設(shè)定
 2.3.4 啟動服務(wù)
 
 2.4 確認Mesos的頁面 
 
 Marathon的頁面 
 
 Chronos的頁面 
 
 3. 使用Mesos在Mesos Slave頁面,可以看到兩個Slave 
 
 3.1 執(zhí)行framework測試3.1.1 在服務(wù)器上執(zhí)行framework測試命令
 3.1.2 在Frameworks頁面,可以查看任務(wù)的執(zhí)行情況
 3.1.3 點擊結(jié)束的任務(wù)頁面,可以看到在哪個Slave上執(zhí)行的
 
 3.2 測試Marathon用nc命令啟動一個HTTP服務(wù) 3.2.1 在各節(jié)點上安裝netcat
 3.2.2 在Marathon頁面,點擊“Create Application”創(chuàng)建任務(wù)command: while true; do ( echo "HTTP/1.0 200 Ok"; echo; echo "Hello World" ) | nc -l $PORT; done 
 3.2.3 點擊“Create”后,創(chuàng)建并執(zhí)行任務(wù)3.2.4 在Applications頁面,點擊任務(wù),可以看到任務(wù)的詳細信息可以看到任務(wù)分布在兩個節(jié)點上,訪問HTTP服務(wù)啟動的端口 
 3.2.5 在各節(jié)點可以看到nc進程正啟動著
 test166: 
 test167: 
 3.3 測試Chronos3.3.1 在Chronos頁面,點擊“New Job”創(chuàng)建任務(wù)注意:時間是UTC時間 
 
 3.3.2 在Chronos頁面,可以看到任務(wù)執(zhí)行的情況
 3.3.3 在Mesos頁面,可以看到任務(wù)執(zhí)行的情況
 
 4. 執(zhí)行Docker任務(wù)4.1 測試通過Marathon執(zhí)行Docker任務(wù)啟動Docker,抓取ubuntu鏡像,date命令輸出當(dāng)前時間 
 任務(wù)Deploying的時候,從docker.io抓取鏡像,抓取下來后,開始Running。 如果抓取鏡像的時間過長,失敗的時候,可以先用docker pull命令在節(jié)點上抓取鏡像后,再執(zhí)行任務(wù)。 4.1.1 創(chuàng)建json文件
 4.1.2 在Marathon上創(chuàng)建任務(wù)
 4.1.3 在Marathon頁面確認容器已經(jīng)啟動
 4.1.4 在Mesos頁面確認任務(wù)正在執(zhí)行中
 4.1.5 從stdout信息確認輸出的時間
 4.1.6 在節(jié)點上確認容器已經(jīng)啟動
 
 4.1.7 查看容器的日志,確認輸出的時間
 
 
 4.2 測試通過Chronos執(zhí)行Docker任務(wù)啟動Docker,抓取nginx鏡像,啟動nginx容器 4.2.1 創(chuàng)建json文件
 network": "BRIDGE",因為Docker默認的網(wǎng)絡(luò)模式是橋接,不指定默認也是BRIDGE 4.2.2 在Chronos上,創(chuàng)建任務(wù)
 4.2.3 在Chronos頁面確認任務(wù)已做成本次是測試,所以在Chronos的任務(wù)頁面,點擊「Force Run」強制執(zhí)行 
 4.2.4 在Mesos頁面確認任務(wù)的詳細信息
 4.2.5 在節(jié)點上確認容器啟動
 
 | 
|  |