Redis3集群搭建(下)- 实操

Redis3集群搭建(下)- 实操

上一篇博客学习了一些Redis集群的基础知识,这篇文章将会开始学习搭建一个3主3从的小型的Redis集群。

准备

  • Redis 3.2.9
  • 一台机器,Linux或者macOS

我本机是macOS,所以这里以macOS为例。

安装

1
2
3
4
$ wget http://download.redis.io/releases/redis-3.2.9.tar.gz
$ tar xzf
$ cd redis-3.2.9/
$ make

编译完成后,就可以启动Redis了

1
$ src/redis-server redis.conf

启动完成,说明Redis已经可以使用了。

配置文件

还需要准备一些配置文件供Redis集群使用,Redis集群搭建需要六个运行在Redis集群模式下的Redis实例,而不是普通的Redis实例,所以需要通过修改配置文件来让Redis实例支持集群。

1
2
3
$ mkdir redis-cluster
$ cd redis-cluster
$ mkdir 7000 7001 7002 7003 7004 7005

在7000-7005这几个文件夹中各创建一个redis.conf文件,文件的内容可以使用最开始解压后文件夹中的redis.conf文件,在这个基础上进行修改。需要修改如下几个配置:

1
2
3
4
5
port 7000
cluster-enabled yes
cluster-config-file nodes-7000.conf
cluster-node-timeout 15000
appendonly yes

  • cluster-enabled:配置打开集群模式
  • cluster-enabled:配置保存节点配置文件的路径,默认值为nodes.conf,无需人为修改,它由Redis集群启动时创建,并在有需要时自动进行更新
  • appendonly:打开持久化

其他文件夹的配置以此类推,将可执行文件redis-server复制到redis-cluster文件夹下面,然后使用以下命令,一次在每个文件夹下面执行:

1
2
$ cd 7000
$ ../redis-server ./redis.config

搭建集群

把所有实例都运行起来之后,就可以使用这些实例开始搭建集群了,同时为每个节点编写配置文件。使用 Redis集群命令行工具redis-trib,编写节点配置文件可以变得非常简单。redis-trib.rb在Redis源码的src目录下,他是用ruby编写的,可以通过它来对Redis集群进行创建、检查、分片等工作。所以本机还需要安装配置ruby环境(ps:ruby环境配置后,需要安装Ruby的Redis接口,使用命令gem install redis)。

Ruby方式

创建集群:

1
2
./redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 \
127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005

这个命令在这里用于创建一个新的集群,–replicas 1表示为集群中的每个主节点创建一个从节点。redis-trib这时候会打印出一份预想中的配置给你看,如果觉得没有问题,输入yes,集群就开始创建了。
如下图所示,表示集群创建成功:

create-cluster脚本

如果觉得这种方式太麻烦,也可以通过Redis源码目录下的utils/create-cluster文件夹中的create-cluster脚本创建集群。通过这个脚本可以创建一个3主3从的集群,并且端口默认从30001开始。但是通过这种方式就不能学习到那么多Redis集群的细节。
这个脚本主要有以下命令:

  • create-cluster start
  • create-cluster create
  • create-cluster stop

测试集群

这里用redis-cli脚本进行测试,看集群是否可用。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ ./redis-cli -c -p 7000
127.0.0.1:7000> set mykey redis
-> Redirected to slot [14687] located at 127.0.0.1:7002
OK
127.0.0.1:7002> set hello world
-> Redirected to slot [866] located at 127.0.0.1:7000
OK
127.0.0.1:7000> get mykey
-> Redirected to slot [14687] located at 127.0.0.1:7002
"redis"
127.0.0.1:7002> get hello
-> Redirected to slot [866] located at 127.0.0.1:7000
"world"
127.0.0.1:7000>

可以看出Redis会根据key计算对应的slot,然后跳转到对应的node上去,和我们之前介绍的内容一致。

至此,一个3主3从的Redis集群就搭建完成了,接下来可能会写一篇使用Docker搭建Redis集群的文章。

参考