Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

In order to have Internal Load Balancing support on VPC tier, the tier has to be created from the network offering with:

  • Service=LB, Provider=InternalLBVm.InternalLbVm, LB service capability "lbSchemes" with the value "Internal"

or

  • Service=LB, Provider=Netscaler, LB service capability "scheme=Internal"."lbSchemes" with the value Internal".Before creating the network, enable InternalLbVm element/provider on the physical network using configureInternalLoadBalancerElement and updateNetworkServiceProvider APIs. The cloudStack UI will enable the element/provider automatically as a part of physical network creation, so these instructions are only for the case when APIs are called directly, omitting the UI. 
Java code changes
  • Network.java interface - add new capability for the LB service - supportedLbSchemeslbSchemes. It will have 2 values - Internal and Public.
  • Existing Netscaler Service Provider will support both values - Internal and Public - for the supportedLbSchemes capability as it can act as a provider for Public and Internal Load Balancing.
  • Introduce new Network Element - InternalLBVm. This provider supports only 1 service - LB, and its supportedLbMode capability can be Internal only. We need a new network element because Internal LB Vm will have different number of nics from the regular CS system vm (Guest and Control only); and its lifecycle will be different as well. The Vm will be started not when network gets implemented, but when the new IP gets acquired from the Guest Network for the Load Balancer rule.
  • Introduce new classes InternalLBNetworkApplianceManager/InternalLBNetworkApplianceService/InternalLBNetworkApplianceManagerImpl - for managing Internal Load Balancer vms. 

...

TBD. We might need a separate template/set of scripts for Internal LB VM, or we can re-use the existing VR template.

Web Services API
  • Changes to existing Apis: list/createNetworkOffering APIs will return new

...

  • par

    Api Name

    Request Parameters

    Response parameters

    Available to regular user

     

     

     

    no

     

     

     

    no

     

     

     

    no

  • ameters in the response -

...

  • internal_lb

...

  •  and public_lb:. The

...

  • parameters' type is

...

  • boolean.
  • New APIs:
DB changes

...

  • New fields to network_offerings table - "internal_lb" and "public_lb". Not null, default value is 0.
  • Changes to unique key in ntwk_service_map table. The unique key is service/provider/network_id instead of service/network_id. Now network have multiple providers for the same service - LB - as in the future we might support public/internal LB service handled by the separate providers on the same network

2) Create Load Balancer Rule 

Java code changes

  • Add new manager - InternalLoadBalancerManagerImpl (name is TBD) ApplicationLoadBalancerManagerImpl. This class will be responsible for managing Internal LB rules in this release. In the future it might support public lb rules as well.
  • The LBRule can be created with or without specifying the source IP address. If no source IP address is specified, the new one will get acquired automatically from the sourceIpNetworkId specified in createLoadBalancer command

...

  • A new InternalLBVM should be spanned as soon as new source IP address is acquired by the LB rule. This code should be handled by InternalLBNetworkApplianceManagerInternalLoadBalancerManager. See more details on the VM in "InternalLBVM management and life cycle" section.
  • There is going to be 1 Internal LB vm spanned per guest IP address participating in the Internal Load Balancing. If more rules are added for the same IP, they will be managed on the same InternalLBVM.

...

1) The InternalLBVM will be created with 2 interfaces: eth0 - linkLocal (private in VMWare case), eth1 - the IP address of the LB rule.

32) InternalLBVM will be managed by InternalLBNetworkApplianceManagerInternalLoadBalancerManager

23) InternalLBVM life cycle:

  • Create: InternalLBVM gets created when the first Load Balancing Rule is created for the IP address
  • Destroy: InternalLBVM gets destroyed when the last Load Balancer is removed for the IP address
  • Reboot: InternalLBVM can be rebooted as a regular system vm using RebootSystemVm API.
  • List: InternalLBVM can be listed with ListSystemVMs API

4) To stop/start/list internal lb vm, use existing stop/start/listRouters command.

Limitations

  • Internal and Public Lb are mutually exclusive on a network/tier. If the tier has LB on the public side, then it can't have the Internal LB
  • Supported just on VPC networks in 4.2 release.

...