Staggered (Variable batch) Updates (#37)

Updates can now be carried out in batch sizes of differing sizes. 

Changes:

* Adding an example of an update schema with a variable batch update.

* UI now displays the update strategy used by the update along with the max amount of parallel instances being updated at once, batch size, or variable batch update sizes.

Compatibility with 0.21.0:

* Converting old schema to new schema upon receiving it for compatibility with clients using the older schema to ease transition from 0.21.0 to 0.22.0.

* Back-fill will port old thrift schema to new update strategies.

*  batch size is set from update strategy in order to ensure backwards compatibility in case of rolling back to version 0.21.0.

Tests added:

* Added tests that use variable update to verify that it works as expected both in rolling_forward and rolling_backwards cases and various corner cases.

* Added a fail fast tests when combining update strategies and wait_for_batch_completion or batch size.

Future TODO:

* Added TODO to add verification to the number of instances running on end to end tests during batch updates.

* Remove deprecated Thrift fields once 0.22.0 is released.

30 files changed
tree: 1d0037bb29d07a87bac533447a5a3eb11b27ddc5
  1. 3rdparty/
  2. api/
  3. build-support/
  4. buildSrc/
  5. commons/
  6. config/
  7. docs/
  8. examples/
  9. gradle/
  10. src/
  11. ui/
  12. .auroraversion
  13. .bowerrc
  14. .gitattributes
  15. .gitignore
  16. .isort.cfg
  17. .reviewboardrc
  18. .travis.yml
  19. build.gradle
  20. CHANGELOG
  21. CONTRIBUTING.md
  22. gradlew
  23. KEYS
  24. LICENSE
  25. NOTICE
  26. pants
  27. pants.ini
  28. rbt
  29. README.md
  30. RELEASE-NOTES.md
  31. settings.gradle
  32. Vagrantfile
README.md

Aurora Logo

Apache Aurora lets you use an Apache Mesos cluster as a private cloud. It supports running long-running services, cron jobs, and ad-hoc jobs. Aurora aims to make it extremely quick and easy to take a built application and run it on machines in a cluster, with an emphasis on reliability. It provides basic operations to manage services running in a cluster, such as rolling upgrades.

To very concisely describe Aurora, it is like a distributed monit or distributed supervisord that you can instruct to do things like run 100 of these, somewhere, forever.

Features

Aurora is built for users and operators.

  • User-facing Features:

  • Under the hood, to help you rest easy:

    • Preemption: important services can ‘steal’ resources when they need it
    • High-availability: resists machine failures and disk failures
    • Scalable: proven to work in data center-sized clusters, with hundreds of users and thousands of jobs
    • Instrumented: a wealth of information makes it easy to monitor and debug

When and when not to use Aurora

Aurora can take over for most uses of software like monit and chef. Aurora can manage applications, while these tools are still useful to manage Aurora and Mesos themselves.

However, if you have very specific scheduling requirements, or are building a system that looks like a scheduler itself, you may want to explore developing your own framework.

Companies using Aurora

Are you using Aurora too? Let us know, or submit a patch to join the list!

Getting Help

If you have questions that aren‘t answered in our documentation, you can reach out to one of our mailing lists. We’re also often available in IRC: #aurora on irc.freenode.net.

You can also file bugs/issues in our JIRA queue.

License

Except as otherwise noted this software is licensed under the Apache License, Version 2.0

Licensed under the Apache License, Version 2.0 (the “License”); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.