Redis集群搭建手动模式

集群规划

Redis集群至少需要3个节点,因为投票容错机制要求超过半数节点认为某个节点挂了该节点才是挂了,所以2个节点无法构成集群。 要保证集群的高可用,需要每个节点都有从节点,也就是备份节点,所以Redis集群至少需要6台服务器。这里选择三台服务器,每台服务器上起两个端口,从而模拟六个节点。

节点编号 IP地址 端口 节点类型 从节点
1 192.168.1.101 6379 4
2 192.168.1.101 6380 -
3 192.168.1.102 6379 6
4 192.168.1.102 6380 -
5 192.168.1.103 6379 2
6 192.168.1.103 6380 -

目录规划

每个服务上创建如下结构文件夹:

1
2
3
4
5
6
/root
|-- /redis-cluster
|--|-- /redis-6379
|--|--|-- redis.conf
|--|-- /redis-6380
|--|--|-- redis.conf

配置文件修改

修改每个文件夹里的redis.conf文件。可以编写好一个以后,复制到其他文件夹里。修改内容如下:(密码可设可不设,我是内网测试使用,没有配置密码)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#端口号
port 6379
#开启后台运行
daemonize yes
#设置 Redis 实例 pid 文件
pidfile /var/run/redis_6379.pid
#绑定本机IP
bind 192.168.1.101
#设置密码
#requirepass 123456
#节点内部互相访问的密码,如果节点设置了密码,这项一定要配,否则不会主从复制和宕机选举
#masterauth 123456
#启用集群莫斯
cluster-enabled yes
#设置当前节点集群配置文件路径
cluster-config-file nodes-6379.conf
#设置当前节点连接超时毫秒数

分别启动这六个节点

三台机器上没别执行如下命令:

1
2
./redis-server /root/redis-cluster/redis-6379/redis.conf
./redis-server /root/redis-cluster/redis-6380/redis.conf

节点Meet

通过以上命令后,我们的6个redis节点都已经正常启动了。但是他们之间并不知道彼此。所以需要让他们之间建立连接。随便登录到个节点上:

1
./redis-cli -h 192.168.1.101

然后通过如下命令建立与其他五个节点的联系:

1
2
3
4
5
cluster meet 192.168.1.101 6380
cluster meet 192.168.1.102 6379
cluster meet 192.168.1.102 6380
cluster meet 192.168.1.103 6379
cluster meet 192.168.1.104 6380

分配槽位

只需要在三个主节点上分配槽位,例如我选择6379端口的为三个主节点,执行一下命令:

1
2
3
redis-cli -h 192.168.1.101 -p 6379 cluster addslots {0..5461}
redis-cli -h 192.168.1.102 -p 6379 cluster addslots {5462..10922}
redis-cli -h 192.168.1.103 -p 6379 cluster addslots {10923..16383}

建立准备关系

三个主节点的槽位分配完成后,我们就需要配置每个从节点(这里就是6380端口的三个节点)。

1
2
3
redis-cli -h 192.168.1.101 -p 6380 cluster replicate b9a08e4f904e4effafdb0cec7e040de1e8794989
redis-cli -h 192.168.1.102 -p 6380 cluster replicate c00cbbccbff02cacc4a72704e77756e24be98454
redis-cli -h 192.168.1.103 -p 6380 cluster replicate 6bbaaf967ad491c3fe3bfcda13255082c89987ac

以第一条命令为例说明:把192.168.1.101:6380配置为节点ID为b9a08e4f904e4effafdb0cec7e040de1e8794989的节点的从节点
节点ID通过cluster nodes获得

测试集群

至此手动搭建redis集群已经完成了。接下通过如下命令登录到一个节点进行测试。-c参数表示集群方式连接

1
./redis-cli -h 192.168.1.101 -c

总结

通过手动方式搭建redis虽然整体上显得有点复杂,但是可以让我们更清楚的了解redis集群的创建过程,学习相关redis集群命令。下一节将分析基于redis5的快速集群搭建方法。


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!