`
m635674608
  • 浏览: 5061667 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Docker系列之(二):使用Mesos管理Docker集群(Mesos + Marathon + Chronos + Docker)

 
阅读更多

1. Mesos简介

1.1 Mesos

Apache Mesos 是一个分布式系统的管理软件,对集群的资源进行分配和管理。

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

Master: 管理各Slave节点

Slave: 为集群提供资源

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

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

 

官方文档:

http://mesos.apache.org/documentation/latest/architecture/

http://mesos.apache.org/documentation/latest/getting-started/

 

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

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

 

1.2 Marathon

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

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

 

1.3 Chronos

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

 

1.4 ZooKeeper

ZooKeeper用于集群的管理,包括统一配置管理,选举Leader等。

 

2. 安装Mesos

本次测试环境的构成如下:

Mesos Master: test166

Mesos Slave:  test166,test167

Marathon:  test166

Chronos:  test166

ZooKeeper:  test166

 

2.1 安装准备

在所有机器上,安装Mesos源

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

 

在所有机器的/etc/hosts中,指定主机名

1
2
3
# vi /etc/hosts
10.86.255.166  test166
10.86.255.167  test167

 

2.2 安装Master

2.2.1 在Master上安装Mesos,Marathon,Chronos,ZooKeeper

1
# yum install mesos marathon chronos mesosphere-zookeeper

如果服务器上之前装过jdk,升级到最新版本

2.2.2 ZooKeeper设定

本次配置的Master是单节点环境,ZooKeeper也是单点

1
2
# vi /etc/mesos/zk
zk://test166:2181/mesos

2.2.3 启动服务

1
2
3
4
# systemctl start zookeeper
# systemctl start mesos-master
# systemctl start marathon
# systemctl start chronos

 

2.3 安装Slave

2.3.1 在Slave上安装Mesos,Docker

1
# yum install mesos docker

2.3.2 Docker相关设定

1
2
# echo 'docker,mesos' > /etc/mesos-slave/containerizers
# echo '5mins' > /etc/mesos-slave/executor_registration_timeout

2.3.3 ZooKeeper设定

1
2
# vi /etc/mesos/zk
zk://test166:2181/mesos

2.3.4 启动服务

1
2
# systemctl start docker
# systemctl start mesos-slave

 

2.4 确认

Mesos的页面

http://10.86.255.166:5050/

 

Marathon的页面

http://10.86.255.166:8080/

 

Chronos的页面

http://10.86.255.166:4400/

 

3. 使用Mesos

在Mesos Slave页面,可以看到两个Slave

 

3.1 执行framework测试

3.1.1 在服务器上执行framework测试命令

1
# ./src/examples/python/test-framework 10.86.255.166:5050

3.1.2 在Frameworks页面,可以查看任务的执行情况

3.1.3 点击结束的任务页面,可以看到在哪个Slave上执行的

 

3.2 测试Marathon

用nc命令启动一个HTTP服务

3.2.1 在各节点上安装netcat

1
# yum install nmap-ncat

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 测试Chronos

3.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文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# vi marathon-test.json
{
  "container": {
    "type""DOCKER",
    "docker": {
    "image""libmesos/ubuntu"
    }
  },
  "id""ubuntu-marathon",
  "instances": 2,
  "cpus": 0.5,
  "mem": 256,
  "uris": [],
  "cmd""while sleep 10; do date -u +%T; done"
}

4.1.2 在Marathon上创建任务

1
# curl -X POST -H "Content-Type: application/json" http://test166:8080/v2/apps -d@marathon-test.json

4.1.3 在Marathon页面确认容器已经启动

4.1.4 在Mesos页面确认任务正在执行中

4.1.5 从stdout信息确认输出的时间

4.1.6 在节点上确认容器已经启动

1
# docker ps

4.1.7 查看容器的日志,确认输出的时间

1
# docker logs CONTAINER_ID

 

4.2 测试通过Chronos执行Docker任务

启动Docker,抓取nginx镜像,启动nginx容器

4.2.1 创建json文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# vi chronos-test.json
{
  "container": {
    "type""DOCKER",
    "image""nginx"
    "network""BRIDGE"
  },
  "schedule""R\/2015-12-20T07:30:00Z\/PT2M",
  "name""chronos-nginx",
  "cpus""0.5",
  "mem""256",
  "uris": [],
  "command""/usr/sbin/nginx -g 'daemon off;' -c /etc/nginx/nginx.conf"
}

network": "BRIDGE",因为Docker默认的网络模式是桥接,不指定默认也是BRIDGE

4.2.2 在Chronos上,创建任务

1
# curl -L -H "Content-Type: application/json" -X POST -d@chronos-test.json http://test166:4400/scheduler/iso8601

4.2.3 在Chronos页面确认任务已做成

本次是测试,所以在Chronos的任务页面,点击「Force Run」强制执行

4.2.4 在Mesos页面确认任务的详细信息

4.2.5 在节点上确认容器启动

1
# docker ps

4.2.6 确认nginx网页可以访问

5. 后记

Mesos, Marathon 使得 Docker集群的管理变得简单方便,为在生产环境部署使用Docker集群提供了可能。

 

http://www.cnblogs.com/ee900222/p/docker_2.html

分享到:
评论

相关推荐

    MesosClusterSpyke:用于创建 Mesos + Marathon + Chronos + Docker 集群的 Vagrantfiles

    Vagrantfile 和一些用于创建 Mesos + Marathon + Chronos + Docker 集群的 shell 脚本 如果只是尝试 Mesos 集群,那会很痛苦。 这组文件可以让你轻松生成 Mesos 的集群环境。 如果你愿意,你可以参考。 入门 1. ...

    Mesos集群运维vagrant-mesos.zip

    这意味着,你可以使用 vagrant up,打造自己的 Mesos Marathon Chronos Docker PaaS 平台。Marathon 作为 分布式 init.d, Chronos 作为分布式 cron。要求:vagrant 1.6.5 : http://www.vagrantup.com/VirtualBox: ...

    藏经阁-基于Mesos_Docker构建数据处理平台.pdf

    通过使用Mesos和Docker,可以管理和调度Runtime环境和依赖项。 知识点7:JVM Dependencies JVM是指Java虚拟机,用于运行Java程序。通过使用Mesos和Docker,可以管理和调度JVM依赖项。 知识点8:Distributed ...

    vagrant-mesos, Mesos/Docker/Marathon/Aurora 开发 Vagrant setup.zip

    vagrant-mesos, Mesos/Docker/Marathon/Aurora 开发 Vagrant setup mesosVagrant开发 environent Mesos/Marathon/Chronos/Aurora/Jenkins/Docker免责声明:这个Vagrant安装消耗了大量资源,但在我的2013 Macbook Pro...

    Monitoring Mesos, Docker, Containers with Zabbix

    假设我们有一个基于Mesos的集群,其中包含多个Docker容器和若干个应用程序框架(如Marathon和Chronos)。为了确保系统的稳定运行,我们可以采取以下监控策略: - **硬件监控**:通过Zabbix监控每个节点的CPU、内存...

    perl-mesos:Apache Mesos的Perl绑定

    3. **框架(Framework)**:Mesos上的应用模型,例如 Marathon (用于持续部署) 和 Chronos (用于定时任务)。框架通过Mesos API注册到Master,并声明它们的需求,接收并执行任务。 4. **任务(Task)**:框架定义的...

    archive-mesos-coreos-cluster-example:CoreOS 上的多主机 mesos 集群

    "archive-mesos-coreos-cluster-example-master" 这个文件名暗示了它是主节点(master)的相关配置或脚本,可能包含了启动和管理Mesos集群所需的初始化脚本、配置文件和指南。在Mesos集群中,master节点负责资源调度...

    Apache Mesos Cookbook-Packt Publishing(2017)【E文】

    2. **框架兼容性**:Mesos支持多种框架,如Marathon、Chronos等,这些框架能够运行不同的任务和服务,如批处理作业、长期运行的服务或微服务。 3. **隔离性和安全性**:通过容器化技术(如Docker)实现资源的隔离,...

    mesos-1.4.3.tar.gz

    2. **多框架支持**:Mesos 支持多种框架,如 Marathon (持续服务)、Chronos (定时任务) 和 Spark (大数据处理),允许用户在同一集群上运行不同类型的作业。 3. **高可用性**:Mesos Master 可以配置为多副本模式,...

    ansible-mesos:Ansible配置以设置Mesos服务器

    该存储库包含Ansible配置,可用于启动简单的Mesos / Marathon / Chronos集群。 它将创建一个具有单个主设备和两个从设备的集群。 指示 您可以使用以下命令启动集群: vagrant up ./init-cluster.sh 这将启动三台...

    Mesosphere-A-Short-History-of-Container-Orchestration

    - **可扩展性**:Mesos 支持大规模集群部署,能够有效管理数千台服务器。 - **故障恢复**:Mesos 提供了高级别的容错机制,确保即使部分节点出现故障也能保持系统的稳定运行。 #### 容器编排:Kubernetes 与 Mesos ...

    apache-mesos-cookbook

    Use the Marathon and Chronos frameworks to manage multiple applications Work with Mesos and Docker Integrate Mesos with Spark and other big data frameworks Use networking features in Mesos for ...

    马拉松:在Apache Mesos之上大规模部署和管理容器(包括Docker)

    Marathon也用作元框架:您可以使用它启动其他Mesos框架,例如Chronos或 ,以确保它们在机器故障中幸免。 它可以启动任何可以在标准外壳中启动的东西。 实际上,您甚至可以通过Marathon启动其他Marathon实例。 特征 ...

    DCOS深入分析

    - `mesos-master` 是 Mesos 的核心组件之一,负责资源管理和任务调度。 - `Marathon` 是一个应用管理框架,用于部署和管理容器化的应用程序。 - `Zookeeper` 提供了一种协调服务,用于维护集群状态。 - `mesos-...

    企业私有PaaS云架构.pptx

    计算节点运行Mesos slave和Docker,而路由节点使用Nginx或Haproxy进行流量分发。 在**应用部署和发布**上,有两种主要方式: 1. **基础镜像+应用代码**:基础镜像包含运行业务所需的基础组件,应用代码由Zeus打包并...

    paasta:开放的分布式平台即服务

    PaaSTA是一个高度可用的分布式系统,用于使用容器和Apache Mesos构建,部署和运行服务! 想更多地了解PaaSTA为何与众不同的背后观点? 查看。 注意:PaaSTA在Yelp的生产环境中已经运行了很多年,并且在代码库中...

Global site tag (gtag.js) - Google Analytics