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:

1
2
3
4
5
6
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:

01
02
03
04
05
06
07
08
09
10
11
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:

1
2
3
4
5
6
7
8
$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:

1
2
3
4
5
$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:

1
2
3
4
5
6
7
8
$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!

Do you want to know how to develop your skillset to become a Java Rockstar?
Subscribe to our newsletter to start Rocking right now!
To get you started we give you our best selling eBooks for FREE!
1. JPA Mini Book
2. JVM Troubleshooting Guide
3. JUnit Tutorial for Unit Testing
4. Java Annotations Tutorial
5. Java Interview Questions
6. Spring Interview Questions
7. Android UI Design
and many more ....
I agree to the Terms and Privacy Policy

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
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Back to top button