Mesos+Docker+Marathon环境搭建教程

7 篇文章 0 订阅
1 篇文章 0 订阅

官方Doc

Mesos:http://mesos.apache.org/gettingstarted/

Mesos学习:https://www.gitbook.com/book/mesos-cn/mesos-cn/details

Docker:https://docs.docker.com/engine/installation/linux/ubuntulinux/

安装Marathon:https://mesosphere.github.io/marathon/docs/

架构原理

下图描述了一个 Framework 如何通过调度来运行一个 Task:

 

事件流程:

1、Slave1 向 Master 报告,有4个CPU和4 GB内存可用

2、Master 发送一个 Resource Offer 给 Framework1 来描述 Slave1 有多少可用资源

3、FrameWork1 中的 FW Scheduler会答复 Master,我有两个 Task 需要运行在 Slave1,一个 Task 需要<2个cpu,1 gb内存="">,另外一个Task需要<1个cpu,2 gb内存="">

4、最后,Master 发送这些 Tasks 给 Slave1。然后,Slave1还有1个CPU和1 GB内存没有使用,所以分配模块可以把这些资源提供给 Framework2

当 Tasks 完成和有新的空闲资源时,Resource Offer 会不断重复这一个过程。 当 Mesos 提供的瘦接口允许其来扩展和允许 frameworks 相对独立的参与进来,一个问题将会出现: 一个 framwork 的限制如何被满足在不被 Mesos 对这些限制所知晓的情况下? 例如, 一个 framework 如何得到数据本地化在不被 Mesos所知晓哪个节点存储着被该 framwork 所需要的数据?Mesos 通过简单的寄予 frameworks 能够拒绝 offers 的能力来回答了这个问题。 一个 framework 将拒绝不满足其限制要求的 offers 并接受满足其限制要求的 offers. 特殊情况下,我们找到一个简单的策略 delay scheduling, 在该 frameworks 等待 一个限制时间来获取存储输入数据的节点,并生成接近的优化过得数据点。


安装参考

Mesos-master:10.63.51.231

Mesos-slave1:10.63.51.230

Mesos-slave2:10.63.51.232

安装记录

安装依赖

安装Python依赖

apt-get install curl python-setuptoolspython-pip python-dev python-protobuf

安装配置ZooKeeper

apt-get install ZooKeeperd

echo 1 | sudo dd of=/var/lib/ZooKeeper/myid

安装Mesos

1、 安装各种环境依赖:

# Update the packages.

$ sudo apt-get update

 

# Install a few utility tools.

$ sudo apt-get install -y tar wget git

 

# Install the latest OpenJDK.

$ sudo apt-get install -y openjdk-7-jdk

 

# Install autotools (Only necessary if building from gitrepository).

$ sudo apt-get install -y autoconf libtool

 

# Install other Mesos dependencies.

$ sudo apt-get -y install build-essential python-devlibcurl4-nss-dev libsasl2-dev libsasl2-modules maven libapr1-dev libsvn-dev

 

2、 下载安装包

$ wget http://www.apache.org/dist/mesos/0.28.2/mesos-0.28.2.tar.gz

$ tar -zxfmesos-0.28.2.tar.gz

 

3、 编译&&安装:

$ cdmesos

$./bootstrap(从官网下载的安装包不需要这一步,git上下载的包需要)

$ mkdirbuild

$ cdbuild

$../configure

$ make (这一步时间比较长,如果卡住时间特别长考虑机器配置问题)

# Runtest suite.

$ make check(时间也特别长,可略过)

$ makeinstall

安装配置ZooKeeper

apt-get install ZooKeeperd

echo 1 | sudo dd of=/var/lib/ZooKeeper/myid

 

配置mesos-master(只需要主节点配置,从属节点可略过)

mkdir -p /etc/Mesos-master

echo in_memory | sudo ddof=/etc/Mesos-master/registry

 

