Docker系列之(二):使用Mesos管理Docker叢集(Mesos + Marathon + Chronos + Docker)
http://www.cnblogs.com/ee900222/p/docker_2.html
1. Mesos簡介
1.1 Mesos
Apache Mesos 是一個分散式系統的管理軟體,對叢集的資源進行分配和管理。
Mesos主要由以下幾部分組成:
Master: 管理各Slave節點
Slave: 為叢集提供資源
Framework: scheduler從Master請求資源,executor在Slave上執行任務
Slave節點上的每個executor是一個容器
官方文件:
http://mesos.apache.org/documentation/latest/architecture/
http://mesos.apache.org/documentation/latest/getting-started/
Mesos主伺服器使用Zookeeper進行服務選舉和發現。它有一個註冊器記錄了所有執行任何和從伺服器資訊,使用MultiPaxos進行日誌複製實現一致性。
Mesos有一個從伺服器恢復機制,無論什麼時候一個從伺服器宕機了,使用者的任務還是能夠繼續執行,從伺服器會將一些關鍵點資訊如任務資訊 狀態更新持久化到本地磁碟上,重新啟動時可以從磁碟上恢復執行這些任務(類似Java中的鈍化和喚醒)
1.2 Marathon
Marathon 是Mesos的一個Framework,用來執行需要長時間執行的任務。如果把Mesos比喻成Kernel的話,那麼Marathon就是它的守護程序Daemon。
它還具備HA,Health Checks,服務發現等功能。如果某個Docker程序崩潰,Marathon會重新啟動同樣的程序。
1.3 Chronos
Chronos本質上是cron-on-mesos,這是一個用來執行基於容器定時任務的Mesos框架。
1.4 ZooKeeper
ZooKeeper用於叢集的管理,包括統一配置管理,選舉Leader等。
2. 安裝Mesos
本次測試環境的構成如下:
Mesos Master: test166
Mesos Slave: test166,test167
Marathon: test166
Chronos: test166
ZooKeeper: test166
2.1 安裝準備
在所有機器上,安裝Mesos源
1 |
#
rpm -Uvh http://repos.mesosphere.io/el/7/noarch/RPMS/mesosphere-el-repo-7-1.noarch.rpm
|
在所有機器的/etc/hosts中,指定主機名
1 2 3 |
#
vi /etc/hosts
10.86.255.166
test166
10.86.255.167
test167
|
2.2 安裝Master
2.2.1 在Master上安裝Mesos,Marathon,Chronos,ZooKeeper
1 |
#
yum install mesos marathon chronos mesosphere-zookeeper
|
如果伺服器上之前裝過jdk,升級到最新版本
2.2.2 ZooKeeper設定
本次配置的Master是單節點環境,ZooKeeper也是單點
1 2 |
#
vi /etc/mesos/zk
zk: //test166 :2181 /mesos
|
2.2.3 啟動服務
1 2 3 4 |
#
systemctl start zookeeper
#
systemctl start mesos-master
#
systemctl start marathon
#
systemctl start chronos
|
2.3 安裝Slave
2.3.1 在Slave上安裝Mesos,Docker
1 |
#
yum install mesos docker
|
2.3.2 Docker相關設定
1 2 |
#
echo 'docker,mesos' > /etc/mesos-slave/containerizers
#
echo '5mins' > /etc/mesos-slave/executor_registration_timeout
|