You are viewing an older version of this section. View current production version.
Scale a Cluster
A cluster can be scaled up or down horizontally and vertically.
Horizontal Scaling
Scaling a cluster up or down horizontally means increasing or decreasing the number of nodes available. The number of child aggregator and leaf nodes can be adjusted independently.
To adjust the number (count) of aggregators, edit the spec.aggregatorSpec.count
field in memsql-cluster.yaml
file.
The value of this field is the sum of the number of Master Aggregators and child aggregators. There is only one Master Aggregator, so the number of child aggregators are always spec.aggregatorSpec.count - 1
. Only the Master Aggregator will be deployed when this field is set to 1
.
To adjust the number of leaf nodes, edit the spec.leafSpec.count
field in memsql-cluster.yaml
file. This value will be the number of leaf nodes in one availability group (AG).
Vertical Scaling
Scaling a cluster up or down vertically means increasing or decreasing the resource capacity in each node. The following resources can be scaled up or down.
CPU
The CPU can be scaled up or scaled down. CPU request and CPU limit are determined by the following formulas:
-
cpu_limit = spec.[aggregatorSpec/leafSpec].height * 8
- Where
spec.[aggregatorSpec/leafSpec].height
is a float that can be specified in thememsql-cluster.yaml
file. Refer to the memsql-cluster.yaml file for an explanation of “height.”
- Where
-
cpu_request = cpu_limit
Both the cpu_limit
and cpu_request
will be passed into the node pod’s spec.
spec.containers[“node”].resources.limits.cpu
spec.containers[“node”].resources.requests.cpu
Memory
Memory can be scaled up or scaled down. Memory request and memory limit are determined by the following formulas:
-
memory_limit = spec.[aggregatorSpec/leafSpec].height * 32
- Where
spec.[aggregatorSpec/leafSpec].height
is the same height as for CPU.
- Where
-
memory_request = memory_limit
Both memory_limit
and memory_request
will be passed into the node pod’s spec.
spec.containers[“node”].resources.limits.memory
spec.containers[“node”].resources.requests.memory
Storage
Storage can only be scaled up, and scaling up is only possible if the defined StorageClass has allowVolumeExpansion
set to true
.
The following fields in memsql-cluster.yaml
control the persisted volume size for each pod, which must be expressed as integer values:
spec.aggregatorSpec.storageGB
spec.leafSpec.storageGB
-
To scale up storage, ensure that there is available storage space and increase these values to the desired amount.
-
Apply the new values.
kubectl apply -f memsql-cluster.yaml