incubator-cloudstack-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Rajesh Battala" <rajesh.batt...@citrix.com>
Subject Re: Review Request: AWS Style HealthCheck feature BugID : 664
Date Fri, 15 Mar 2013 10:54:24 GMT

-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/9165/
-----------------------------------------------------------

(Updated March 15, 2013, 10:54 a.m.)


Review request for cloudstack, Sateesh Chodapuneedi and Vijay Venkatachalam.


Changes
-------

re-based with latest master


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 (updated)
-----

  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 
  plugins/network-elements/dns-notifier/resources/components-example.xml 36441bd 
  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 c1c735a

  plugins/network-elements/netscaler/src/com/cloud/network/resource/NetscalerResource.java
abea464 
  server/src/com/cloud/api/ApiResponseHelper.java 2546f29 
  server/src/com/cloud/configuration/Config.java d01ea5b 
  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 3220c91 
  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 ce65586 
  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


Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message