The Jira issue associated with this design spec
https://issues.apache.org/jira/browse/CLOUDSTACK-664
https://issues.apache.org/jira/browse/CLOUDSTACK-665![]()
What branch is this work being done in Master
Currently users can create LB rule and configure stickness policy, Algorithm, Autoscale etc.This feature will enable the users to configure Health check on the LB rule.
1. To ensure if the backend services are healthy
2. Ensure the loadbalancing rule dosen't send any furthur requests to an unhealthy backend service(s).
Benefit of configuring Health Checks on LB Rule:
With the ability to perform health checks on the right set of parameters, the load balancer can service all of the requests by forwarding requests to healthy VM's in case of a VM failure .The load balancer would exactly know, based on the health check configured, that the service is unavailable as supposed to the VM being unavailable.
Dynamic addition / removal of VMs: Once the health checks are configured, the load balancer can automatically remove a VM from load balancer pool if the health checks fail. Also, once the health checks are successful again, the load balancer can add the VMs back to the pool.
This is functional specifications for the feature https://issues.apache.org/jira/browse/CLOUDSTACK-443![]()
f
State the purpose of the document; something like: this is functional specificationS of feature "..." which has Jira ID CS-xyzw
Configuring health checks in Aws http://docs.amazonwebservices.com/ElasticLoadBalancing/latest/DeveloperGuide/ConfigureHealthCheck.html
API to configure health check http://docs.amazonwebservices.com/ElasticLoadBalancing/latest/APIReference/API_ConfigureHealthCheck.html
Author |
Description |
Date |
|---|---|---|
Rajesh Battala |
Initial Revision |
03/01/2013 |
This feature will enable the users to configure health checks on the LB rule.
The initial integration of this feature is based on the following limitations and assumptions:
The HealthCheck manager process logs all the success of updating status of services to Cloud DB operations to DEBUG, all exceptions/failures to ERROR. It also provides DEBUG logging of connection parameters, and LB rule/ health check key information for all HealthCheck manager operations in DEBUG.
In addition to logs, users can verify the healthchecks configured on the LB rules in NetScaler.
A new configuration parameter will be added "lbrule.healthcheck.time.interval" default to 60sec. This parameter value is used to update the health check status from NS to Cloud DB
This enhancement has no impact on branding.
No upgrade scenarios need to be handled, as this is a new functionality.
Users should be able to define health check policies as part of configuring the load balancer rules
User should be able to delete/modify health check policies as part of configuring the load balancer rules
Refer to AWS Health Check Configuration details for additional information and the screenshot below.
Service : An App running in a VM, which is assigned to a LB rule.
Response_Time : Time to wait when receiving a response from the health check (2sec - 60 sec), Default value is 5sec
Healthcheck_interval : Amount of time between health checks (0.1 min - 5min). Default value is 5sec
UnHealthy_thresshold : Number of consecutive health check failures before declaring an instance unhealthy.Default value is 10
Healthy_thresshold : Number of consecutive health check success before declaring an instance healthy. Default value is 2
Using NS API/ haproxy commands to create/delete/modify the health check monitor
By using the createLBHealthCheck api command we can create the healtcheck monitor for the services in the Rule.When new VM’s got assigned to the rule, monitor should be added to these services also.
This is a batch operation. To modify the health check, first call deleteLBHealthCheck which will delete the already existing health check and call createLBHealthCheck with the new configuration parameters.
Note: if the new configuration parameters were not able to be applied, then it won’t restore the old health check.
To delete the healthcheck/monitor, call the deleteLBHealthCheck api which will delete health check from the LB rule.
Using the listLBHealthCheck, health check created on the LB rule will be retrieved.
Table name : loadbalancer_healthchecks
Id |
Bigint(20) |
Primary Key |
Auto_increment |
uuid |
varchar |
Not null |
|
Load_balancer_id |
BigInt |
Fk to Load_balancer_rule(id) |
|
Response_time |
Int |
Default (5 sec) |
|
Healthcheck_interval |
Double |
Default (5 sec) |
|
Healthy_thresshold |
Int |
Default (2) |
|
Unhealth_thresshold |
Int |
Default(10) |
The following APIs are supported in this feature.
lbmonitor
service
service_lbmonitor_binding
lbmonitor mymon = new lbmonitor();
mymon.set_monitorname("cshttpmon");
mymon.set_type(lbmonitor.typeEnum.HTTP);
lbmonitor.add(ns_session, mymon);
TBD

Appendix A:
Appendix B: