天天看点

Mesosphere Cluster on CentOS7 (zookeeper+mesos+marathon)

简介

mesosphere

mesos

marathon

zookeeper:

  为master的mesos/marathon的配置文件,这保证master更轻量级。

大概为这几个概念,能找到这里的基本上都是知道他们是干啥的,这里不废话了。不懂的可自行脑补。

环境:

Hostname

Function

IP Address

master1

Mesos master

172.18.2.94

master2

172.18.2.95

master3

172.18.2.96

slave1

Mesos slave

172.18.2.97

slave2

172.18.2.98

slave3

172.18.2.99

slave4

172.18.2.100

描述:

  首先,master为3台机器,做zookeeper集群做配置管理(mesos/marathon/zookeeper),然后3个master节点做高可用、Marathon同理。

提前工作

  ①关掉selinux

1

<code>setenforece 0 (配置文件自行修改)</code>

  ②关掉firewalld

<code>systemctl disable firewalld.service</code>

  ③清空防火墙

<code>iptables -F</code>

  这里为了简单起便,将使用yum来装,当然你可以自己编译,效果一样。其他的还有docker仓库直接装的,方法很多,看你环境吧。

<code>rpm -Uvh http:</code><code>//repos</code><code>.mesosphere.io</code><code>/el/7/noarch/RPMS/mesosphere-el-repo-7-1</code><code>.noarch.rpm</code>

2

<code>yum -y </code><code>install</code> <code>mesosphere-zookeeper</code>

<code>yum -y </code><code>install</code> <code>mesos marathon</code>

①,先给每台机器zookeeper打标签:

3

<code>echo</code> <code>1 &gt; </code><code>/etc/zookeeper/conf/myid</code>

<code>PS:</code>

<code>有些可能在 </code><code>/var/lib/zookeeper/myid</code>

注意:myid中的每台机器不同,对应下面配置文件中的server.$NUM

在/etc/zookeeper/conf/zoo.cfg配置文件中追加以下内容:

<code>server.1=172.18.2.94:2888:3888</code>

<code>server.2=172.18.2.95:2888:3888</code>

<code>server.3=172.18.2.96:2888:3888</code>

解释下这个后边的$IP,$PORT1,$PORT2

<code>IP不解释</code>

<code>$PORT1 因为三台为高可用,肯定有个master,这个端口是master起的;</code>

<code>$PORT2 为他们互相检查、看谁当master检查用的。</code>

然后就可以重启zookeeper服务了(端口为2181)

<code>systemctl start zookeeper</code>

在每个节点上,需要配置zookeeper的地址,像这样写进/etc/mesos/zk

<code>zk:</code><code>//172</code><code>.18.2.94:2181,172.18.2.95:2181,172.18.2.96:2181</code><code>/mesos</code>

我不确定这个是不是BUG,因为这个官方要求参数,3台master的情况下,这个配置应该为2的,但是当你设置成2的时候,3台master一直会去争抢leader,导致slave节点无法注册,所以这里我们将它搞为1

<code>echo</code> <code>1 &gt; </code><code>/etc/mesos-master/quorum</code>

这里说下,我们把主机名master$num 写进hosts解析里面,然后把各自的主机名写进这个文件中

<code>echo</code> <code>$master &gt; </code><code>/etc/mesos-master/hostname</code>

需要将本机的ip写进配置文件中

<code>echo</code> <code>$host &gt; </code><code>/etc/mesos-master/ip</code>

然后mesos的配置这里就ok了,但是你得注意一点,把他自身的一些东西给处理下

<code>systemctl stop mesos-slave.service</code>

<code>systemctl disable mesos-slave.service</code>

然后重启mesos

<code>systemctl restart mesos-master.service</code>

首先,创建下他的配置文件的路径(yum装的没给我们创建)

<code>mkdir</code> <code>-p </code><code>/etc/marathon/conf</code>

把mesos的直接拷过来就好了

<code>cp</code> <code>/etc/mesos-master/hostname</code> <code>/etc/marathon/conf</code>

这里有2点:①配置marathon自己的zk,另外还需要连接mesos自己的,因为他要过去调度任务呀

4

<code>cp</code> <code>/etc/mesos/zk</code> <code>/etc/marathon/conf/master</code>

<code>cp</code> <code>/etc/marathon/conf/master</code> <code>/etc/marathon/conf/zk</code>

<code>vim </code><code>/etc/marathon/conf/zk</code> 

<code>内容:zk:</code><code>//172</code><code>.18.2.94:2181,172.18.2.95:2181,172.18.2.96:2181</code><code>/marathon</code>

然后重启marathon

<code>systemctl restart marathon.service</code>

mesos访问地址:

<code>172.18.2.94:5050</code>

<a href="http://s3.51cto.com/wyfs02/M01/6E/5F/wKiom1V6UmXTpy8qAAGKoWKlxcw213.jpg" target="_blank"></a>

marathon访问地址:

<code>172.18.2.94:8080</code>

<a href="http://s3.51cto.com/wyfs02/M02/6E/5C/wKioL1V6VA3AYXDVAAClv2u2Vf4499.jpg" target="_blank"></a>

<code>yum -y </code><code>install</code> <code>mesos</code>

首先要关掉master

<code>systemctl stop mesos-master.service</code>

<code>systemctl disable mesos-master.service</code>

配置zookeeper的地址,因为说过他们会向zookeeper注册,配置同master /etc/mesos/zk

同理,这里为/etc/mesos-slave/hostname

<code>echo</code> <code>$host &gt; </code><code>/etc/mesos-slave/ip</code>

<code>systemctl restart mesos-slave.service</code>

然后,到mesos管理端,去查看slave的注册情况

<a href="http://s3.51cto.com/wyfs02/M02/6E/60/wKiom1V6U8aBVDdaAAGf9pnpmNU738.jpg" target="_blank"></a>

这里不做复杂的演示,只做简单的。

WEB UI 

master1:5050

<a href="http://s3.51cto.com/wyfs02/M00/6E/5C/wKioL1V6WoXhZUqGAAD6cHsUyyA319.jpg" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M00/6E/60/wKiom1V6WN2i7UeBAABOmySsjHI927.jpg" target="_blank"></a>

首先准备一个json文件(hello2.json)

5

6

7

8

9

<code>{</code>

<code>    </code><code>"id"</code><code>: </code><code>"hello2"</code><code>,</code>

<code>    </code><code>"cmd"</code><code>: </code><code>"echo hello; sleep 10"</code><code>,</code>

<code>    </code><code>"mem"</code><code>: 16,</code>

<code>    </code><code>"cpus"</code><code>: 0.1,</code>

<code>    </code><code>"instances"</code><code>: 1,</code>

<code>    </code><code>"disk"</code><code>: 0.0,</code>

<code>    </code><code>"ports"</code><code>: [0]</code>

<code> </code><code>}</code>

然后调用api

<code>curl -i -H </code><code>'Content-Type: application/json'</code> <code>[email protected] master1:8080</code><code>/v2/apps</code>

<a href="http://s3.51cto.com/wyfs02/M00/6E/5C/wKioL1V6Wv2SG-qMAABdQSR9YTw197.jpg" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M00/6E/60/wKiom1V6WXjRgILHAALUk1lcMuI281.jpg" target="_blank"></a>

就到这里吧,太久没写了,找不到感觉。

细节地方大家注意好就行

本文转自 陈延宗 51CTO博客,原文链接:http://blog.51cto.com/407711169/1661185,如需转载请自行联系原作者