使用Mesos管理Docker集群(Mesos + Marathon + Chronos + Docker)

使用Mesos管理Docker集群(Mesos + Marathon + Chronos + Docker)

Mesos 简介

Apache Mesos 是一个分布式系统的管理软件,对集群的资源进行分配和管理。
据说是云计算的未来,利用Mesos可轻易实现一个PaaS云平台。

Mesos 架构图

Mesos主要由以下几部分组成:

Master: 管理各Slave节点

Slave: 为集群提供资源

Framework: scheduler从Master请求资源,executor在Slave上执行任务

Slave节点上的每个executor是一个容器

Mesos主服务器使用Zookeeper进行服务选举和发现。它有一个注册器记录了所有运行任何和从服务器信息,使用MultiPaxos进行日志复制实现一致性。

Mesos有一个从服务器恢复机制,无论什么时候一个从服务器死机了,用户的任务还是能够继续运行,从服务器会将一些关键点信息如任务信息 状态更新持久化到本地磁盘上,重新启动时可以从磁盘上恢复运行这些任务(类似Java中的钝化和唤醒)

Marathon 简介

Marathon 是Mesos的一个Framework,用来执行需要长时间运行的任务。如果把Mesos比喻成Kernel的话,那么Marathon就是它的守护进程Daemon。

它还具备HA,Health Checks,服务发现等功能。如果某个Docker进程崩溃,Marathon会重新启动同样的进程。

Chronos 简介

Chronos本质上是cron-on-mesos,这是一个用来运行基于容器定时任务的Mesos框架。

ZooKeeper 简介

ZooKeeper用于集群的管理,包括统一配置管理,选举Leader等。(这里可能理解有误)

Master节点安装

规划

  • 192.168.2.117 master1
  • 192.168.2.118 master2
  • 192.168.2.119 master3

3个master由ZooKeeper选举出一个leader,其中一个DOWN机后,由其它的充当Leader.

关闭防火墙

master1,master2,master3:

systemctl stop firewalld && systemctl disable firewalld

添加 mesos的yum源

master1,master2,master3:

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

安装mesos及相关软件

master1,master2,master3:

yum -y install mesos marathon
yum -y install mesosphere-zookeeper

配置zookeeper

master1:

touch /var/lib/zookeeper/myid
echo 1 > /var/lib/zookeeper/myid

master2:

touch /var/lib/zookeeper/myid
echo 2 > /var/lib/zookeeper/myid

master3:

touch /var/lib/zookeeper/myid
echo 3 > /var/lib/zookeeper/myid

master1,master2,master3:

vi /etc/zookeeper/conf/zoo.cfg 增加内容:

server.1=192.168.2.117:2888:3888
server.2=192.168.2.118:2888:3888
server.3=192.168.2.119:2888:3888

master1,master2,master3:

vi /etc/mesos/zk 增加内容:

zk://192.168.2.117:2181,192.168.2.118:2181,192.168.2.119:2181/mesos

master1,master2,master3:

vi /etc/mesos-master/quorum

修改quorum,这个地方也很重要。
增加内容:2

配置mesos和marathon

master1:

echo 192.168.2.117 | tee /etc/mesos-master/hostname
mkdir -p /etc/marathon/conf/ && touch hostname
echo 192.168.2.117 | tee /etc/marathon/conf/hostname

master2:

echo 192.168.2.118 | tee /etc/mesos-master/hostname
mkdir -p /etc/marathon/conf/ && touch hostname
echo 192.168.2.118 | tee /etc/marathon/conf/hostname

master3:

echo 192.168.2.119 | tee /etc/mesos-master/hostname
mkdir -p /etc/marathon/conf/ && touch hostname
echo 192.168.2.119 | tee /etc/marathon/conf/hostname

启动zookeeper mesos-master marathon

master1,master2,master3:

systemctl start zookeeper
systemctl start mesos-master
systemctl start marathon

systemctl disable mesos-slave

Slave节点安装

规划

  • 192.168.2.120 slave1
  • 192.168.2.121 slave2

关闭防火墙

systemctl stop firewalld && systemctl disable firewalld

添加 mesos的yum源

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

安装mesos

yum -y install mesos

配置master信息

slave1:

vi /etc/mesos/zk
zk://192.168.2.117:2181,192.168.2.118:2181,192.168.2.119:2181/mesos
cd /etc/mesos-slave/
touch hostname
echo 192.168.2.120 | sudo tee /etc/mesos-slave/hostname

slave2:

vi /etc/mesos/zk
zk://192.168.2.117:2181,192.168.2.118:2181,192.168.2.119:2181/mesos
cd /etc/mesos-slave/
touch hostname
echo 192.168.2.121 | sudo tee /etc/mesos-slave/hostname

启动slave1,slave2:

systemctl start mesos-slave
systemctl enable  mesos-slave
systemctl disable mesos-master

测试

访问mesos地址:

http://192.168.2.117:5050 

查看mesos:

查看slave:

主master机器down机后,从机切换为主:

访问marathon地址:

http://192.168.1.110:8080

可利用其发布docker镜像并可调整应用数量

访问chronos地址:

测试 Marathon

用nc命令启动一个HTTP服务

在各节点上安装netcat

yum install nmap-ncat

在Marathon页面,点击“Create Application”创建任务

添加command内容:

while true; 
do ( echo "HTTP/1.0 200 Ok"; echo; echo "Hello World" ) | nc -l $PORT;
done

创建并执行任务,点击任务,可以看到任务的详细信息

另附: 虚拟机的配置结构图

参考资料:

[http://www.cnblogs.com/ee900222/p/docker_2.html]
[http://wiselyman.iteye.com/blog/2200267]
阅读更多
版权声明:http://blog.csdn.net/robertkun https://blog.csdn.net/robertkun/article/details/51782774
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