Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Deploy and manage containers (including Docker) on top of Apache Mesos at scale.
Scala JavaScript Protocol Buffer Python Shell CSS Other
branch: master

README.md

Stories in Ready

Marathon Build Status

Marathon is an Apache Mesos framework for long-running applications. Given that you have Mesos running as the kernel for your datacenter, Marathon is the init or upstart daemon.

Marathon 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.

Marathon 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.

Using Marathon versions 0.7.0+ and Mesos 0.20.0+, you can deploy, run and scale Docker containers with ease.

Features

  • 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.
  • Web UI
  • JSON/REST API for easy integration and scriptability
  • Basic Auth and SSL
  • Metrics: available at /metrics in JSON format

Documentation

Marathon documentation is available on the Marathon GitHub pages site.

Documentation for installing and configuring the full Mesosphere stack including Mesos and Marathon is available on the Mesosphere website.

Contributing

We heartily welcome external contributions to Marathon's documentation. Documentation should be committed to the master branch and published to our GitHub pages site using the instructions in docs/README.md.

Setting Up And Running Marathon

Installation

Install Mesos

Marathon requires Mesos installed on the same machine in order to use a shared library. Instructions on how to install prepackaged releases of Mesos are available in the Marathon docs.

Install Marathon

Instructions on how to install prepackaged releases are available in the Marathon docs. Alternatively, you can build Marathon from source.

Building from Source
  1. To build Marathon from source, check out this repo and use sbt to build a JAR:

    git clone https://github.com/mesosphere/marathon.git
    cd marathon
    sbt assembly
    
  2. Run ./bin/build-distribution to package Marathon as an executable JAR (optional).

Running in Development Mode

Mesos local mode allows you to run Marathon without launching a full Mesos cluster. It is meant for experimentation and not recommended for production use. Note that you still need to run ZooKeeper for storing state. The following command launches Marathon on Mesos in local mode. Point your web browser to http://localhost:8080 to see the Marathon UI.

./bin/start --master local --zk zk://localhost:2181/marathon

For more information on how to run Marathon in production and configuration options, see the Marathon docs.

Developing Marathon

See the documentation on how to run Marathon locally inside a virtual machine.

Running the development Docker

Build tip:

docker build -t marathon-head .

Run it:

docker run marathon-head --master local --zk zk://localhost:2181/marathon

If you want to inspect the contents of the Docker:

docker run -i -t --entrypoint=/bin/bash marathon-head -s

Marathon Clients

Companies using Marathon

Marathon is managing applications on more than 100,000 nodes at these companies, and many more:

Not in the list? Open a pull request and add yourself!

Help

If you have questions, please post on the Marathon Framework Group email list. You can find Marathon support in the #marathon channel, and Mesos support in the #mesos channel, on freenode (IRC). The team at Mesosphere is also happy to answer any questions.

Authors

Marathon was created by Tobias Knaup and Florian Leibert and continues to be developed by the team at Mesosphere and by many contributors from the community.

Something went wrong with that request. Please try again.