It provides a REST API for starting, stopping, and scaling applications. Marathon is written in Scala and can run in highly-available mode by running multiple copies. The state of running tasks gets stored in the Mesos state abstraction.
It is a meta-framework: you can start other Mesos frameworks such as Chronos or Storm with it to ensure they survive machine failures. It can launch anything that can be launched in a standard shell. In fact, you can even start other Marathon instances via Marathon.
Since Marathon version 0.7.0 and Mesos 0.20.0, you can deploy, run and scale Docker containers easily with native support.
- HA — run any number of Marathon schedulers, but only one gets elected as leader; if you access a non-leader, your request gets proxied to the current leader
- Constraints – e.g., only one instance of an application per rack, node, etc.
- Service Discovery & Load Balancing via HAProxy or the events API (see below).
- Health Checks: check your application’s health via HTTP or TCP checks.
- Event Subscription lets you supply an HTTP endpoint to receive notifications, for example to integrate with an external load balancer.
- Marathon UI
- JSON/REST API for easy integration and scriptability
- Basic Auth and SSL
- Metrics: query them at
/metricsin JSON format or push them to graphite/statsd/datadog.
Marathon 1.5.2 is a bug-fix version that includes:
- Migrate UnreachableStrategy Saved in Instances
Int.MaxValueto 8 for maximum concurrency during migration (#5676) (#5701)
- Allow underscore for network names (#5687)
- Store a flag node in ZK to indicate that Marathon performs data migration (#5662)
- Switch to use Debian Slim base image (#5668)
- Extend the set of command-line flags returned by /v2/info (#5612)
- Do not ignore exceptions when resolving apps and pods in GroupRepository (#5607)
- Update Mesos version to 1.4.0 which is used for building packages and Docker images (#5606)
- Do sync before reading from or writing to ZooKeeper (#5566)
- Fixes bug in which some Condition values were improperly read (#5555) (#5557)
- Added an option to disable a plugin (#5524)