Marathon is a production-proven Apache Mesos framework for container orchestration. DC/OS is the easiest way to start using Marathon. Issues are tracked in JIRA. It provides a REST API for starting, stopping, and scaling applications. It 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.
- 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.3 is a bug-fix version that includes:
- MARATHON_EE-1701 Pods now respect hostname: UNIQUE constraint (#5793)
- MARATHON_EE-1768 Proper reading of secrets from volumes (#5791)
- MARATHON_EE-1764 Speed up service port assignment
- MARATHON_EE-1770 Speed up service port assignment (#5796)