为分布式微服务框架提供合适的PAAS平台,使用成熟的M(Mesos)Z(Zookeeper)M(Marathon)可以作为选择之一。在本文中将会对Marathon进行简单的介绍。
什么是Marathon
Marathon是一个可以用于生产环境的容器编排框架,如果说Mesos把自身定成分布式的操作系统的话,那么Marathon就是运行在操作系统上为其管理各种应用进程的init大管家。
同时从Marathon 0.7.0 和Mesos 0.20.0之后,更是更加容易更加原生态地部署/运行/扩展Docker容器应用。目前也已经在很多公司中得到了广泛的应用比如:eBay/PayPal/Yelp等。
特性
特性 | 详细说明 |
---|---|
High Availability | Marathon runs as an active/passive cluster with leader election for 100% uptime. |
Multiple container runtimes | 支持使用cgroups的Mesos Containers和Docker |
Stateful apps | Marathon can bind persistent storage volumes to your application. You can run databases like MySQL and Postgres, and have storage accounted for by Mesos. |
UI | 华美而且强大 |
Constraints | e.g. Only one instance of an application per rack, node, etc. |
服务发现和负载均衡 | 多种实现 |
Health Checks | 使用HTTP或者TCP方式评估应用程序运行状况 |
Event Subscription | Supply an HTTP endpoint to receive notifications - for example to integrate with an external load balancer. |
Metrics | Query them at /metrics in JSON format or push them to systems like graphite, statsd and Datadog. |
REST API | 完整的REST API,可以更加便利地集成 |
运行环境依赖
组件 | 详细说明 |
---|---|
libmesos | JNI绑定以便于Mesos Master进行通信 |
Apache Zookeeper | Leader选举时需要用到Zookeeper |
CentOS7上的安装
yum install -y marathon
- 1
设定zookeeper的quorum
设定文件:/etc/marathon/conf/zk
设定zookeeper的quorum 比如:zk://192.168.32.32:2181,192.168.32.33:2181,192.168.32.34:2181/marathon
也可以在启动的时候通过--zk指定
- 1
- 2
- 3
高可用性模式
Marathon缺省启用高可用性模式,如果需要关闭的话使用–disable_ha在命令行中进行设定即可。
启动/停止/确认状态
CentOS下使用systemctl即可对marathon的进行启动/停止/状态确认。
启动:systemctl start marathon
启动:systemctl stop marathon
启动:systemctl status marathon
- 1
- 2
- 3
Application
我们说Marathon类似于init,那么运行在其上的就被称为Application,典型情况下每个Application代表着一个在持续运行着的服务(也有人称之为长服务,因为很多E文的资料中为 long-running service),
而这些服务可以在多个机器启动多个实例,通过调整实例的个数来进行系统的横向扩展。
Hello Marathon
让我们来举一个具体的例子来说明,在Marathon上描述这样一个Application:
每5秒钟说一句Hello Marathon,永不停息。从Marathon看来描述这个Application的JSON可能就长成如下这个样子。
{
"id": "basic-0",
"cmd": "while [ true ] ; do echo 'Hello Marathon' ; sleep 5 ; done",
"cpus": 0.1,
"mem": 10.0,
"instances": 1
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
这是一个id名称为basic-0的Application,启动的实例是1,分配的CPU和内存分别是0.1和10MB,执行的内容则是每sleep 5秒钟就echo一下Hello Marathon的这样一个死循环的脚本。
而这个执行的方式这是通过Mesos调用/bin/sh -c ${cmd}来实现的。而在Marathon上管理这样的Appliction,则可以通过它宣称非常Beautiful 且 powerful的UI来可视地展现。
Marathon与DC/OS
更为简单的使用Marathon的方法官方称是使用DC/OS, 因为在DC/OS中预安装了Marathon,所以可以直接使用。对DC/OS感兴趣的话,可以参看下面的文章进行部署。基本上DC/OS也是在MZM的基础上进一步的封装,
但是它更侧重于“像管理一台机器那样管理整个Data Center”,ALL-In-One的全部安装了,本系列文章侧重于我们自己也有动手搭建简单的类似平台的能力,所以略显啰嗦。
项目 | URL地址 |
---|---|
DC/OS专题之安装部署篇 | http://blog.csdn.net/liumiaocn/article/details/52049434 |
再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://www.cnblogs.com/captainbed