初識數據中心Mesos

jopen 10年前發布 | 15K 次閱讀 ZooKeeper Docker

Docker的飛速發展已經無需多言了,怎么管理Docker,編排Docker的也存在最夠多的工具,但是總覺得沒有觸及痛點,所以才有數據中心mesos存在的必要,那么mesos是什么,以及mesos能做什么呢,會在本文簡要介紹。

這里先放一張自己對于mesos的理解以及使用的思路,如有偏頗還望指正。

根據上圖,我們將物理機全部納入mesos這個發布系統里面,這樣是個我們把手上的物理機資源全部抽象到了一起,這樣我們就不用擔心CPU,內存,硬盤的使用情況,因為到某個應用需要更多的資源的時候,我們可以直接動態添加,我想光是這點就足夠讓我們躍躍欲試了吧,更重要的是我們不需要采購硬件配置一樣的服務器。

前面這點內容當然不足夠說清mesos是什么,能做什么,在筆者看來,想要了解一樣東西紙上談兵當然是萬萬不能的,所以讓我們先把環境搭起來,用起來,這樣我想才能更加深刻的了解Mesos。

安裝:

系統環境: Centos7

mesos 集群

172.16.51.72  mesos-master

172.16.51.72  mesos-slaver

172.16.51.71 mesos-slaver

172.16.51.73 mesos-slaver

zookeeper 集群

172.16.51.72  1

172.16.51.71  2

172.16.51.73  3

注:iptables,selinux 什么的當然是關閉的

安裝方式 rpm 包

rpm 源

rpm -Uvh http://repos.mesosphere.com/el/7/noarch/RPMS/mesosphere-el-repo-7-1.noarch.rpm

安裝 mesos , marathon , zookeeper

yum -yinstall mesos marathon
yum -yinstall mesosphere-zookeeper

<span style="font-size:16px;">配置zookeeper集群</span>

72,71,73 的 myid 依次配置為 1,2,3 , myid 文件默認不存在

cat /var/lib/zookeeper/myid
1

然后配置 zookeeper 配置文件

每個zookeeper節點加入下面三行

cat /etc/zookeeper/conf/zoo.cfg
server.1=172.16.51.72:2888:3888
server.2=172.16.51.71:2888:3888
server.3=172.16.51.73:2888:3888

然后依次啟動 zookeeper

<span style="font-size:16px;">systemctlstart zookeeper</span>

查看是否監聽

lsof  -i:2181

為 mesos 配置 zookeeper 信息 ( 無論 master 還是 slaver 都要配置 )

zk://172.161.51.72:2181,172.16.51.71:2181,172.16.51.73:2181/mesos

然后啟動 master 端

service mesos-master restart

啟動 slaver 端

service mesos-slave restart

很簡單有木有。

然后驗證 mesos , marathon 是否安裝成功

訪問 mesos-master主機 的 5050 及 8080 端口,如下圖

注意:如果是第一安裝完成,對應的web頁面應該是沒有任何任務的,比如上面的test

到這里可能就有疑問了,然后呢?

首先看看Mesos的架構。

根據上面的示意圖再結合我們的已安裝環境,我們建立了三個mesos-slaver節點,一個mesos-master端節點(其實mesos-master端也可以做一個集群)

之于上面的Hadoop,MPI scheduler我們先放一邊。

zookeeper用于服務發現(這里我們做成集群模式,是為了高可用),所以無論是mesos-slaver或者mesos-master節點都需要設置zookeeper的配置信息,通過zookeeper,mesos-master會問mesos-slaver是哪些主機以及它的相關信息是什么,反之亦然。

然后mesos-master會只會mesos-slaver它們需要做什么,怎么知道mesos-slaver能做什么呢?

我們看下圖。

根據上圖,mesos-slaver會告訴mesos-master端自己有多少資源,比如多少cpu,內存等,然后master-slaver決定怎么分配資源,怎么分配任務,那么我們怎么給mesos索要資源及發布任務呢,那么我們就得知道什么是框架了,下面講解兩個主要的框架,marathon,chronos。

什么是框架呢?就是用來索要源的,看看具體實例,你就會有一定了解了。

