blob: 6047d3f75b0312a3a3004b3e3ca413d32c779de8 [file] [log] [blame]
Jamie Hannaford186d4e22014-10-31 12:26:11 +01001/*
Jamie Hannafordb2007ee2014-11-03 16:24:43 +01002Package lbs provides information and interaction with the Load Balancer API
3resource for the Rackspace Cloud Load Balancer service.
4
Jamie Hannaford186d4e22014-10-31 12:26:11 +01005A load balancer is a logical device which belongs to a cloud account. It is
6used to distribute workloads between multiple back-end systems or services,
Jamie Hannafordb2007ee2014-11-03 16:24:43 +01007based on the criteria defined as part of its configuration. This configuration
8is defined using the Create operation, and can be updated with Update.
9
10To conserve IPv4 address space, it is highly recommended that you share Virtual
11IPs between load balancers. If you have at least one load balancer, you may
12create subsequent ones that share a single virtual IPv4 and/or a single IPv6 by
13passing in a virtual IP ID to the Update operation (instead of a type). This
14feature is also highly desirable if you wish to load balance both an unsecured
15and secure protocol using one IP or DNS name. In order to share a virtual IP,
16each Load Balancer must utilize a unique port.
17
18All load balancers have a Status attribute that shows the current configuration
19status of the device. This status is immutable by the caller and is updated
20automatically based on state changes within the service. When a load balancer
21is first created, it is placed into a BUILD state while the configuration is
22being generated and applied based on the request. Once the configuration is
23applied and finalized, it is in an ACTIVE status. In the event of a
24configuration change or update, the status of the load balancer changes to
25PENDING_UPDATE to signify configuration changes are in progress but are not yet
26been finalized. Load balancers in a SUSPENDED status are configured to reject
27traffic and does not forward requests to back-end nodes.
28
29A HTTP load balancer has the X-Forwarded-For (XFF) HTTP header set by default.
30This header contains the originating IP address of a client connecting to a web
31server through an HTTP proxy or load balancer, which many web applications are
32already designed to use when determining the source address for a request.
33
34It also includes the X-Forwarded-Proto (XFP) HTTP header, which has been added
35for identifying the originating protocol of an HTTP request as "http" or
36"https" depending on what protocol the client requested. This is useful when
37using SSL termination.
38
39Finally, it also includes the X-Forwarded-Port HTTP header, which has been
40added for being able to generate secure URLs containing the specified port.
41This header, along with the X-Forwarded-For header, provide the needed
42information to the underlying application servers.
Jamie Hannaford186d4e22014-10-31 12:26:11 +010043*/
Jamie Hannafordfba65af2014-11-03 10:32:37 +010044package lbs