Create a Redis cluster
From Redis 3.x, it is possible to create a cluster of Redis nodes in primary-replica model. The minimum configuration required is a 6-node cluster with 3 primary and 3 replicas. This section will introduce you to creating a simple redis cluster. For further information, please refer to http://redis.io/topics/cluster-tutorial and http://redis.io/topics/cluster-spec.
Pre-requisites
Ruby must be installed with the Redis gem. Install these components with the commands below:
$ sudo apt-get install ruby
$ sudo gem install redis
Manual approach
Use the following template and place it in your desired location.
-
Create the following folder structure:
$ mkdir -p my-cluster $ cd my-cluster $ mkdir PORT-1 PORT-2 PORT-3 PORT-4 PORT-5 PORT-6
-
In every PORT-* folder, create a configuration file. Name it whatever you wish (eg. *PORT-x.conf*) and fill it with this content:
port PORT-x cluster-enabled yes cluster-config-file nodes-PORT-x.conf cluster-node-timeout 5000 appendonly yes
-
Start a Redis server (node) in each port. This will open the normal port for client connection and the cluster-bus port (10000 + PORT-x), used between nodes to communicate.
$ cd PORT-x $ ../redis-server ./PORT-x.conf
-
Execute the cluster manager (redis-trib.rb) located in the /opt/bitnami/redis/bin directory:
$ ./redis-trib.rb create --replicas 1 127.0.0.1:PORT1 127.0.0.1:PORT-2 127.0.0.1:PORT-3 127.0.0.1:PORT-4 127.0.0.1:PORT-5 127.0.0.1:PORT-6
-
Connect to each node in the cluster as usual.
Automatic approach
Redis comes with a tool named create-cluster, located at /opt/bitnami/scripts/create-cluster. This allows you to avoid the manual configuration described above.
By default, this utility will create 6 nodes with 1 replica and will start creating nodes on port 30000. In order to not modify the utility, is recommended to create a config.sh script in the same folder as create-cluster with the following content:
PORT=STARTING-PORT-NUMBER
TIMEOUT=2000
NODES=6
REPLICAS=1
Start the node and create the cluster:
$ ./create-cluster start
$ ./create-cluster create
Stop the cluster:
$ ./create-cluster stop
Clean up the folder:
$ ./create-cluster clean