Marathon 是建立在 Mesos 上的私有 PaaS 平臺。 它能自 動處 理硬件或者 軟 件故障, 并確 保每個 應 用程序都 " 永 遠 在 線 "(比如,你在marathon中設置是某應用三個實例,那么其中一個掛掉,marathon會立即在啟一個實例,維持在三個實例) ,個人覺得跟 kubernetes 有點重疊的意思,當然kubernetes更強大,因為編排的能力更強。

默認監聽端口: 8080

主要功能:創建常駐任務,任務擴建等 ( 比如實例的數量增加 )

創建 JOB

如上圖,我們創建一個ID為test的任務,并且分配了0.1的CPU(默認),16MB內存 (默認) ,OMB硬盤 (默認),一個實例 (默認),然后這個實例執行的命令 python-m SimpleHTTPServer ,然后點擊“create”即可,創建成功后,mesos-master就是隨機讓mesos-slaver就是創建一個實例。

為了方便驗證,我們可以將實例個數選為3,然后查看是否監聽。

然后驗證一下。

 

注意:名字隨意,但是不跟現有的 ID 名沖突即可

然后看一看基本設置

ID 設置

名字隨意,不跟現有的 ID 名沖突即可

CPU ,內存,硬盤,實例個數    (自定義)

CPU ,內存,硬盤,實例個數    (自定義)

執行的 command

比如用 Python 起一個簡單的 web 服務

python-m SimpleHTTPServer

Docker 容器的相關設置

網絡,數據卷等

環境變量如

JAVA_HOME= xxx

標簽

自定義標簽,用于分類

健康監控

有 command , http , tcp 三個方式檢測

其他選項 (optional settings)

如端口

還有最后一個限制 constraint

比如限制哪個節點啟動這個任務

創建成功,后點擊具體任務,有相關信息,如主機端口等

mesos-master 端也有相應 job 信息

下面是 marathon 的相關信息

然后主要的三個動作,分別是擴展 ( 比如一個實例到三個實例 ) ,重啟,掛起,銷毀

注:因為里面的 test 任務,寫的命令是 python-m SimpleHTTPServer  所以都默認監聽 8000 端口,因為只有三個節點,所以最多啟三個實例,雖然可以將 scale( 規模 ) 設置成 3 以上但是會不斷的啟新實例,然后不斷的失敗,并一直啟。

所以啟三個以上的實例應該保證占用的端口不一樣

比如端口隨機

python-m SimpleHTTPServer $PORT

因為創建任務是支持Docker的,我們不妨想象一下,我們能夠直接將使用已有的docker環境中鏡像。

chronos 是一個分布式作 業調 度程序, 支持復 雜 的拓部 結構 。 它可以成 為   cron   的替代
品, 提供更好的容 錯 性。

chronos 就是個計劃任務,不過分布式而已

安裝

<span style="font-size:16px;">yum -y install chronos</span>

<span style="font-size:16px;">servicechronos start</span>

<span style="font-size:16px;">&nbsp;</span>

<span style="font-size:16px;">默認監聽4400</span>

<span style="font-size:16px;"><a target="_blank"><img onload="if(this.width&gt;650) this.width=650;" src="https://simg.open-open.com/show/3b3dc3f1dda5b3cd01a1966086f1c307.gif" title="Image 13.png" alt="wKiom1aOU7jgSpQnAAH7CpciNog566.png" /></a></span>

<span style="font-size:16px;">&nbsp;</span>

<span style="font-size:16px;">比如</span>

<span style="font-size:16px;"><a target="_blank"><img onload="if(this.width&gt;650) this.width=650;" src="https://simg.open-open.com/show/e1ae9921ebfe290e778d62173bee77e8.gif" title="Image 14.png" alt="wKioL1aOVAaxb68KAAJ9f7auVq8399.png" /></a></span>

cat /tmp/test2.txt
Sat Dec26 17:08:10 CST 2015

<span style="font-size:16px;">&nbsp;</span>

<span style="font-size:16px;">結語:既然是初始,那么久先到這里吧,筆者也還在研究中。</span>

來自: http://youerning.blog.51cto.com/10513771/1732682

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!