Through multi-dimensional scaling, clusters can be scaled by adding and removing service instances, increasing and decreasing the size of service instances, and adding and removing whole services
Couchbase clusters are made up of multiple independent services. This means that the capacity of a cluster is measured by the individual capacities of each of the services that run on the cluster. Therefore, scaling a cluster means scaling the individual capacities of each of the cluster’s constituent services.
Services are set up on a per-node basis, with each node running one instance of a service. This means that the capacity of an individual service is determined by multiplying the following factors:
The number of instances (nodes) that make up a service
The size of those instances (VM instance type and storage)
Each of these factors can be independently scaled. Adding additional instances to a service is known as scaling out. Increasing the size of a service’s instances is known as scaling up. Likewise, removing instances is known as scaling in, and reducing the size of instances is known as scaling down. These scaling techniques, when taken together with the ability to add and remove whole services within a cluster, enable multi-dimensional scaling.
The procedures on this page cover each dimension of multi-dimensional scaling:
Adding and removing service instances
Increasing and decreasing the size of service instances
Adding and removing whole services
All types of cluster scaling result in the addition or removal of nodes from a cluster. Even changing the size of service instances results in new nodes being added to the cluster, since the underlying virtual machines are swapped out for new ones. After performing any of these procedures, the cluster will rebalance to accommodate the new number of active member nodes.
Cluster rebalance is a process that is required for redistributing data and indexes among available nodes whenever nodes have been added or removed. During rebalance, the cluster continues to service requests for data while the cluster map is correspondingly updated and distributed to clients.
Couchbase Server is designed to maintain consistent availability and performance during rebalance. However, you should consult the rebalance documentation to familiarize yourself with how each service behaves during a rebalance, so you can asses the impacts of this process on your deployments accordingly.