| <!DOCTYPE html> |
| <html> |
| <head> |
| <meta charset="utf-8"> |
| <title>Apache Mesos - Weights</title> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| |
| <meta property="og:locale" content="en_US"/> |
| <meta property="og:type" content="website"/> |
| <meta property="og:title" content="Apache Mesos"/> |
| <meta property="og:site_name" content="Apache Mesos"/> |
| <meta property="og:url" content="http://mesos.apache.org/"/> |
| <meta property="og:image" content="http://mesos.apache.org/assets/img/mesos_logo_fb_preview.png"/> |
| <meta property="og:description" |
| content="Apache Mesos abstracts resources away from machines, |
| enabling fault-tolerant and elastic distributed systems |
| to easily be built and run effectively."/> |
| |
| <meta name="twitter:card" content="summary"/> |
| <meta name="twitter:site" content="@ApacheMesos"/> |
| <meta name="twitter:title" content="Apache Mesos"/> |
| <meta name="twitter:image" content="http://mesos.apache.org/assets/img/mesos_logo_fb_preview.png"/> |
| <meta name="twitter:description" |
| content="Apache Mesos abstracts resources away from machines, |
| enabling fault-tolerant and elastic distributed systems |
| to easily be built and run effectively."/> |
| |
| <link href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" rel="stylesheet"> |
| <link rel="alternate" type="application/atom+xml" title="Apache Mesos Blog" href="/blog/feed.xml"> |
| <link href="../../../assets/css/main.css" media="screen" rel="stylesheet" type="text/css" /> |
| |
| |
| |
| <!-- Google Analytics Magic --> |
| <script type="text/javascript"> |
| var _gaq = _gaq || []; |
| _gaq.push(['_setAccount', 'UA-20226872-1']); |
| _gaq.push(['_setDomainName', 'apache.org']); |
| _gaq.push(['_trackPageview']); |
| |
| (function() { |
| var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; |
| ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; |
| var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); |
| })(); |
| </script> |
| |
| </head> |
| <body> |
| <!-- magical breadcrumbs --> |
| <div class="topnav"> |
| <div class="container"> |
| <ul class="breadcrumb"> |
| <li> |
| <div class="dropdown"> |
| <a data-toggle="dropdown" href="#">Apache Software Foundation <span class="caret"></span></a> |
| <ul class="dropdown-menu" role="menu" aria-labelledby="dLabel"> |
| <li><a href="http://www.apache.org">Apache Homepage</a></li> |
| <li><a href="http://www.apache.org/licenses/">License</a></li> |
| <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li> |
| <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li> |
| <li><a href="http://www.apache.org/security/">Security</a></li> |
| </ul> |
| </div> |
| </li> |
| |
| <li><a href="http://mesos.apache.org">Apache Mesos</a></li> |
| |
| |
| <li><a href="/documentation |
| /">Documentation |
| </a></li> |
| |
| |
| </ul><!-- /.breadcrumb --> |
| </div><!-- /.container --> |
| </div><!-- /.topnav --> |
| |
| <!-- navbar excitement --> |
| <div class="navbar navbar-default navbar-static-top" role="navigation"> |
| <div class="container"> |
| <div class="navbar-header"> |
| <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#mesos-menu" aria-expanded="false"> |
| <span class="sr-only">Toggle navigation</span> |
| <span class="icon-bar"></span> |
| <span class="icon-bar"></span> |
| <span class="icon-bar"></span> |
| </button> |
| <a class="navbar-brand" href="/"><img src="/assets/img/mesos_logo.png" alt="Apache Mesos logo"/></a> |
| </div><!-- /.navbar-header --> |
| |
| <div class="navbar-collapse collapse" id="mesos-menu"> |
| <ul class="nav navbar-nav navbar-right"> |
| <li><a href="/gettingstarted/">Getting Started</a></li> |
| <li><a href="/blog/">Blog</a></li> |
| <li><a href="/documentation/latest/">Documentation</a></li> |
| <li><a href="/downloads/">Downloads</a></li> |
| <li><a href="/community/">Community</a></li> |
| </ul> |
| </div><!-- /#mesos-menu --> |
| </div><!-- /.container --> |
| </div><!-- /.navbar --> |
| |
| <div class="content"> |
| <div class="container"> |
| <div class="row-fluid"> |
| <div class="col-md-4"> |
| <h4>If you're new to Mesos</h4> |
| <p>See the <a href="/gettingstarted/">getting started</a> page for more |
| information about downloading, building, and deploying Mesos.</p> |
| |
| <h4>If you'd like to get involved or you're looking for support</h4> |
| <p>See our <a href="/community/">community</a> page for more details.</p> |
| </div> |
| <div class="col-md-8"> |
| <h1>Weights</h1> |
| |
| <p>In Mesos, <strong>weights</strong> can be used to control the relative share of cluster |
| resources that is offered to different <a href="/documentation/latest/./roles/">roles</a>.</p> |
| |
| <p>In Mesos 0.28 and earlier, weights can only be configured by specifying |
| the <code>--weights</code> command-line flag when starting the Mesos master. If a |
| role does not have a weight specified in the <code>--weights</code> flag, then the default |
| value (1.0) will be used. Weights cannot be changed without updating the flag |
| and restarting all Mesos masters.</p> |
| |
| <p>Mesos 1.0 contains a <a href="/documentation/latest/./endpoints/master/weights/">/weights</a> operator endpoint |
| that allows weights to be changed at runtime. The <code>--weights</code> command-line flag |
| is deprecated.</p> |
| |
| <h1>Operator HTTP Endpoint</h1> |
| |
| <p>The master <code>/weights</code> HTTP endpoint enables operators to configure weights. The |
| endpoint currently offers a REST-like interface and supports the following operations:</p> |
| |
| <ul> |
| <li><a href="#putRequest">Updating</a> weights with PUT.</li> |
| <li><a href="#getRequest">Querying</a> the currently set weights with GET.</li> |
| </ul> |
| |
| |
| <p>The endpoint can optionally use authentication and authorization. See the |
| <a href="/documentation/latest/./authentication/">authentication guide</a> for details.</p> |
| |
| <p><a name="putRequest"></a></p> |
| |
| <h2>Update</h2> |
| |
| <p>The operator can update the weights by sending an HTTP PUT request to the <code>/weights</code> |
| endpoint.</p> |
| |
| <p>An example request to the <code>/weights</code> endpoint could look like this (using the |
| JSON file below):</p> |
| |
| <pre><code>$ curl -d @weights.json -X PUT http://<master-ip>:<port>/weights |
| </code></pre> |
| |
| <p>For example, to set a weight of <code>2.0</code> for <code>role1</code> and set a weight of <code>3.5</code> |
| for <code>role2</code>, the operator can use the following <code>weights.json</code>:</p> |
| |
| <pre><code> [ |
| { |
| "role": "role1", |
| "weight": 2.0 |
| }, |
| { |
| "role": "role2", |
| "weight": 3.5 |
| } |
| ] |
| </code></pre> |
| |
| <p>If the master is configured with an explicit <a href="/documentation/latest/./roles/">role whitelist</a>, the |
| request is only valid if all specified roles exist in the role whitelist.</p> |
| |
| <p>Weights are now persisted in the registry on cluster bootstrap and after any |
| updates. Once the weights are persisted in the registry, any Mesos master that |
| subsequently starts with <code>--weights</code> still specified will emit a warning and use |
| the registry value instead.</p> |
| |
| <p>The operator will receive one of the following HTTP response codes:</p> |
| |
| <ul> |
| <li><code>200 OK</code>: Success (the update request was successful).</li> |
| <li><code>400 BadRequest</code>: Invalid arguments (e.g., invalid JSON, non-positive weights).</li> |
| <li><code>401 Unauthorized</code>: Unauthenticated request.</li> |
| <li><code>403 Forbidden</code>: Unauthorized request.</li> |
| </ul> |
| |
| |
| <p><a name="getRequest"></a></p> |
| |
| <h2>Query</h2> |
| |
| <p>The operator can query the configured weights by sending an HTTP GET request |
| to the <code>/weights</code> endpoint.</p> |
| |
| <pre><code>$ curl -X GET http://<master-ip>:<port>/weights |
| </code></pre> |
| |
| <p>The response message body includes a JSON representation of the current |
| configured weights, for example:</p> |
| |
| <pre><code> [ |
| { |
| "role": "role2", |
| "weight": 3.5 |
| }, |
| { |
| "role": "role1", |
| "weight": 2.0 |
| } |
| ] |
| </code></pre> |
| |
| <p>The operator will receive one of the following HTTP response codes:</p> |
| |
| <ul> |
| <li><code>200 OK</code>: Success.</li> |
| <li><code>401 Unauthorized</code>: Unauthenticated request.</li> |
| </ul> |
| |
| |
| </div> |
| </div> |
| |
| </div><!-- /.container --> |
| </div><!-- /.content --> |
| |
| <hr> |
| |
| |
| |
| <!-- footer --> |
| <div class="footer"> |
| <div class="container"> |
| <div class="col-md-4 social-blk"> |
| <span class="social"> |
| <a href="https://twitter.com/ApacheMesos" |
| class="twitter-follow-button" |
| data-show-count="false" data-size="large">Follow @ApacheMesos</a> |
| <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script> |
| <a href="https://twitter.com/intent/tweet?button_hashtag=mesos" |
| class="twitter-hashtag-button" |
| data-size="large" |
| data-related="ApacheMesos">Tweet #mesos</a> |
| <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script> |
| </span> |
| </div> |
| |
| <div class="col-md-8 trademark"> |
| <p>© 2012-2017 <a href="http://apache.org">The Apache Software Foundation</a>. |
| Apache Mesos, the Apache feather logo, and the Apache Mesos project logo are trademarks of The Apache Software Foundation. |
| <p> |
| </div> |
| </div><!-- /.container --> |
| </div><!-- /.footer --> |
| |
| <!-- JS --> |
| <script src="//code.jquery.com/jquery-1.11.0.min.js" type="text/javascript"></script> |
| <script src="//netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js" type="text/javascript"></script> |
| </body> |
| </html> |