安装Deimos

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 | sudodd of=/etc/mesos-slave/isolation

 

安装docker

参考:https://docs.docker.com/engine/installation/linux/ubuntulinux/

安装Marathon

$ curl -Ohttp://downloads.mesosphere.com/marathon/v1.1.1/marathon-1.1.1.tgz

$ tar xzf marathon-1.1.1.tgz

启动服务

启动所有服务 :

$ initctlreload-configuration

$ service dockerstart

$ servicezookeeper start

在所有的节点上配置ZooKeeper

在配置maser节点和slave节点之前,需要先在所有的6个节点上配置一下ZooKeeper,配置步骤如下:

修改zk的内容

sudo vi /etc/Mesos/zk

将zk的内容修改为如下:

zk://10.162..2.91:2181,10.162.2.92:2181,10.162.2.93:2181/Mesos(master-ip:port,master-ip:port……,只需加master的zookeeper地址)

配置所有的master节点

 

在所有的master节点上都要进行如下操作:

修改ZooKeeper的myid的内容

sudo vi /etc/ZooKeeper/conf/myid

 

将三个master节点的myid按照顺序修改为1,2,3。(本例中master有三个节点)

修改ZooKeeper的zoo.cfg

sudo vi/etc/ZooKeeper/conf/zoo.cfg

 

server.1=10.162.2.91:2888:3888

server.2=10.162.2.92:2888:3888

server.3=10.162.2.93:2888:3888

修改Mesos的quorum

sudo vi /etc/Mesos-master/quorum

将值修改为2。

配置master节点的Mesos 识别ip和和hostname(以在master1上的配置为例)

echo 10.162.2.91 | sudo tee/etc/Mesos-master/ip

 

sudo cp /etc/Mesos-master/ip/etc/Mesos-master/hostname

 

配置所有的slave节点

配置slave节点的识别ip和hostname(根据实际情况填写)

echo 192.168.2.94 | sudo tee/etc/Mesos-slave/ip

sudo cp /etc/Mesos-slave/ip/etc/Mesos-slave/hostname

 

在所有节点上启动服务

 

在master节点上启动服务(以在master1节点上为例)

initctl reload-configuration

service docker start

service zookeeper start

运行mesos-master:

./bin/mesos-master.sh --ip=10.63.51.231--work_dir=/var/lib/mesos --zk=zk://10.63.51.231:2181/mesos --quorum=1

 

运行mesos-slave:

./mesos-slave.sh --ip=10.63.51.230--work_dir=/var/lib/mesos --master=10.63.51.231:5050 --containerizers=docker,mesos--log_dir=/var/log/ --docker=/usr/bin/docker--executor_registration_timeout=5mins

 

启动Marathon:

./bin/start --masterzk://10.63.51.231:2181/mesos --zk zk://10.63.51.231:2181/marathon

 

ErrorMay 12 10:09:18 mesos-master marathon[3611]: Exception in thread "main" java.lang.UnsupportedClassVersionError: mesosphere/marathon/Main : Unsupported major.minor version 52.0
May 12 10:09:18 mesos-master marathon[3611]: #011at java.lang.ClassLoader.defineClass1(Native Method)
May 12 10:09:18 mesos-master marathon[3611]: #011at java.lang.ClassLoader.defineClass(ClassLoader.java:803)
May 12 10:09:18 mesos-master marathon[3611]: #011at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)

 

SolutionIt worked. Marathon needs jdk8. I forgot to mention that I'm on Ubuntu 14.04

sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-8-jdk
sudo update-alternatives --config java
sudo update-alternatives --config java

 

好,至此,如果配置没有出现错误的话就会成功了,由于有的网络情况和设备情况不一样,所以选举的过程有的快有的慢,当发现slave节点有些正常有些不正常时,可以通过reboot来促使自己被master发现。

 

Mesos Web UI: http://10.63.51.231:5050/

Marathon Web UI: http://10.63.51.231:8080

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值