摘要:基本概念采用與相同的機制,只是運行在不同的抽象層次上。它是一個為分布式應(yīng)用提供一致性服務(wù)的軟件,提供的功能包括配置維護名字服務(wù)分布式同步組服務(wù)等。它是集群的分布式,能夠原樣運行任何二進制發(fā)布版本,如等等。部署為了部署的方便全部使用部署。
筋斗云 豈安運維工程師前言愛游泳、愛旅行、愛計算機。
目前越來越多的互聯(lián)網(wǎng)企業(yè)開始使用 docker,在這之前,虛擬機占據(jù)著大部分的企業(yè)市場,但是隨著 docker 部署的增多,也發(fā)現(xiàn)了一些單純使用 docker 的弊端。例如命令行操作比較繁瑣,需要記的參數(shù)較多,在此介紹一個好用的解決這些弊端的工具—— Marathon。
基本概念Mesos:Mesos 采用與 Linux Kernel 相同的機制,只是運行在不同的抽象層次上。Mesos Kernel 利用資源管理和調(diào)度的 API 在整個數(shù)據(jù)中心或云環(huán)境中運行和提供引用(例如, Hadoop、 Spark、Kafaka、Elastic Search)。
ZooKeeper:ZooKeeper 是一個分布式的,開放源碼的分布式應(yīng)用程序協(xié)調(diào)服務(wù),是 Google的Chubby 一個開源的實現(xiàn),是 Hadoop 和 HBase 的重要組件。它是一個為分布式應(yīng)用提供一致性服務(wù)的軟件,提供的功能包括:配置維護、名字服務(wù)、分布式同步、組服務(wù)等。
Marathon:Marathon 是一個 Mesos 框架,能夠支持運行長服務(wù),比如 Web 應(yīng)用等。它是集群的分布式 Init.d,能夠原樣運行任何 Linux 二進制發(fā)布版本,如 Tomcat、Play 等等。它也是一種私有的 PaSS,實現(xiàn)服務(wù)的發(fā)現(xiàn),為部署提供提供 REST API 服務(wù),有授權(quán)和 SSL、配置約束,通過 HAProxy 實現(xiàn)服務(wù)發(fā)現(xiàn)和負載平衡。
部署
為了部署的方便 全部使用 docker 部署。
master搭建
三臺 mesos master 服務(wù)器
ip地址分別是 10.100.0.21,10.100.0.22,10.100.0.23
需要在master上分別部署 mesos mater , zookeeper , marathon
需要在10.100.0.21 上執(zhí)行下列命令 :
marathon
docker run -d -e MARATHON_HOSTNAME=10.100.0.21 -e MARATHON_HTTPS_ADDRESS=10.100.0.21 -e MARATHON_HTTP_ADDRESS=10.100.0.21 -e MARATHON_MASTER=zk://10.100.0.22:2181,10.100.0.23:2181,10.100.0.21:2 181/mesos -e MARATHON_ZK=zk://10.100.0.22:2181,10.100.0.23:2181,10.100.0.21:2181/marathon --name marathon --net host --restart=always mesoscloud/marathon
mesos-master
HOST_IP=10.100.0.21 docker run -d --name mesos-master1 --net="host" -p 5050:5050 -e "MESOS_HOSTNAME=${HOST_IP}" -e "MESOS_IP=${HOST_IP}" -e "MESOS_ZK=zk://${HOST_IP}:2181/mesos" -e "MESOS_PORT=5050" -e "MESOS_LOG_DIR=/var/log/mesos" -e "MESOS_QUORUM=1" -e "MESOS_REGISTRY=in_memory" -e "MESOS_WORK_DIR=/var/lib/mesos" mesoscloud/mesos-master
zookeeper
docker run -d -e MYID=1 -e SERVERS=10.100.0.21,10.100.0.22,10.100.0.23 --name zookeeper --restart=always --net=host mesoscloud/zookeeper
需要在10.100.0.22 上執(zhí)行下列命令
marathon
docker run -d -e MARATHON_HOSTNAME=10.100.0.22 -e MARATHON_HTTPS_ADDRESS=10.100.0.22 -e MARATHON_HTTP_ADDRESS=10.100.0.22 -e MARATHON_MASTER=zk://10.100.0.22:2181,10.100.0.23:2181,10.100.0.21:2 181/mesos -e MARATHON_ZK=zk://10.100.0.22:2181,10.100.0.23:2181,10.100.0.21:2181/marathon --name marathon --net host --restart=always mesoscloud/marathon
mesos-master
HOST_IP=10.100.0.22 docker run -d --name mesos-master1 --net="host" -p 5050:5050 -e "MESOS_HOSTNAME=${HOST_IP}" -e "MESOS_IP=${HOST_IP}" -e "MESOS_ZK=zk://${HOST_IP}:2181/mesos" -e "MESOS_PORT=5050" -e "MESOS_LOG_DIR=/var/log/mesos" -e "MESOS_QUORUM=1" -e "MESOS_REGISTRY=in_memory" -e "MESOS_WORK_DIR=/var/lib/mesos" mesoscloud/mesos-master
zookeeper
docker run -d -e MYID=2 -e SERVERS=10.100.0.21,10.100.0.22,10.100.0.23 --name zookeeper --restart=always --net=host mesoscloud/zookeeper
需要在10.100.0.23 上執(zhí)行下列命令
marathon
docker run -d -e MARATHON_HOSTNAME=10.100.0.23 -e MARATHON_HTTPS_ADDRESS=10.100.0.23 -e MARATHON_HTTP_ADDRESS=10.100.0.23 -e MARATHON_MASTER=zk://10.100.0.22:2181,10.100.0.23:2181,10.100.0.21:2 181/mesos -e MARATHON_ZK=zk://10.100.0.22:2181,10.100.0.23:2181,10.100.0.21:2181/marathon --name marathon --net host --restart=always mesoscloud/marathon
mesos-master
HOST_IP=10.100.0.23 docker run -d --name mesos-master1 --net="host" -p 5050:5050 -e "MESOS_HOSTNAME=${HOST_IP}" -e "MESOS_IP=${HOST_IP}" -e "MESOS_ZK=zk://${HOST_IP}:2181/mesos" -e "MESOS_PORT=5050" -e "MESOS_LOG_DIR=/var/log/mesos" -e "MESOS_QUORUM=1" -e "MESOS_REGISTRY=in_memory" -e "MESOS_WORK_DIR=/var/lib/mesos" mesoscloud/mesos-master
zookeeper
docker run -d -e MYID=3 -e SERVERS=10.100.0.21,10.100.0.22,10.100.0.23 --name zookeeper --restart=always --net=host mesoscloud/zookeeper
這樣 mesos 的 master 就搭建完成。
slave服務(wù)器搭建
下面是 mesos 的 slave 服務(wù)器 模擬4臺
ip 地址是10.100.0.24 10.100.0.25 10.100.0.26 10.100.0.28
在10.100.0.24上運行下面的命令
docker run -d --net=host --pid=host --privileged=true --name=ms1 -v /usr/bin/docker:/usr/bin/docker -v /dev:/dev -v /var/run/docker.sock:/var/run/docker.sock -v /var/log/mesos:/var/log/mesos -v /tmp/mesos:/tmp/mesos -e MESOS_HOSTNAME=10.100.0.24 -e MESOS_IP=10.100.0.24 -e MESOS_MASTER=zk://10.100.0.21:2181,10.100.0.22:2181,10.100.0.23:2181/mes os -e MESOS_CONTAINERIZERS=docker,mesos mesoscloud/mesos-slave
在10.100.0.25上運行下面的命令
docker run -d --net=host --pid=host --privileged=true --name=ms1 -v /usr/bin/docker:/usr/bin/docker -v /dev:/dev -v /var/run/docker.sock:/var/run/docker.sock -v /var/log/mesos:/var/log/mesos -v /tmp/mesos:/tmp/mesos -e MESOS_HOSTNAME=10.100.0.25 -e MESOS_IP=10.100.0.25 -e MESOS_MASTER=zk://10.100.0.21:2181,10.100.0.22:2181,10.100.0.23:2181/mes os -e MESOS_CONTAINERIZERS=docker,mesos mesoscloud/mesos-slave
在10.100.0.26上運行下面的命令
docker run -d --net=host --pid=host --privileged=true --name=ms1 -v /usr/bin/docker:/usr/bin/docker -v /dev:/dev -v /var/run/docker.sock:/var/run/docker.sock -v /var/log/mesos:/var/log/mesos -v /tmp/mesos:/tmp/mesos -e MESOS_HOSTNAME=10.100.0.26 -e MESOS_IP=10.100.0.26 -e MESOS_MASTER=zk://10.100.0.21:2181,10.100.0.22:2181,10.100.0.23:2181/mes os -e MESOS_CONTAINERIZERS=docker,mesos mesoscloud/mesos-slave
在10.100.0.28上運行下面的命令
docker run -d --net=host --pid=host --privileged=true --name=ms1 -v /usr/bin/docker:/usr/bin/docker -v /dev:/dev -v /var/run/docker.sock:/var/run/docker.sock -v /var/log/mesos:/var/log/mesos -v /tmp/mesos:/tmp/mesos -e MESOS_HOSTNAME=10.100.0.28 -e MESOS_IP=10.100.0.28 -e MESOS_MASTER=zk://10.100.0.21:2181,10.100.0.22:2181,10.100.0.23:2181/mes os -e MESOS_CONTAINERIZERS=docker,mesos mesoscloud/mesos-slave
以上,搭建完成
查看可以通過 http://${HOST_IP}:5050 查看 mesos 的服務(wù)器的狀態(tài):
使用 http://{HOST}:8080/ 來訪問 marathon:
需要在 Docker Container 中輸入對應(yīng)的 images:
還需要配置一下端口:
docker 很快就能啟動好。目前就啟動了一個實例:
如果現(xiàn)在需要多個,可以選擇 scale Application 數(shù)值調(diào)整到5:
可以瞬間運行多個容器:
關(guān)于擴容
scale Application 數(shù)值調(diào)整雖然能快速擴容,但是運行服務(wù)器的端口都是隨機的,如果需要手工添加就會比較麻煩,好在我們有一個新的工具來幫助我們,一個定制化的 haproxy—— marathon-lb。
我們還是使用容器的方式來部署:
docker run -d --privileged -e PORTS=9090 --net=host mesosphere/marathon-lb sse -m http://10.100.0.21:8080 -m http://10.100.0.22:8080 -m http://10.100.0.23:8080 --group external
這樣我們就能通過 9090 端口訪問:
http://${HOST_IP}:9090/haproxy?stats
需要在配置 Environment Variables 變量的時候,添加2個變量:
?HAPROXY_0_PORT=80
?HAPROXY_GROUP=external
不管 scale 多少個容器, 都會通過 haproxy 的80端口代理 ,水平擴容非常的方便。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/8021.html
摘要:基本概念采用與相同的機制,只是運行在不同的抽象層次上。它是一個為分布式應(yīng)用提供一致性服務(wù)的軟件,提供的功能包括配置維護名字服務(wù)分布式同步組服務(wù)等。它是集群的分布式,能夠原樣運行任何二進制發(fā)布版本,如等等。部署為了部署的方便全部使用部署。 筋斗云 豈安運維工程師愛游泳、愛旅行、愛計算機。 前言 目前越來越多的互聯(lián)網(wǎng)企業(yè)開始使用 docker,在這之前,虛擬機占據(jù)著大部分的企業(yè)市場...
摘要:方案二和也運行在中。新增刪除節(jié)點變更配置均需要手工介入。公司已有的大多都是容器形式部署在各個服務(wù)器上。目前我們在每個節(jié)點上部署了傳統(tǒng)的。在接下來的階段團隊也會對此做進一步的探索。 回想起第一次接觸Mesos, 當(dāng)時有很多困惑: 這到底是用來做啥的?跟YARN比有什么優(yōu)勢?有哪些大公司在使用么?。 然而現(xiàn)在技術(shù)日新月異地發(fā)展, Mesos這個生態(tài)圈也開始被越來越多的團隊熟悉關(guān)注, 像k8...
本文原文是 Deploy a Mesos Cluster with 7 Commands Using Docker 這個教程將給你展示怎樣使用 Docker 容器提供一個單節(jié)點的 Mesos 集群(未來的一篇文章將展示怎樣很容易的擴展這個到多個節(jié)點或者是見底部更新)。這意味著你可以使用 7 個命令啟動整個集群!不需要安裝任何東西除了一個正在運行的 Docker 服務(wù)器。 將啟動 4 個容器:...
摘要:而持續(xù)集成的意義就在于減少風(fēng)險,和重復(fù)的過程,最終提高工作效率。第二級調(diào)度由被稱作的組件組成。能和不同類型的通信,每種由相應(yīng)的應(yīng)用集群管理。這是的任務(wù)啟動過程。數(shù)人云運維平臺持續(xù)集成實踐這是數(shù)人云運維平臺的持續(xù)集成實踐。 今天小數(shù)給大家?guī)淼挠质鞘愕母韶洠寒?dāng)運維遇到云計算,當(dāng)Docker遇到Mesos和Jenkins,會擦出怎樣的火花呢?且看來自數(shù)人云運維工程師金燁的演講實錄分享——...
摘要:近日,微軟對外發(fā)布了容器服務(wù)公共預(yù)覽版。同時,和微軟在容器服務(wù)方面進行了廣泛技術(shù)合作。重點的和兩項開源技術(shù)將微軟的與其他云容器服務(wù)提供商區(qū)分開來。是目前最成熟的容器編排引擎,微軟正是看中了這點才選擇了與合作。 小數(shù)點分享:開源技術(shù) Docker 的輕量化、敏捷性以及可移植性的優(yōu)點,使其在全球IT領(lǐng)域廣受矚目,并將在 2016 年迎來全面爆發(fā)。微軟對于 Mesos 的支持,我們期待未來...
閱讀 2353·2021-09-29 09:42
閱讀 593·2021-09-06 15:02
閱讀 2650·2021-09-02 15:40
閱讀 2147·2019-08-30 14:23
閱讀 1898·2019-08-30 13:48
閱讀 1315·2019-08-26 12:01
閱讀 992·2019-08-26 11:53
閱讀 2177·2019-08-23 18:31