摘要:基本概念采用與相同的機制,只是運行在不同的抽象層次上。它是一個為分布式應用提供一致性服務的軟件,提供的功能包括配置維護名字服務分布式同步組服務等。它是集群的分布式,能夠原樣運行任何二進制發布版本,如等等。部署為了部署的方便全部使用部署。
筋斗云 豈安運維工程師前言愛游泳、愛旅行、愛計算機。
目前越來越多的互聯網企業開始使用 docker,在這之前,虛擬機占據著大部分的企業市場,但是隨著 docker 部署的增多,也發現了一些單純使用 docker 的弊端。例如命令行操作比較繁瑣,需要記的參數較多,在此介紹一個好用的解決這些弊端的工具—— Marathon。
基本概念Mesos:Mesos 采用與 Linux Kernel 相同的機制,只是運行在不同的抽象層次上。Mesos Kernel 利用資源管理和調度的 API 在整個數據中心或云環境中運行和提供引用(例如, Hadoop、 Spark、Kafaka、Elastic Search)。
ZooKeeper:ZooKeeper 是一個分布式的,開放源碼的分布式應用程序協調服務,是 Google的Chubby 一個開源的實現,是 Hadoop 和 HBase 的重要組件。它是一個為分布式應用提供一致性服務的軟件,提供的功能包括:配置維護、名字服務、分布式同步、組服務等。
Marathon:Marathon 是一個 Mesos 框架,能夠支持運行長服務,比如 Web 應用等。它是集群的分布式 Init.d,能夠原樣運行任何 Linux 二進制發布版本,如 Tomcat、Play 等等。它也是一種私有的 PaSS,實現服務的發現,為部署提供提供 REST API 服務,有授權和 SSL、配置約束,通過 HAProxy 實現服務發現和負載平衡。
部署
為了部署的方便 全部使用 docker 部署。
master搭建
三臺 mesos master 服務器
ip地址分別是 10.100.0.21,10.100.0.22,10.100.0.23
需要在master上分別部署 mesos mater , zookeeper , marathon
需要在10.100.0.21 上執行下列命令 :
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 上執行下列命令
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 上執行下列命令
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服務器搭建
下面是 mesos 的 slave 服務器 模擬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 的服務器的狀態:
使用 http://{HOST}:8080/ 來訪問 marathon:
需要在 Docker Container 中輸入對應的 images:
還需要配置一下端口:
docker 很快就能啟動好。目前就啟動了一個實例:
如果現在需要多個,可以選擇 scale Application 數值調整到5:
可以瞬間運行多個容器:
關于擴容
scale Application 數值調整雖然能快速擴容,但是運行服務器的端口都是隨機的,如果需要手工添加就會比較麻煩,好在我們有一個新的工具來幫助我們,一個定制化的 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端口代理 ,水平擴容非常的方便。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/8021.html
摘要:基本概念采用與相同的機制,只是運行在不同的抽象層次上。它是一個為分布式應用提供一致性服務的軟件,提供的功能包括配置維護名字服務分布式同步組服務等。它是集群的分布式,能夠原樣運行任何二進制發布版本,如等等。部署為了部署的方便全部使用部署。 筋斗云 豈安運維工程師愛游泳、愛旅行、愛計算機。 前言 目前越來越多的互聯網企業開始使用 docker,在這之前,虛擬機占據著大部分的企業市場...
摘要:方案二和也運行在中。新增刪除節點變更配置均需要手工介入。公司已有的大多都是容器形式部署在各個服務器上。目前我們在每個節點上部署了傳統的。在接下來的階段團隊也會對此做進一步的探索。 回想起第一次接觸Mesos, 當時有很多困惑: 這到底是用來做啥的?跟YARN比有什么優勢?有哪些大公司在使用么?。 然而現在技術日新月異地發展, Mesos這個生態圈也開始被越來越多的團隊熟悉關注, 像k8...
本文原文是 Deploy a Mesos Cluster with 7 Commands Using Docker 這個教程將給你展示怎樣使用 Docker 容器提供一個單節點的 Mesos 集群(未來的一篇文章將展示怎樣很容易的擴展這個到多個節點或者是見底部更新)。這意味著你可以使用 7 個命令啟動整個集群!不需要安裝任何東西除了一個正在運行的 Docker 服務器。 將啟動 4 個容器:...
摘要:而持續集成的意義就在于減少風險,和重復的過程,最終提高工作效率。第二級調度由被稱作的組件組成。能和不同類型的通信,每種由相應的應用集群管理。這是的任務啟動過程。數人云運維平臺持續集成實踐這是數人云運維平臺的持續集成實踐。 今天小數給大家帶來的又是十足的干貨:當運維遇到云計算,當Docker遇到Mesos和Jenkins,會擦出怎樣的火花呢?且看來自數人云運維工程師金燁的演講實錄分享——...
摘要:近日,微軟對外發布了容器服務公共預覽版。同時,和微軟在容器服務方面進行了廣泛技術合作。重點的和兩項開源技術將微軟的與其他云容器服務提供商區分開來。是目前最成熟的容器編排引擎,微軟正是看中了這點才選擇了與合作。 小數點分享:開源技術 Docker 的輕量化、敏捷性以及可移植性的優點,使其在全球IT領域廣受矚目,并將在 2016 年迎來全面爆發。微軟對于 Mesos 的支持,我們期待未來...
閱讀 2320·2021-09-29 09:42
閱讀 556·2021-09-06 15:02
閱讀 2595·2021-09-02 15:40
閱讀 2111·2019-08-30 14:23
閱讀 1860·2019-08-30 13:48
閱讀 1289·2019-08-26 12:01
閱讀 957·2019-08-26 11:53
閱讀 2141·2019-08-23 18:31