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
PRIMARYorSECONDARY - $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_ROBINor theWEIGHTED_LEAST_CONNECTIONSload 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 **/
}