This seems quite cool. For very large clusters, I'd also consider looking into Optaplanner, which exposes a variety of probabilistic metaheuristics for balancing. There's a "cloud balancing" example in the documentation which is fairly close in terms of the use case: https://docs.jboss.org/drools/release/6.0.0.Beta1/optaplanne...
Oh nice! That looks close to what we were trying to do with this plugin. I'm not sure it would've worked within the constraints of the Elasticsearch environment, but the additional confidence of finding a solution that optaplanner provides by using multiple algorithms to solve the bin-packing problem (NP-Hard) looks quite promising.