Versions Compared

Key

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

...

Architecture and design description

1) Enable Internal LB on VPC tier

Introduce new Network Provider - InternalLBVm. This provider supports only 1 service  - LB

...

Add one more default Network offering having LB Service with Internal LB provider. Insert this offering as a part of the upgrade as well.

2) Allocate IP address from the

...

VPC Guest Network

Before creating the Internal Load Balancer, the Guest IP address has to be allocated from the App tier.

...

Api name

Request parameters

Response parameter

Available to regular user

allocateIpAddress

networkId (required, accepts only Id of VPC guest networks in 4.2)

  • id
  • ipAddress
  • networkId
  • account
  • domainId

yes

releaseIpAddress

id (required)

true/false

yes

listIpAddresses

  • id
  • ipAddress
  • networkId
  • account
  • domainId

List of Ip objects, each having:

  • id
  • ipAddress
  • networkId
  • account
  • domainId

yes

DB changes
TBD

3) Create Internal Load Balancer

...

using the Guest IP address allocated on step #2

Java code changes
  • Add new manager - InternalLoadBalancerManagerImpl (name is TBD). This class will manage all the internal lb rules in the system.
  • A new InternalLBVM should be spanned when the first LB rule for the IP address gets created. This code should be handled by InternalLBNetworkApplianceManager. The VM gets created with 1 interface having IP address of the Load Balancer assigned to it.
  • You can create as many Internal Load Balancers for the IP address as  you want. The Internal Load Balancer is uniquely identified by the IP address / Public port combination.
  • There is going to be 1 Internal LB vm spanned per IP address participating in the Internal Load Balancing.
Backend changes

For the backend engineer to complete. Have to put HA proxy management/configuration details here

...

API name

Request parameters

Response parameters

Available to regular user

createInternalLoadBalancer

  • ipAddressId(required)
  • name (required)
  • description (required)
  • algorithm (required)
  • publicPort (required)
  • privatePort (required)
  • networkId (optional)
  • id
  • name
  • description
  • algorithm
  • publicPort
  • privatePort
  • networkId
  • ipAddress child object

yes

deleteInternalLoadBalancer

id(required)

true/false

yes

listInternalLoadBalancers

  • id
  • ipAddressId
  • name
  • description
  • algorithm
  • publicPort
  • privatePort
  • networkId

list of load balancers, each having parameters:

  • id
  • name
  • description
  • algorithm
  • publicPort
  • privatePort
  • networkId
  • ipAddress child object

yes

DB changes

TBD

4) Assign VMs to the Internal Load Balancer.

Existing set of APIs will be used for adding/deleting VMs to/from Internal LB

  • assignToLoadBalancerRule
  • deleteFromLoadBalancerRule

...

Web Services API

...

assignToLoadBalancerRule/deleteFromLoadBalancerRule will accept internal load balancer id when passed with id request parameter.

Internal Load Balancing Vm life cycle

...