中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用Mesos和Marathon管理Docker集群

發布時間:2021-08-27 16:15:50 來源:億速云 閱讀:172 作者:chen 欄目:云計算

本篇內容介紹了“如何使用Mesos和Marathon管理Docker集群”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

分布式系統是難于理解、設計、構建 和管理的,他們將比單個機器成倍還要多的變量引入到設計中,使應用程序的根源問題更難發現。SLA(服務水平協議)是衡量停機和/或性能下降的標準,大多數現代應用程序有一個期望的彈性SLA水平,通常按"9"的數量增加(如,每月99.9或99.99%可用性)。每個額外的9變得越來越難實現。

  分布式系統通常是以靜態分區,比如Akka/Play、 Spark/Hadoop、Storm和 Redis各自分區分組劃分。靜態分區帶來的缺點是增加復雜性,隨著機器數量增加,軟件管理越來越復雜,失敗管理維護越來越難。而且資源消耗非常不經濟,下圖是靜態分區下資源利用率:

如何使用Mesos和Marathon管理Docker集群

  Apache Mesos能夠在同樣的集群機器上運行多種分布式系統類型,更加動態有效率低共享資源。提供失敗偵測,任務發布,任務跟蹤,任務監控,低層次資源管理和細粒度的資源共享,可以擴展伸縮到數千個節點。Mesos已經被Twitter用來管理它們的數據中心。

如何使用Mesos和Marathon管理Docker集群

Mesos架構圖如下:

如何使用Mesos和Marathon管理Docker集群

  Mesos框架是一個在Mesos上運行分布式應用的應用程序,它有兩個組件:

  1. 調度器 : 與Mesos交互,訂閱資源,然后在mesos從服務器中加載任務。

  2. 執行器 : 從框架的環境變量 配置中獲得信息,在mesos從服務器中運行任務。

  下面看看其是如何實現資源調用?Mesos通過"resources offers" 分配資源,資源其實是當前可用資源的一個快照,調度器將使用這些資源在mesos從服務器上運行任務。

Mesos主從服務器調度資源的順序圖如下:

如何使用Mesos和Marathon管理Docker集群

  首先由Mesos主服務器查詢可用資源給調度器,第二步調度器向主服務器發出加載任務,主服務器再傳達給從服務器,從服務器向執行器命令加載任務執行,執行器執行任務以后,將狀態反饋上報給從服務器,最終告知調度器 。

  從服務器下管理多個執行器,每個執行器是一個容器,以前可以使用Linux容器LXC,現在使用Docker容器。

如何使用Mesos和Marathon管理Docker集群

失敗恢復和高可用性

  Mesos主服務器使用Zookeeper進行服務選舉和發現。它有一個注冊器記錄了所有運行任何和從服務器信息,使用MultiPaxos進行日志復制實現一致性。

Mesos有一個從服務器恢復機制,無論什么時候一個從服務器死機了,用戶的任務還是能夠繼續運行,從服務器會將一些關鍵點信息如任務信息 狀態更新持久化到本地磁盤上,重新啟動時可以從磁盤上恢復運行這些任務(類似Java中的鈍化和喚醒)

什么是Marathon

  它是一個mesos框架,能夠支持運行長服務,比如web應用等。是集群的分布式Init.d,能夠原樣運行任何Linux二進制發布版本,如Tomcat Play等等,可以集群的多進程管理。也是一種私有的Pass,實現服務的發現,為部署提供提供REST API服務,有授權和SSL、配置約束,通過HAProxy實現服務發現和負載平衡。

如何使用Mesos和Marathon管理Docker集群

  這樣,我們可以如同一臺Linux主機一樣管理數千臺服務器,它們的對應原理如下圖,使用Marathon類似Linux主機內的init Systemd等外殼管理,而Mesos則不只包含一個Linux核,可以調度數千臺服務器的Linux核,實際是一個數據中心的內核:

如何使用Mesos和Marathon管理Docker集群

安裝配置

首先,我們需要設置Mesos集群環境,下面我們以在Ubuntu 14.04 vagrant 節點上設置Mesos master/slave 和 Zookeeper。安裝依賴:

$ apt-get install curl python-setuptools python-pip python-dev python-protobuf

安裝zookeeper:

$ apt-get install zookeeperd

安裝后,Zookeeper有一個配置,每個Zookeeper需要知道它在quorum中的位置。

$ echo 1 | sudo dd of=/var/lib/zookeeper/myid

下面設置Docker:

$ echo "deb http://get.docker.io/ubuntu docker main" > /etc/apt/sources.list.d/docker.list

$ apt-get update && apt-get install lxc-docker

$ docker version

 Client version: 1.0.0
     Client API version: 1.12
     Go version (client): go1.2.1
     Git commit (client): 63fe64c
     Server version: 1.0.0
     Server API version: 1.12
     Go version (server): go1.2.1
     Git commit (server): 63fe64c

