酱酱酱子 > Docker > 正文

mesos+marathon+zookeeper的docker管理集群亲手搭建实例(详细)


mesos+marathon+zookeeper的docker管理集群亲手搭建实例(详细)


1:规划(5master+3slave)

master:

  • 10.64.5.184 ---master1

  • 10.64.5.185 ---master2

  • 10.64.5.186 ---master3

  • 10.64.5.187 ---master4

  • 10.64.5.188 ---master5

slave:

  • 10.64.5.170 ---slave1

  • 10.64.5.172 ---slave2

  • 10.64.5.167 ---slave3

2:配置master节点

   

(1)关闭防火墙

  • master1 master2  master3 master4 master5    

1
#systemctl stop firewalld && systemctl disable firewalld


(2)添加mesos的yum源

  • master1 master2  master3  master4 master5    

1
#sudo rpm -Uvh http://repos.mesosphere.io/el/7/noarch/RPMS/mesosphere-el-repo-7-1.noarch.rpm


(3)安装mesos,marathon,zookeeper

  • master1 master2  master3 master4 master5

#yum -y install mesos marathon mesosphere-zookeeper


(4)配置zookeeper

#设置文件[/var/lib/zookeeper/myid]为当前mesos master节点的id,id必须为1-255之中的整数,例如:1

  • master1

1
#echo 1 > /var/lib/zookeeper/myid
  • master2  

1
#echo 2 > /var/lib/zookeeper/myid
  • master3

1
#echo 3 > /var/lib/zookeeper/myid
  • master4

1
#echo 4 > /var/lib/zookeeper/myid
  • master5

1
#echo 5 > /var/lib/zookeeper/myid


#master_node_id为master节点id同该节点[/var/lib/zookeeper/myid]文件的配置,master_node_ip为master节点的ip地址:server.$master_node_id=$master_node_ip:2888:3888

其中第一个端口2888用来集群成员的信息交换,第二个端口3888是在leader挂掉时专门用来进行选举leader所用。

  • master1 master2  master3  master4 master5

1
2
3
4
5
6
7
#vim /etc/zookeeper/conf/zoo.cfg
结尾添加内容
server.1=10.64.5.184:2888:3888
server.2=10.64.5.185:2888:3888
server.3=10.64.5.186:2888:3888
server.4=10.64.5.187:2888:3888
server.5=10.64.5.188:2888:3888
1
2
3
#vim /etc/mesos/zk
完全替换原来内容:
zk://10.64.5.184:2181,10.64.5.185:2181,10.64.5.186:2181,10.64.5.187:2181,10.64.5.188:2181 /mesos



#设置文件[/etc/mesos-master/quorum]内容为一个大于(master节点数除以2)的整数。

1
2
3
#echo 3 >/etc/mesos-master/quorum
完全替换原来内容:
3



(5)配置mesos和marathon

#主机名和ip要在hosts中写入,不能全部使用localhost,否则会出现slave不能识别,以及marathon任务下发不正常等现象。

  • master1

1
2
3
4
5
# mkdir -p /etc/marathon/conf
# echo 10.64.5.184  > /etc/mesos-master/hostname
# echo 10.64.5.184 > /etc/marathon/conf/hostname
#hostnamectl --static set-hostname master-1.com
#echo "10.64.5.184 master-1 master-1.com" >/etc/hosts
  • master2 

1
2
3
4
5
# mkdir -p /etc/marathon/conf
# echo 10.64.5.185 > /etc/mesos-master/hostname
# echo 10.64.5.185 > /etc/marathon/conf/hostname
#hostnamectl --static set-hostname master-2.com
#echo "10.64.5.185 master-2 master-2.com" >/etc/hosts
  • master3

1
2
3
4
5
# mkdir -p /etc/marathon/conf
# echo 10.64.5.186  > /etc/mesos-master/hostname
# echo 10.64.5.186> /etc/marathon/conf/hostname
#hostnamectl --static set-hostname master-3.com
#echo "10.64.5.186 master-3 master-3.com" >/etc/hosts
  • master4

1
2
3
4
5
# mkdir -p /etc/marathon/conf
# echo 10.64.5.187 > /etc/mesos-master/hostname
# echo 10.64.5.187 > /etc/marathon/conf/hostname
#hostnamectl --static set-hostname master-4.com
#echo "10.64.5.187 master-4 master-4.com" >/etc/hosts
  • master5

1
2
3
4
5
# mkdir -p /etc/marathon/conf
# echo 10.64.5.188  > /etc/mesos-master/hostname
# echo 10.64.5.188 > /etc/marathon/conf/hostname
#hostnamectl --static set-hostname master-5.com
#echo "10.64.5.188 master-5 master-5.com" >/etc/hosts



  • master1 master2  master3 master4 master5

1
2
3
# cp  /etc/mesos/zk   /etc/marathon/conf/master
# cp  /etc/mesos/zk   /etc/marathon/conf/zk
# sed -i  's|mesos|marathon|g'   /etc/marathon/conf/zk

(6)启动mesos,marathon,zookeeper

  • master1 master2  master3 master4 master5

1
2
# systemctl start zookeeper && systemctl start mesos-master && systemctl start marathon
# systemctl disable mesos-slave

(7)检查配置

#配置过程中出错,为了方便检查对比各master配置,直接执行如下命令。

1
2
3
4
5
cat /var/lib/zookeeper/myid && \
tail -6 /etc/zookeeper/conf/zoo.cfg && \
cat /etc/mesos/zk && cat /etc/mesos-master/quorum && \
cat /etc/mesos-master/hostname&& cat /etc/marathon/conf/hostname&& \
cat /etc/marathon/conf/master&&cat /etc/marathon/conf/zk

