简介
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 > </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 > </code><code>/etc/mesos-master/quorum</code>
这里说下,我们把主机名master$num 写进hosts解析里面,然后把各自的主机名写进这个文件中
<code>echo</code> <code>$master > </code><code>/etc/mesos-master/hostname</code>
需要将本机的ip写进配置文件中
<code>echo</code> <code>$host > </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 > </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,如需转载请自行联系原作者