從Docker Hub拉取一個ubuntu image

$ docker pull libmesos/ubuntu

配置Mesos:

$ curl -fL http://downloads.mesosphere.io/master/ubuntu/14.04/mesos_0.19.0~ubuntu14.04%2B1_amd64.deb -o /tmp/mesos.deb
$ dpkg -i /tmp/mesos.deb
$ mkdir -p /etc/mesos-master
$ echo in_memory | sudo dd of=/etc/mesos-master/registry
## Mesos Python egg for use in authoring frameworks
$ curl -fL http://downloads.mesosphere.io/master/ubuntu/14.04/mesos-0.19.0_rc2-py2.7-linux-x86_64.egg -o /tmp/mesos.egg
$ easy_install /tmp/mesos.egg
 

下載Marathon:

$ tar xvzf marathon-0.6.0.tgz

Mesos通過Deimos 管理Docker,通過pip安裝Deimos:

$ pip install deimos

配置mesos 使用Deimos

$ mkdir -p /etc/mesos-slave
$ echo /usr/local/bin/deimos | sudo dd of=/etc/mesos-slave/containerizer_path
$ echo external | sudo dd of=/etc/mesos-slave/isolation

啟動所有服務 :

$ initctl reload-configuration

$ service docker start

$ service zookeeper start

$ service mesos-master start

$ service mesos-slave start

##### Starting Marathon #####

$ cd marathon-0.6.0

$ ./bin/start --master zk://localhost:2181/mesos --zk_hosts localhost:2181

Marathon 在端口8080已經啟動偵聽,我們可以通過瀏覽器訪問:

curl localhost:8080/help # gives us some details about the API's

啟動容器

我們通過Marathon啟動一個容器的REST API提交如下:

curl -X POST -H "Accept: application/json" -H "Content-Type: application/json" \
localhost:8080/v2/apps -d '{
"container": {"image": "docker:///libmesos/ubuntu", "options": ["--privileged"]},
"cpus": 0.5,
"cmd": "sleep 500",
"id": "docker-tester",
"instances": 1,
"mem": 300
}'

我們通過在curl命令后選項"options"提交定制的Docker,我們能檢查syslog ,因為mesos缺省日志是放在syslog中。

Jun 27 07:24:58 vagrant-ubuntu-trusty-64 deimos[19227]: deimos.containerizer.docker.launch() exit 0 // docker run --sig-proxy --rm --cidfile /tmp/deimos/mesos/00d459fb-22ca-4af7-9a97-ef8a510905f2/cid -w /tmp/mesos-sandbox -v /tmp/deimos/mesos/00d459fb-22ca-4af7-9a97-ef8a510905f2/fs:/tmp/mesos-sandbox --privileged -p 31498:31498 -c 512 -m 300m -e PORT=31498 -e PORT0=31498 -e PORTS=31498 libmesos/ubuntu sh -c 'sleep 500'

我們也能通過Marathon Rest API檢查我們啟動任務的狀態:

curl -X GET -H "Content-Type: application/json" localhost:8080/v2/apps

下面是Marathon UI獲得信息的截圖:

如何使用Mesos和Marathon管理Docker集群

更多關于Docker任務的信息可以通過Mesos GUI在Mesos主服務器的端口5050 ,現在我們測試一下任務的伸縮性,比如我們需要加入更多節點服務器,有兩種辦法,使用GUI或通過發出put請求。

curl -X PUT -H "Content-Type: application/json" localhost:8080/v2/apps/docker-tester \
"container": {"image": "docker:///libmesos/ubuntu", "options": ["--privileged"]},
"cpus": 0.5,
"cmd": "sleep 500",
"id": "docker-tester",
"instances": 2, # increasing the instance count to 2
"mem": 300
}'

Marathon能確保所有docker進程啟動運行,如果某個進程崩潰,Marathon會重新啟動同樣的進程,以確保每個配置運行一個實例,還有其他開源Mesos調度器如Apache Aurora, Airbnb's Chronos. 但是marathon比較直接簡單提供好的REST API用來管理容器,雖然Mesos, Marathon 和Docker還很年輕,但是提供了基于Docker的殺手級集群管理組合。

“如何使用Mesos和Marathon管理Docker集群”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

孟州市| 灵丘县| 鹤壁市| 图木舒克市| 泰顺县| 新余市| 尼勒克县| 交城县| 七台河市| 鄂伦春自治旗| 邹城市| 贵州省| 余干县| 牙克石市| 吴旗县| 广昌县| 张掖市| 厦门市| 金塔县| 滁州市| 安仁县| 赤水市| 高雄市| 墨江| 宝坻区| 体育| 称多县| 曲阳县| 和林格尔县| 明溪县| 静海县| 昔阳县| 宁强县| 普安县| 深圳市| 长兴县| 门头沟区| 高碑店市| 大荔县| 图们市| 河北区|