Usually when we tag/untag servers to a tenant it gets tedious to rebalance each table under that tenant. This operation becomes impossible to handle if the tenant has large number of tables. The tenant rebalance operation allows us to do server rebalance on all the tables on a tenant and track the individual table rebalance progress with minimal operational overhead.
Basically all the factors which require server rebalance apply here. The only difference with this operation is it can address those changes over multiple tables with a single operation.
The tenant rebalance operation just provides a tunable orchestration of server rebalancing on multiple tables. Under the hood it leverages the existing server rebalance operation to perform the actual rebalance on each table. It provides the user a way to perform server rebalance on tables selectively in series and parallel. This is achieved using additional tuning parameters on top of usual rebalance parameters.
The rebalance API for tenant will take the same set of parameters as the server rebalance API. In addition to that the tenant rebalance API will also take the below parameters
Request param | Default vale | Description |
---|---|---|
tenantName | null | The tenant to rebalance |
degreeOfParallelism | 1 | Number of tables to rebalance in parallel at a time |
parallelWhitelist | {} | Set of tables that can be rebalanced in parallel with other tables in this set. If the set is empty and degree of parallelism is > 1 then all the tables under the tenant are considered as whitelist |
parallelBlacklist | {} | Set of tables which should not be rebalanced in parallel with other tables in the tenant. This list takes priority over whitelist tables, i.e. if a table is present in both the lists its considered as blacklisted and hence not rebalanced in parallel |
verboseResult | false | When set to true it will return all the server rebalance output for each table. When set to false it will only return the server rebalance job tracking id and status |
To run a tenant rebalance, use the following API. POST /tenants/{tenantName}/rebalance
Sample payload:
Sample response:
On tenant rebalance job submission it will return the job id for the tenant rebalance job to track the tenant rebalance progress along with all the individual table server rebalance job ids to track individual table rebalance progress.
To track the tenant rebalance progress use the below API GET /tenants/rebalanceStatus/{jobId}
Sample response:
Use the same API mentioned in server rebalance status tracking