jrasell / sherpa

Sherpa is a highly available, fast, and flexible horizontal job scaling for HashiCorp Nomad. It is capable of running in a number of different modes to suit different requirements, and can scale based on Nomad resource metrics or external sources.
Mozilla Public License 2.0
163 stars 8 forks source link

Do not scale a job group when it is in deployment. #56

Closed jrasell closed 4 years ago

jrasell commented 4 years ago

When a job group is going through a Nomad deployment, it is preferable not to trigger a scaling action. This is because with a basic deployment in Nomad, performing a scaling register will cancel the currently running deployment. This can therefore cause un-expected results.

In order to track deployments, a blocking query is used on the Nomad API. Updates are then processed and stored internally for quick lookup. This reduces the load on the Nomad API over calling it to check every job group when a scaling action is requested. It does add complexity.

The deployment state is not written to the storage backend, nor is it leader protected. Nomad itself is the state store for this info and new servers can quickly and easily update their internal state to ensure consistent results. This reduces load on the store and means faster lookup times.

Closes #44