Enterprise Java

Scaling and Rebalancing a Couchbase Cluster using CLI

Couchbase provides high availability and disaster recovery in several ways:

This blog will show how to create a Couchbase cluster using Couchbase Command Line Interface (CLI). In addition, these steps can also be performed using the Couchbase REST API and the Couchbase Web Console.

couchbase-cluster-amazon-1024x265

Couchbase nodes in a cluster are homogeneous. Applications can write to any node and read from any node. There is no write-to-master and read-from-slave architecture that inherently gives you scalability problems. This allows the Couchbase cluster to truly scale horizontally to meet your growing application demands.

Creating a Couchbase cluster involves the following steps:

  • Provision Couchbase: Provision 1 or more Couchbase nodes, say on Amazon Web Services
  • Initialize master: Initialize any node to be the “master” of the cluster by calling cluster-init CLI command
  • Create cluster: For all other nodes, create a cluster by invoking the server-add CLI command
  • Rebalance cluster: Finally, rebalance the cluster by calling the rebalance CLI command

Provision Couchbase

Provision a Couchbase node on Amazon:

aws ec2 run-instances \
--image-id ami-db95ffbb \
--count 1 \
--instance-type m3.large \
--key-name my-couchbase-key \
--security-groups "Couchbase Server Community Edition-4-0-0-AutogenByAWSMP-"

Security group name is explained in Couchbase Cluster on Amazon using CLI.

Let’s call this node as “master”.

Initialize Couchbase “master”

Configure the “master” instance and initialize the cluster:

export COUCHBASE_CLI=/Users/arungupta/tools/Couchbase-Server-4.0.app/Contents/Resources/couchbase-core/bin/couchbase-cli
$COUCHBASE_CLI \
        cluster-init \
        -c <master-ip>:8091 \
        -u Administrator \
        -p password \
        --cluster-username Administrator \
        --cluster-password password \
        --cluster-index-ramsize=300 \
        --cluster-ramsize=300 \
        --services=data,index,query

Create another instance, lets call it “worker”. Note, this is not a master/slave architecture. Couchbase cluster is homogenous where any node in the cluster can be “master”.

Create Couchbase Cluster

Add this newly created “worker” instance to the cluster:

$COUCHBASE_CLI \
    server-add \
    --cluster=<master-ip>:8091 \
    --user Administrator \
    --password password \
    --server-add=<worker-ip> \
    --server-add-username=Administrator \
    --server-add-password=password

Typically, you’ll create and add multiple nodes to the cluster before rebalancing.

Rebalance Couchbase Cluster

Rebalance the cluster:

$COUCHBASE_CLI \
rebalance \
--cluster=<master-ip>:8091 \
--user Administrator \
--password password

Now, you can create as many instances and easy include them in the cluster.

Adding a single node and rebalancing the cluster can be easily done as a single step:

$COUCHBASE_CLI \
rebalance \
--cluster=<master-ip>:8091 \
--user Administrator \
--password password
--server-add=<worker-ip>
--server-add-username=Administrator
--server-add-password=password

Now, your cluster is accessible at http://<master-ip>:8091 or http://<worker-ip>:8091.

Further references …

Enjoy!

Arun Gupta

Arun is a technology enthusiast, avid runner, author of a best-selling book, globe trotter, a community guy, Java Champion, JavaOne Rockstar, JUG Leader, Minecraft Modder, Devoxx4Kids-er, and a Red Hatter.
Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

0 Comments
Inline Feedbacks
View all comments
Back to top button