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 or SECONDARY
- $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 the WEIGHTED_ROUND_ROBIN or the WEIGHTED_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 **/
}