Issue
Implement support for the hash-based routing in the cloud controller (see details in the RFC-0042 "Implementing a Hash-Based Load Balancing Algorithm for CF Routing").
Context
In the RFC-0042 "Implementing a Hash-Based Load Balancing Algorithm for CF Routing" it was decided to introduce hash-based routing as a load balancing algorithm to be used on a per-route basis. The implementation for the routing stack has been provided in the PR routing-release#519.
Cloud Controller provides an interface between CF users and the routing stack.
Expected results
- Cloud Controller accepts
hash as a valid property for loadbalancing per-route option at the relevant routes API endpoints and in the manifest.
- Cloud Controller accepts the new per-route options
hash_header and hash_balance at the relevant routes API endpoints.
- Cloud Controller accepts the new per-route options
hash_header and hash_balance in the manifest.
- Cloud Controller performs validations:
** The hash_header property is mandatory when load balancing is set to hash
** The hash_balance property is optional when load balancing is set to hash. Leaving out hash_balance or setting it explicitly to 0 is allowed and it means the load situation will not be considered
** For load balancing algorithms other than hash, the hash_balance and hash_header properties MUST not be set
- Cloud Controller tries to merge the per-route options object from the database (if exists) with the changes from the manifest. For example, the app admin wants to change only the
hash_balance for already existing route which uses hash load-balancing algorithm.
- Implement an operator-level feature flag to enable/disable the logic. Mark the feature as experimental, until everything is completed
Please raise your comments in this issue.
Issue
Implement support for the hash-based routing in the cloud controller (see details in the RFC-0042 "Implementing a Hash-Based Load Balancing Algorithm for CF Routing").
Context
In the RFC-0042 "Implementing a Hash-Based Load Balancing Algorithm for CF Routing" it was decided to introduce hash-based routing as a load balancing algorithm to be used on a per-route basis. The implementation for the routing stack has been provided in the PR routing-release#519.
Cloud Controller provides an interface between CF users and the routing stack.
Expected results
hashas a valid property forloadbalancingper-route option at the relevant routes API endpoints and in the manifest.hash_headerandhash_balanceat the relevant routes API endpoints.hash_headerandhash_balancein the manifest.** The
hash_headerproperty is mandatory when load balancing is set to hash** The
hash_balanceproperty is optional when load balancing is set to hash. Leaving out hash_balance or setting it explicitly to 0 is allowed and it means the load situation will not be considered** For load balancing algorithms other than
hash, thehash_balanceandhash_headerproperties MUST not be sethash_balancefor already existing route which uses hash load-balancing algorithm.Please raise your comments in this issue.