Project

General

Profile

Feature #55879

Updated by Ernesto Puerta almost 2 years ago

h3. What 

 Right now Cephadm performs "a naive static placement":https://docs.ceph.com/en/quincy/cephadm/services/#daemon-placement. For example, all services with count=1 placement strategy will be deployed deploy on the same node, generating a hot-spot. That forces the user to manually define hosts subsets or labels. 

 However, if a hash based static allocation is performed, this will ensure an almost even static allocation of services. However, if new nodes are added/removed, most services will be reallocated (this is a know issue of hashing). 

 To reduce move of services on host addition/removal, either "rendezvous":https://en.wikipedia.org/wiki/Rendezvous_hashing or "consistent hashing":https://en.wikipedia.org/wiki/Consistent_hashing should be used instead. 

 h3. Why 

 The Dashboard is moving to 1-click pre-creation of services for simplifying the user workflows ("Create first, modify later" approach). For that purpose, services should be created without (or with minimal) user interaction. However, given the naive service placement, this would mean that all the services would end up being allocated in the first host, generating a hot spot. 

 This is not a request to implement (yet) resource-aware placement/scheduling (this is still static placement), but it should definitely result in a more balanced resource allocation. 

 h3. How to: 

 As a proposal, what about a new @mode@ parameter in the placement spec? The current static placement could be named @static-naive@ and the new @static-balanced@?  

 <pre> 
 placement: 
   mode: static-balanced 
   count: 3 
 </pre> 

 According to "the current algorithm":https://docs.ceph.com/en/quincy/cephadm/services/#algorithm-description, the balanced placement should only happen when @number_of_candidate_hosts > count@. If not, it should basically fall back to a naive placement.

Back