----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/9165/#review17734 -----------------------------------------------------------
server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java <https://reviews.apache.org/r/9165/#comment37650> In AWS, health checks are collected for every LBrule. In upgrade case the adapter could report status of service vms as seen by the appliance(there would have been default monitors anyway) for existing config. If you don't want to do this now you might want to file an enhancement bug. If you plan to do this right away, the logic currently adopted by collecting stats per LB Rule wont scale. I will advice to collect per device/appliance. ExternalUsage (Stats) collection already works this way. server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java <https://reviews.apache.org/r/9165/#comment37648> Are you using provider? server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java <https://reviews.apache.org/r/9165/#comment37651> Extra loop! Can merge loop at 788 with this. server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java <https://reviews.apache.org/r/9165/#comment37649> Once the operation is done you need to break. Check other places were operations are applied on all providers. For eg. Line no. 594. - Vijay Venkatachalam On March 12, 2013, 7:42 a.m., Rajesh Battala wrote: > > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > https://reviews.apache.org/r/9165/ > ----------------------------------------------------------- > > (Updated March 12, 2013, 7:42 a.m.) > > > Review request for cloudstack and Vijay Venkatachalam. > > > Description > ------- > > Code Review for AWS Style Health Check Feature : > Added API commands : > 1. createLBHealthCheck > 2. deleteLBHealthCheck > 3. listLBHealthCheck > > load_balancer_healthcheck_policies table will hold the data for healthcheck > polices. > > commands will take the lbrule id as mandatory param and execute the action. > 1. createLBHealthCheck : > ======================== > LB ruleid is the mandatory param to the api. Remaining params (pingpath, > responstime, request Healthcheck_interval, Healthy_thresshold, > Unhealth_thresshold) have default values. if not specified in the command. > It will create monitor (tcp/http) depending upon the LB protocol. > after creating the LB Monitor, it will bind the monitor to all the services > present in the LB rule. > NetScaler will take care of monitoring according to the monitor params. > Monitor name will be (Cloud-Hc-<LB IP>-<port>) > > Initially only one monitor is supported for an LB rule. > if createLBHealthCheck returns an error, it will cleanup the entry created > in db. > > 2. deleteLBHealthCheck: > ======================== > LB ruleid is the mandatory param to the api. > the command will first unbind all the services attached to it and then the > monitor will be deleted. > DB entry in load_balancer_healthcheck_policies will be deleted. > > 3. listLBHealthChecks: > ====================== > LB ruleid is the mandatory param to the api. > this command will list LB HealthChecks created on the LB rule. > > LBHealthCheckManager: > ===================== > A new field is introduce in the table load_balancer_vm_map (state of string > type) > > The task of the LBHealthCheckManager is at every period of time, it will > fetch the service status of LB rules and update them in the > load_balancer_vm_map. > The time interval fo the LBHealthManager can be configured from Global > Settings(healthcheck.update.interval). default value is 600 sec. > possible values UP, DOWN, UNKNOWN, BUSY, OUT OF SERVICE, GOING OUT OF > SERVICE, DOWN WHEN GOING OUT OF SERVICE > > > This addresses bug https://issues.apache.org/jira/browse/CLOUDSTACK-664. > > > Diffs > ----- > > api/src/com/cloud/agent/api/routing/HealthCheckLBConfigAnswer.java > PRE-CREATION > api/src/com/cloud/agent/api/routing/HealthCheckLBConfigCommand.java > PRE-CREATION > api/src/com/cloud/agent/api/to/LoadBalancerTO.java 2d166ea > api/src/com/cloud/event/EventTypes.java 0087edc > api/src/com/cloud/network/Network.java efed5cd > api/src/com/cloud/network/element/LoadBalancingServiceProvider.java 879ea0e > api/src/com/cloud/network/lb/LoadBalancingRule.java fb1d988 > api/src/com/cloud/network/lb/LoadBalancingRulesService.java 3743aae > api/src/com/cloud/network/rules/HealthCheckPolicy.java PRE-CREATION > api/src/org/apache/cloudstack/api/ApiConstants.java b40b26c > api/src/org/apache/cloudstack/api/ResponseGenerator.java a602514 > > api/src/org/apache/cloudstack/api/command/user/loadbalancer/CreateLBHealthCheckPolicyCmd.java > PRE-CREATION > > api/src/org/apache/cloudstack/api/command/user/loadbalancer/DeleteLBHealthCheckPolicyCmd.java > PRE-CREATION > > api/src/org/apache/cloudstack/api/command/user/loadbalancer/ListLBHealthCheckPoliciesCmd.java > PRE-CREATION > api/src/org/apache/cloudstack/api/response/LBHealthCheckPolicyResponse.java > PRE-CREATION > api/src/org/apache/cloudstack/api/response/LBHealthCheckResponse.java > PRE-CREATION > client/tomcatconf/commands.properties.in 5018236 > client/tomcatconf/components.xml.in 1d3faf3 > > plugins/network-elements/elastic-loadbalancer/src/com/cloud/network/element/ElasticLoadBalancerElement.java > abb36c3 > > plugins/network-elements/elastic-loadbalancer/src/com/cloud/network/lb/ElasticLoadBalancerManagerImpl.java > 81039d1 > > plugins/network-elements/f5/src/com/cloud/network/element/F5ExternalLoadBalancerElement.java > 94c098e > > plugins/network-elements/netscaler/src/com/cloud/network/element/NetscalerElement.java > 8f902df > > plugins/network-elements/netscaler/src/com/cloud/network/resource/NetscalerResource.java > abea464 > server/src/com/cloud/api/ApiResponseHelper.java fbfc955 > server/src/com/cloud/configuration/Config.java 64465a2 > server/src/com/cloud/network/ExternalLoadBalancerDeviceManager.java d979f07 > server/src/com/cloud/network/ExternalLoadBalancerDeviceManagerImpl.java > d7b6d78 > server/src/com/cloud/network/LBHealthCheckPolicyVO.java PRE-CREATION > server/src/com/cloud/network/NetworkManagerImpl.java ba5ab5d > server/src/com/cloud/network/dao/LBHealthCheckPolicyDao.java PRE-CREATION > server/src/com/cloud/network/dao/LBHealthCheckPolicyDaoImpl.java > PRE-CREATION > server/src/com/cloud/network/dao/LoadBalancerVMMapVO.java 8856993 > server/src/com/cloud/network/element/VirtualRouterElement.java 500d0b6 > server/src/com/cloud/network/lb/LBHealthCheckManager.java PRE-CREATION > server/src/com/cloud/network/lb/LBHealthCheckManagerImpl.java PRE-CREATION > server/src/com/cloud/network/lb/LoadBalancingRulesManager.java 9d7d22f > server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java 531a428 > server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java > 3cbd51d > server/src/com/cloud/server/ManagementServerImpl.java d70c45f > setup/db/db/schema-410to420.sql ca15bda > > Diff: https://reviews.apache.org/r/9165/diff/ > > > Testing > ------- > > Testing Done: > ============= > > 1. create LB rule of TCP protocol and assing instances, create lb healthcheck > on lb rule. A TCP monitor is created and it will binded to all the services. > 2. create LB rule of HTTP protocol and assing instances, create lb > healthcheck on lb rule. HTTP monitor is created and it will binded to all the > services. > 3. create LB rule of HTTP protocol and assing instances, create lb > healthcheck on lb rule with pingpath and other params, HTTP monitor is > created and it will binded to all the services and its properties pingpath > value will be present. > 4.for an existing LB with an Monitor, add a new service to LB, monitor will > be binded to the newly added service. > 5.for an existing LB with an Monitor, delete a service from LB, monitor will > be unbinded and service will be removed. > 6.delete an monitor for LB rule, all the service binded to the monitor will > be unbinded and monitor will get removed. > 7.delete LB rule, lb vserver will be deleted and the monitor will be deleted. > 8. list the LB rules giving the lb rule id, healtcheckpolicy created on the > LB rule will be returned. if not it will return empty list > 9.Modify the healthcheck.update.interval to 1 min, at every one minute > LBHealthCheckManager will be updating the service state from the Netscaler. > > > Thanks, > > Rajesh Battala > >