1
还可以创建 /etc/mesos-master/cluster 文件,写入集群的别名。


2:配置slave节点


(1)关闭防火墙

  • slave1 slave2  slave3

1
#systemctl stop firewalld && systemctl disable firewalld


(2)添加mesos的yum源

  • slave1 slave2  slave3

1
#sudo rpm -Uvh http://repos.mesosphere.io/el/7/noarch/RPMS/mesosphere-el-repo-7-1.noarch.rpm


(3)安装mesos,marathon,zookeeper

  • slave1 slave2  slave3

1
#yum -y install mesos


(4)配置master信息

  • slave1

1
2
3
#echo 10.64.5.167    > /etc/mesos-slave/hostname
#hostnamectl --static set-hostname slave-1.com
#echo "10.64.5.167 slave-1 slave-1.com" >/etc/hosts


  • slave2

1
2
3
#echo 10.64.5.170    > /etc/mesos-slave/hostname
#hostnamectl --static set-hostname slave-2.com
#echo "10.64.5.170 slave-2 slave-2.com " >/etc/hosts

 

  • slave3

1
2
3
#echo 10.64.5.172    > /etc/mesos-slave/hostname
#hostnamectl --static set-hostname slave-1.com
#echo "10.64.5.172 slave-3 slave-3.com " >/etc/hosts


  • slave1 slave2  slave3

1
2
3
#vi /etc/mesos/zk
增加:
zk://10.64.5.184:2181,10.64.5.185:2181,10.64.5.186:2181,10.64.5.187:2181,10.64.5.188:2181/mesos


(5)启动slave

1
2
#systemctl start mesos-slave && systemctl enable mesos-slave
#systemctl disable mesos-master

3:访问web管理页面

访问mesos的管理页面。master_ip:5050 

#master_ip是这5个master中的任意一个就行,经过zookeeper选主喉,会自动跳到了leader的页面,如图mesos的leader为187。

mesos+marathon+zookeeper的docker管理集群亲手搭建实例(详细)

在Frameworks中已经能够识别marathon,此时marathon的leader为10.64.5.186.

#mesos和marathon都是有zookeeper来选举leader,但是选主过程彼此独立,就是mesos的leader为187,但是marathon的leader为186(如图)。

mesos+marathon+zookeeper的docker管理集群亲手搭建实例(详细)

已经能够识别三个slave。

mesos+marathon+zookeeper的docker管理集群亲手搭建实例(详细)


访问marathon的管理页面。master_ip:8080


mesos+marathon+zookeeper的docker管理集群亲手搭建实例(详细)

mesos+marathon+zookeeper的docker管理集群亲手搭建实例(详细)

mesos+marathon+zookeeper的docker管理集群亲手搭建实例(详细)

mesos+marathon+zookeeper的docker管理集群亲手搭建实例(详细)


zookeeperdockermesosmarathon

发表评论

mesos+marathon+zookeeper的docker管理集群亲手搭建实例(详细)

Ctrl+Enter 发布

发布

取消

6条评论

按时间倒序

按时间正序

mesos+marathon+zookeeper的docker管理集群亲手搭建实例(详细)

litao941

1楼 . 2016-03-16 10:39

不知楼主有没有遇到:

Failed to connect to slave '4b235aa9-8daf-40a1-9a85-484b2d00e4a5-S1' on 'docker006.v.com:5051'.
Potential reasons:
The slave's hostname, 'docker006.v.com', is not accessible from your network
The slave's port, '5051', is not accessible from your network
The slave timed out or went offline

上面从 mesos 的 master 入口看到每个 slave 都有这样的错误, 不知做何解释, hosts 是有绑定的。


0人赞

0人回复

mesos+marathon+zookeeper的docker管理集群亲手搭建实例(详细)

IT废柴

2楼 . 2016-07-05 17:29

haproxy的内容怎么没有呢?

0人赞

1人回复

添加新评论

Ctrl+Enter 发布

发布

取消

mesos+marathon+zookeeper的docker管理集群亲手搭建实例(详细)

龙尤在飞

3楼 . 2016-09-29 00:18

楼主,请教个网络的问题,mesos管理docker,每次在marathon上提交job,运行个tomcat的docker,这个运行的容器的IP如何设置呢,是用host,还是bridge;还是flannel+host-gw管理docker的IP(假如前端是通过haproxy匹配url调用的后端的应用的,那应该如何设置IP 域名呢,因为每次提交marathon的job,不一定只分配到一个mesos slave上的)

0人赞

1人回复

  • 作者 酱酱酱子啊:@龙尤在飞 docker的集群管理,肯定要用到服务发现的机制,这个容器的IP不可能是人为手动去设置,就是每当你扩展一个容器出来。不管这个容器落在哪个slave上面,端口是多少。都会自动的把这个容器的地址添加到负载均衡的配置中。有个项目叫做bamboo,你可以看一下,就是解决这个问题的。

    2016-10-11 10:52

    回复

添加新评论

Ctrl+Enter 发布

发布

取消

mesos+marathon+zookeeper的docker管理集群亲手搭建实例(详细)

龙尤在飞

4楼 . 2016-10-24 20:05

好的,多谢 最近在看kubernetes,比mesos更方便

0人赞

0人回复

相关文章:

  • 2020-07-16
  • 2021-07-02
  • 2021-10-24
  • 2021-06-30
  • 2022-12-23
  • 2021-10-25
猜你喜欢
  • 2022-12-23
  • 2021-11-20
  • 2021-07-31
  • 2021-11-20
  • 2021-11-20
相关资源
相似解决方案