@@ -12,9 +12,14 @@ of your app. For example, a command such as ``deis scale web=3`` tells the
1212scheduler to run three containers from the Docker image for your app.
1313
1414Deis defaults to using the `Fleet Scheduler `_. A tech preview of the `Swarm Scheduler `_
15- is available for testing. Work is ongoing on `Kubernetes `_ and `Mesos `_-based
16- schedulers with the intent to test those alternatives in future releases of Deis.
15+ and `Mesos with Marathon framework `_ is available for testing. Work is ongoing on `Kubernetes `_-based
16+ scheduler with the intent to test those alternatives in future releases of Deis. Keep watching `dynamic metadata fleet PR 1077 `_
17+ for support of runtime changes to metadata.
1718
19+ .. note ::
20+
21+ If you are using a scheduler other than fleet app containers will not be rescheduled if deis-registry is unavailable.
22+ For more information look at `deis-registry issue 3619 `.
1823
1924Settings set by scheduler
2025-------------------------
@@ -23,12 +28,13 @@ The following etcd keys are set by the scheduler module of the controller compon
2328
2429Some keys will exist only if a particular ``schedulerModule `` backend is enabled.
2530
26- ============================= ================================================
27- setting description
28- ============================= ================================================
29- /deis/scheduler/swarm/host the swarm manager's host IP address
30- /deis/scheduler/swarm/node used to identify other nodes in the cluster
31- ============================= ================================================
31+ =================================== ======================================================
32+ setting description
33+ =================================== ======================================================
34+ /deis/scheduler/swarm/host the swarm manager's host IP address
35+ /deis/scheduler/swarm/node used to identify other nodes in the cluster
36+ /deis/scheduler/mesos/marathon used to identify Marathon framework's host IP address
37+ =================================== ======================================================
3238
3339
3440Settings used by scheduler
@@ -39,8 +45,8 @@ The following etcd keys are used by the scheduler module of the controller compo
3945==================================== ===============================================
4046setting description
4147==================================== ===============================================
42- /deis/controller/schedulerModule scheduler backend, either "fleet" or "swarm"
43- (default: "fleet")
48+ /deis/controller/schedulerModule scheduler backend, either "fleet" or "swarm" or
49+ mesos_marathon (default: "fleet")
4450==================================== ===============================================
4551
4652
@@ -97,10 +103,7 @@ to `enable the remote API`_.
97103 **Known Issues **
98104
99105 - It is not yet possible to change the default affinity filter.
100- - If swarm can't create all the containers requested, Deis returns an error
101- and leaves some containers in the "created" state. Until this behavior is fixed,
102- be mindful of resource limitations on your cluster.
103- - App containers will not be rescheduled if deis-registry is unavailable.
106+ - If swarm can't create all the containers requested during scale, deis rolls back the scale operation.
104107
105108To test the Swarm Scheduler backend, first install and start the swarm components:
106109
@@ -132,9 +135,68 @@ component, or spy on Docker events directly on the swarm-manager machine:
132135 2015-04-30T17:31 61e59c: (from 172.17.8.100:5000/hungry-variable:v5 node:deis-02) start
133136
134137
138+ Mesos with Marathon framework
139+ -----------------------------
140+
141+ .. important ::
142+
143+ The Mesos with Marathon framework Scheduler is a technology preview and is not recommended for
144+ production use.
145+
146+ `Mesos `_ is a distributed system kernel:
147+
148+ Mesos provides APIs for resource management and scheduling. A framework interacts with Mesos master
149+ and schedules and task. A Zookeeper cluster elects Mesos master node. Mesos slaves are installed on
150+ each node and they communicate to master with available resources.
151+
152+ `Marathon `_ is a Mesos _ framework for long running applications:
153+
154+ Marathon provides a Paas like feel for long running applications and features like high-availablilty, host constraints,
155+ service discovery, load balancing and REST API to control your Apps.
156+
157+ Deis uses the Marathon framework to schedule containers. Since Marathon is a framework for long-running
158+ jobs, Deis uses the `Fleet Scheduler `_ to run batch processing jobs. ``deisctl `` installs a standalone Mesos
159+ cluster. To install an HA Mesos cluster, follow the directions at `aledbf-mesos `_, and set the etcd key
160+ ``/deis/scheduler/mesos/marathon `` to any Marathon node IP address. If a request is received by a regular
161+ Marathon node, it is proxied to the master Marathon node.
162+
163+ To test the Marathon Scheduler backend, first install and start the mesos components:
164+
165+ .. code-block :: console
166+
167+ $ deisctl install mesos && deisctl start mesos
168+
169+ Then set the controller's ``schedulerModule `` to "mesos_marathon":
170+
171+ .. code-block :: console
172+
173+ $ deisctl config controller set schedulerModule=mesos_marathon
174+
175+ The Marathon framework is now active. Commands such as ``deis destroy `` or
176+ ``deis scale web=9 `` will use `Marathon `_ to manage app containers.
177+
178+ Deis starts Marathon on port 8180. You can manage apps through the Marathon UI, which is accessible at http://<Marathon-node-IP>:8180
179+
180+ .. note ::
181+
182+ **Known Issues **
183+
184+ - deisctl installs a standalone mesos cluster as fleet doesn't support runtime change to metadata.
185+ You can specify this in cloud-init during the deployment of the node. keep watching `dynamic metadata fleet PR 1077 `_.
186+ - If you want to access Marathon UI, you'll have to expose port 8180 in the security group settings.
187+ This is blocked off by default for security purposes.
188+ - Deis does not yet use Marathon's docker container API to create containers.
189+ - CPU shares are integers representing the number of CPUs. Memory limits should be specified in MB.
190+
191+
135192.. _Kubernetes : http://kubernetes.io/
136- .. _Mesos : http://mesos.apache.org/
193+ .. _Mesos : http://mesos.apache.org
194+ .. _Marathon : https://github.com/mesosphere/marathon
137195.. _fleet : https://github.com/coreos/fleet#fleet---a-distributed-init-system
138196.. _swarm : https://github.com/docker/swarm#swarm-a-docker-native-clustering-system
139197.. _`soft affinity` : https://docs.docker.com/swarm/scheduler/filter/#soft-affinitiesconstraints
140198.. _`enable the remote API` : https://coreos.com/docs/launching-containers/building/customizing-docker/
199+ .. _`deis-kubernetes issue 3850` : https://github.com/deis/deis/issues/3850
200+ .. _`dynamic metadata fleet PR 1077` : https://github.com/coreos/fleet/pull/1077
201+ .. _`aledbf-mesos` : https://github.com/aledbf/coreos-mesos-zookeeper
202+ .. _`deis-registry issue 3619` : https://github.com/deis/deis/issues/3619
0 commit comments