1. Mesos简介1.1 MesosApache Mesos 是一个分布式系统的管理软件,对集群的资源进行分配和管理。 Mesos主要由以下几部分组成: Master: 管理各Slave节点 Slave: 为集群提供资源 Framework: scheduler从Master请求资源,executor在Slave上执行任务 Slave节点上的每个executor是一个容器
官方文档: http://mesos./documentation/latest/architecture/ http://mesos./documentation/latest/getting-started/
Mesos主服务器使用Zookeeper进行服务选举和发现。它有一个注册器记录了所有运行任何和从服务器信息,使用MultiPaxos进行日志复制实现一致性。 Mesos有一个从服务器恢复机制,无论什么时候一个从服务器死机了,用户的任务还是能够继续运行,从服务器会将一些关键点信息如任务信息 状态更新持久化到本地磁盘上,重新启动时可以从磁盘上恢复运行这些任务(类似Java中的钝化和唤醒)
1.2 MarathonMarathon 是Mesos的一个Framework,用来执行需要长时间运行的任务。如果把Mesos比喻成Kernel的话,那么Marathon就是它的守护进程Daemon。 它还具备HA,Health Checks,服务发现等功能。如果某个Docker进程崩溃,Marathon会重新启动同样的进程。
1.3 ChronosChronos本质上是cron-on-mesos,这是一个用来运行基于容器定时任务的Mesos框架。
1.4 ZooKeeperZooKeeper用于集群的管理,包括统一配置管理,选举Leader等。
2. 安装Mesos本次测试环境的构成如下: Mesos Master: test166 Mesos Slave: test166,test167 Marathon: test166 Chronos: test166 ZooKeeper: test166
2.1 安装准备在所有机器上,安装Mesos源
在所有机器的/etc/hosts中,指定主机名
2.2 安装Master2.2.1 在Master上安装Mesos,Marathon,Chronos,ZooKeeper
如果服务器上之前装过jdk,升级到最新版本 2.2.2 ZooKeeper设定本次配置的Master是单节点环境,ZooKeeper也是单点
2.2.3 启动服务
2.3 安装Slave2.3.1 在Slave上安装Mesos,Docker
2.3.2 Docker相关设定
2.3.3 ZooKeeper设定
2.3.4 启动服务
2.4 确认Mesos的页面
Marathon的页面
Chronos的页面
3. 使用Mesos在Mesos Slave页面,可以看到两个Slave
3.1 执行framework测试3.1.1 在服务器上执行framework测试命令
3.1.2 在Frameworks页面,可以查看任务的执行情况3.1.3 点击结束的任务页面,可以看到在哪个Slave上执行的
3.2 测试Marathon用nc命令启动一个HTTP服务 3.2.1 在各节点上安装netcat
3.2.2 在Marathon页面,点击“Create Application”创建任务command: while true; do ( echo "HTTP/1.0 200 Ok"; echo; echo "Hello World" ) | nc -l $PORT; done 3.2.3 点击“Create”后,创建并执行任务3.2.4 在Applications页面,点击任务,可以看到任务的详细信息可以看到任务分布在两个节点上,访问HTTP服务启动的端口 3.2.5 在各节点可以看到nc进程正启动着test166: test167: 3.3 测试Chronos3.3.1 在Chronos页面,点击“New Job”创建任务注意:时间是UTC时间
3.3.2 在Chronos页面,可以看到任务执行的情况3.3.3 在Mesos页面,可以看到任务执行的情况
4. 执行Docker任务4.1 测试通过Marathon执行Docker任务启动Docker,抓取ubuntu镜像,date命令输出当前时间
任务Deploying的时候,从docker.io抓取镜像,抓取下来后,开始Running。 如果抓取镜像的时间过长,失败的时候,可以先用docker pull命令在节点上抓取镜像后,再执行任务。 4.1.1 创建json文件
4.1.2 在Marathon上创建任务
4.1.3 在Marathon页面确认容器已经启动4.1.4 在Mesos页面确认任务正在执行中4.1.5 从stdout信息确认输出的时间4.1.6 在节点上确认容器已经启动
4.1.7 查看容器的日志,确认输出的时间
4.2 测试通过Chronos执行Docker任务启动Docker,抓取nginx镜像,启动nginx容器 4.2.1 创建json文件
network": "BRIDGE",因为Docker默认的网络模式是桥接,不指定默认也是BRIDGE 4.2.2 在Chronos上,创建任务
4.2.3 在Chronos页面确认任务已做成本次是测试,所以在Chronos的任务页面,点击「Force Run」强制执行 4.2.4 在Mesos页面确认任务的详细信息4.2.5 在节点上确认容器启动
4.2.6 确认nginx网页可以访问5. 后记Mesos, Marathon 使得 Docker集群的管理变得简单方便,为在生产环境部署使用Docker集群提供了可能。 |
|
来自: 谢兴l4nztpvbdk > 《系统与软件》