小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Docker系列之(二):使用Mesos管理Docker集群(Mesos + Marathon + Chronos + Docker)

 謝興l4nztpvbdk 2017-08-26

1. Mesos簡介

1.1 Mesos

Apache 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 Marathon

Marathon 是Mesos的一個Framework,用來執(zhí)行需要長時間運行的任務(wù)。如果把Mesos比喻成Kernel的話,那么Marathon就是它的守護進程Daemon。

它還具備HA,Health Checks,服務(wù)發(fā)現(xiàn)等功能。如果某個Docker進程崩潰,Marathon會重新啟動同樣的進程。

 

1.3 Chronos

Chronos本質(zhì)上是cron-on-mesos,這是一個用來運行基于容器定時任務(wù)的Mesos框架。

 

1.4 ZooKeeper

ZooKeeper用于集群的管理,包括統(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源

1
# rpm -Uvh http://repos./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

如果服務(wù)器上之前裝過jdk,升級到最新版本

2.2.2 ZooKeeper設(shè)定

本次配置的Master是單節(jié)點環(huán)境,ZooKeeper也是單點

1
2
# vi /etc/mesos/zk
zk://test166:2181/mesos

2.2.3 啟動服務(wù)

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相關(guān)設(shè)定

1
2
# echo 'docker,mesos' > /etc/mesos-slave/containerizers
# echo '5mins' > /etc/mesos-slave/executor_registration_timeout

2.3.3 ZooKeeper設(shè)定

1
2
# vi /etc/mesos/zk
zk://test166:2181/mesos

2.3.4 啟動服務(wù)

1
2
# systemctl start docker
# systemctl start mesos-slave

 

2.4 確認

Mesos的頁面

http://10.86.255.166:5050/

 

Marathon的頁面

http://10.86.255.166:8080/

 

Chronos的頁面

http://10.86.255.166:4400/

 

3. 使用Mesos

在Mesos Slave頁面,可以看到兩個Slave

 

3.1 執(zhí)行framework測試

3.1.1 在服務(wù)器上執(zhí)行framework測試命令

1
# ./src/examples/python/test-framework 10.86.255.166:5050

3.1.2 在Frameworks頁面,可以查看任務(wù)的執(zhí)行情況

3.1.3 點擊結(jié)束的任務(wù)頁面,可以看到在哪個Slave上執(zhí)行的

 

3.2 測試Marathon

用nc命令啟動一個HTTP服務(wù)

3.2.1 在各節(jié)點上安裝netcat

1
# yum install nmap-ncat

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 測試Chronos

3.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文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# vi marathon-test.json
{
  "container": {
    "type": "DOCKER",
    "docker": {
    "image": "libmesos/ubuntu"
    }
  },
  "id": "ubuntu-marathon",
  "instances": 2,
  "cpus": 0.5,
  "mem": 256,
  "uris": [],
  "cmd": "while sleep 10; do date -u +%T; done"
}

4.1.2 在Marathon上創(chuàng)建任務(wù)

1
# curl -X POST -H "Content-Type: application/json" http://test166:8080/v2/apps -d@marathon-test.json

4.1.3 在Marathon頁面確認容器已經(jīng)啟動

4.1.4 在Mesos頁面確認任務(wù)正在執(zhí)行中

4.1.5 從stdout信息確認輸出的時間

4.1.6 在節(jié)點上確認容器已經(jīng)啟動

1
# docker ps

4.1.7 查看容器的日志,確認輸出的時間

1
# docker logs CONTAINER_ID

 

4.2 測試通過Chronos執(zhí)行Docker任務(wù)

啟動Docker,抓取nginx鏡像,啟動nginx容器

4.2.1 創(chuàng)建json文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# vi chronos-test.json
{
  "container": {
    "type": "DOCKER",
    "image": "nginx"
    "network": "BRIDGE"
  },
  "schedule": "R\/2015-12-20T07:30:00Z\/PT2M",
  "name": "chronos-nginx",
  "cpus": "0.5",
  "mem": "256",
  "uris": [],
  "command": "/usr/sbin/nginx -g 'daemon off;' -c /etc/nginx/nginx.conf"
}

network": "BRIDGE",因為Docker默認的網(wǎng)絡(luò)模式是橋接,不指定默認也是BRIDGE

4.2.2 在Chronos上,創(chuàng)建任務(wù)

1
# curl -L -H "Content-Type: application/json" -X POST -d@chronos-test.json http://test166:4400/scheduler/iso8601

4.2.3 在Chronos頁面確認任務(wù)已做成

本次是測試,所以在Chronos的任務(wù)頁面,點擊「Force Run」強制執(zhí)行

4.2.4 在Mesos頁面確認任務(wù)的詳細信息

4.2.5 在節(jié)點上確認容器啟動

1
# docker ps

4.2.6 確認nginx網(wǎng)頁可以訪問

5. 后記

Mesos, Marathon 使得 Docker集群的管理變得簡單方便,為在生產(chǎn)環(huán)境部署使用Docker集群提供了可能。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多