Nodes¶
Setup¶
In order to interact with this feature you must first retrieve a particular load balancer, like so:
$loadBalancer = $service->loadBalancer('{id}');
List Nodes¶
You can list the nodes attached to a load balancer:
$nodes = $loadBalancer->nodeList();
foreach ($nodes as $node) {
/** @var $node OpenCloud\LoadBalancer\Resource\Node **/
}
Add Nodes¶
You can attach additional nodes to a load balancer. Assume
$loadBalancer
already has two nodes attached to it - $serverOne
and $serverTwo
- and you want to attach a third node to it, say
$serverThree
, which provides a service on port 8080.
Important: Remember to call $loadBalancer->addNodes()
after all
the calls to $loadBalancer->addNode()
as shown below.
$address = $serverThree->addresses->private[0]->addr;
$loadBalancer->addNode($address, 8080);
$loadBalancer->addNodes();
The signature for addNodes
is as follows:
-
addNodes
($address, $port[, $condition = 'ENABLED'[, $type = null[, $weight = null]]])¶ Add a node to a load balancer
Parameters: - $address (string) – the IP address of the node
- $port (integer) – the port number of the node
- $condition (string) – the initial condition of the code. Defaults to
ENABLED
- $type (string) – either
PRIMARY
orSECONDARY
- $weight (integer) – the node weight (for round-robin algorithm)
The addNode
method accepts three more optional parameters, in
addition to the two shown above:
Modify Nodes¶
You can modify one or more of the following node attributes:
condition
: The condition of the load balancer:ENABLED
– Node is ready to receive traffic from the load balancer.DISABLED
– Node should not receive traffic from the load balancer.DRAINING
– Node should process any traffic it is already receiving but should not receive any further traffic from the load balancer.
type
: The type of the node:PRIMARY
– Nodes defined as PRIMARY are in the normal rotation to receive traffic from the load balancer.SECONDARY
– Nodes defined as SECONDARY are only in the rotation to receive traffic from the load balancer when all the primary nodes fail.
weight
: The weight, between 1 and 100, given to node when distributing traffic using either theWEIGHTED_ROUND_ROBIN
or theWEIGHTED_LEAST_CONNECTIONS
load balancing algorithm.
use OpenCloud\LoadBalancer\Enum\NodeCondition;
use OpenCloud\LoadBalancer\Enum\NodeType;
$node->update(array(
'condition' => NodeCondition::DISABLED,
'type' => NodeType::SECONDARY
));
Remove Nodes¶
There are two ways to remove a node. The first way is on an
OpenCloud\LoadBalancer\Resource\Node
instance, like so:
$node->delete();
The second is with an OpenCloud\LoadBalancer\Resource\LoadBalancer
instance and the node’s ID, like so:
$loadBalancer->removeNode('{nodeId}');
where ‘{nodeId}’ is the integer ID of the node itself - this is a required value.
View Node Service Events¶
You can view events associated with the activity between a node and a load balancer:
$nodeEvents = $loadBalancer->nodeEventList();
foreach ($nodeEvents as $nodeEvent) {
/** @var $nodeEvent OpenCloud\LoadBalancer\Resource\NodeEvent **/
}