您好,登錄后才能下訂單哦!
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
配置zookeeper集群
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
systemctlstart zookeeper
查看是否監聽
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就是個計劃任務,不過分布式而已
安裝
yum -y install chronos
servicechronos start
默認監聽4400
比如
cat /tmp/test2.txt Sat Dec26 17:08:10 CST 2015
結語:既然是初始,那么久先到這里吧,筆者也還在研究中。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。