docs/cluster/mesos
Dong Chen 995866d76c Improve node management.
1. Introduce pending state. Pending nodes need validation before moving to healthy state. Resolve issues of duplicate ID and dead node drop issues.
2. Expose error and last update time in docker info.
3. Use connect success/failure to drive state transition between healthy and unhealthy.

Signed-off-by: Dong Chen <dongluo.chen@docker.com>
2015-12-30 13:25:43 -08:00
..
queue fix issue with timeouts in mesos 2015-10-18 14:39:16 -07:00
README.md Typo 2015-12-14 09:55:10 +08:00
agent.go renaming files + change on tests 2015-12-14 16:20:38 -05:00
agent_test.go renaming files + change on tests 2015-12-14 16:20:38 -05:00
cluster.go Change the scheduler lock in Mesos cluster 2015-12-17 18:20:57 +02:00
cluster_test.go Reorganize engine failure detection procedure. Change engine option 'RefreshRetry' to 'FailureRetry'. 2015-12-15 19:13:03 -08:00
driver.go Improve node management. 2015-12-30 13:25:43 -08:00
offer_sorter.go Adding integration tests, decline offers after 'SWARM_MESOS_OFFER_TIMEOUT', Tracking tasks and managing offers, refactoring list of slaves, queue create requests before processing them 2015-05-26 16:21:54 -04:00
offer_sorter_test.go Adding integration tests, decline offers after 'SWARM_MESOS_OFFER_TIMEOUT', Tracking tasks and managing offers, refactoring list of slaves, queue create requests before processing them 2015-05-26 16:21:54 -04:00
task.go Improving error output for bad swarm mesos user 2015-11-25 04:24:08 -05:00
task_test.go support docker run -p <port> in mesos (random) 2015-07-16 11:24:45 -07:00
utils.go support docker run -p <port> in mesos (random) 2015-07-16 11:24:45 -07:00

README.md

Using Docker Swarm and Mesos

Swarm comes with a built-in scheduler that works with the swarm manager to schedule container resources. You can completely replace the built-in scheduler with a 3rd party scheduler. For example, you can replace it with the Mesos scheduler as described here.

When using Docker Swarm and Mesos, you use the Docker client to ask the swarm manager to schedule containers. The swarm manager then schedules those containers on a Mesos cluster.

Prerequisites

Each node in your swarm must run a Mesos slave. The slave must be capable of starting tasks in a Docker Container using the --containerizers=docker option.

You need to configure two TCP ports on the slave. One port to listen for the swarm manager, for example 2375. And a second TCP port to listen for the Mesos master, for example 3375.

Start the Docker Swarm manager

If you use a single Mesos master:

$ docker run -d -p <swarm_port>:2375 -p 3375:3375 \
    swarm manage \
        -c mesos-experimental \
        --cluster-opt mesos.address=<public_machine_ip> \
        --cluster-opt mesos.port=3375 \
        <mesos_master_ip>:<mesos_master_port>

The command above creates a swarm manager listening at <swarm_port>. The <mesos_master_ip> value points to where Mesos master lives in the cluster. Typically, this is localhost, a hostname, or an IP address. The <public_machine_ip> value is the IP address for Mesos master to talk to swarm manager. If mesos master and swarm manager are co-located on the same machine, you can use the 0.0.0.0 or localhost value.

If you use multiple Mesos masters:

$ docker run -d -p <swarm_port>:2375 -p 3375:3375 \
    swarm manage \
        -c mesos-experimental \
        --cluster-opt mesos.address=<public_machine_ip> \
        --cluster-opt mesos.port=3375 \
        zk://<mesos_masters_url>

Once the manager is running, check your configuration by running docker info as follows:

$ docker -H tcp://<swarm_ip>:<swarm_port> info
Containers: 0
Offers: 2
  Offer: 20150609-222929-1327399946-5050-14390-O6286
     └ cpus: 2
     └ mem: 1006 MiB
     └ disk: 34.37 GiB
     └ ports: 31000-32000
  Offer: 20150609-222929-1327399946-5050-14390-O6287
     └ cpus: 2
     └ mem: 1006 MiB
     └ disk: 34.37 GiB
     └ ports: 31000-32000

If you run into Abnormal executor termination error, you might want to run the swarm container with an additional environment variable: SWARM_MESOS_USER=root.