天天看點

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,如需轉載請自行聯系原作者

繼續閱讀