redis的集群搭建

一、redis的集群搭建
1.将之前的redis关掉

[root@server1 utils]# /etc/init.d/redis_6379 stop

在这里插入图片描述

2.搭建集群环境,搭建六个(7001到7006)集群节点

[root@server1 ~]# cd /usr/local
[root@server1 local]# mkdir rediscluster
[root@server1 local]# ls
bin  games    lib    libexec  rediscluster  share
etc  include  lib64  nginx    sbin          src
[root@server1 local]# cd rediscluster/
[root@server1 rediscluster]# mkdir 700{1..6}
[root@server1 rediscluster]# ls
7001  7002  7003  7004  7005  7006

在这里插入图片描述

3.在每个节点的目录里编写配置文件redis.conf

[root@server1 rediscluster]# cd 7001/
[root@server1 7001]# vim redis.conf
port 7001
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
pidfile "/usr/local/rediscluster/7001/redis.pid"
logfile "/usr/local/rediscluster/7001/redis.log"
daemonize yes
dir "/usr/local/rediscluster/7001"
[root@server1 7001]# redis-server redis.conf 

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
4.查看进程,7001进程已开启

[root@server1 7001]# ps ax

在这里插入图片描述

查看端口7001已经打开

[root@server1 7001]# netstat -tnlp

在这里插入图片描述

5.把7001目录下配置好的文件发送给其他目录,其他目录下的文件只需修改对应的号(比如:7002目录下的配置文件对应的号为7002)

[root@server1 7001]# cp redis.conf  ../7002/
[root@server1 7001]# cp redis.conf  ../7003/
[root@server1 7001]# cp redis.conf  ../7004/
[root@server1 7001]# cp redis.conf  ../7005/
[root@server1 7001]# cp redis.conf  ../7006/

在这里插入图片描述

6.修改7002目录下redis.conf文件

[root@server1 7001]# cd ../7002/
[root@server1 7002]# vim redis.conf 
port 7002
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
pidfile "/usr/local/rediscluster/7002/redis.pid"
logfile "/usr/local/rediscluster/7002/redis.log"
daemonize yes
dir "/usr/local/rediscluster/7002"

[root@server1 7002]# redis-server redis.conf 

在这里插入图片描述
在这里插入图片描述
注意:其他几个目录配置如上

7.查看进程6个端口的进程都已开启

[root@server1 7006]# ps ax

在这里插入图片描述

8.复制redis-trib.rb到/usr/local/bin/下

[root@server1 ~]# cd redis-5.0.3/
[root@server1 redis-5.0.3]# ls
00-RELEASENOTES  COPYING  Makefile   redis.conf       runtest-sentinel  tests
BUGS             deps     MANIFESTO  runtest          sentinel.conf     utils
CONTRIBUTING     INSTALL  README.md  runtest-cluster  src
[root@server1 redis-5.0.3]# cd src/
[root@server1 src]# cp redis-trib.rb /usr/local/bin/

在这里插入图片描述

9.创建集群

[root@server1 redis-5.0.3]# redis-cli --cluster create --cluster-replicas 1 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 127.0.0.1:7006

在这里插入图片描述

在这里插入图片描述

  • 测试:

1.测试集群与对应节点关系,7001,7002,7003是matser

[root@server1 redis-5.0.3]# redis-cli --cluster info 127.0.0.1:7001
127.0.0.1:7001 (436821ae...) -> 0 keys | 5461 slots | 1 slaves.
127.0.0.1:7003 (64e2feb3...) -> 0 keys | 5461 slots | 1 slaves.
127.0.0.1:7002 (8ab0cf15...) -> 0 keys | 5462 slots | 1 slaves.
[OK] 0 keys in 3 masters.
0.00 keys per slot on average.

在这里插入图片描述

[root@server1 redis-5.0.3]# redis-cli -c -p 7001
127.0.0.1:7001> info 

在这里插入图片描述

2.无中心检测

[root@server1 redis-5.0.3]# redis-cli -c -p 7005
127.0.0.1:7005> get name
-> Redirected to slot [5798] located at 127.0.0.1:7002
(nil)
127.0.0.1:7002> exit
[root@server1 redis-5.0.3]# redis-cli -c -p 7006
127.0.0.1:7006> get name
-> Redirected to slot [5798] located at 127.0.0.1:7002
(nil)

在这里插入图片描述

3.将7002(master)宕掉,对应的7006会接替

[root@server1 redis-5.0.3]# redis-cli -c -p 7002
127.0.0.1:7002> SHUTDOWN
not connected> 

在这里插入图片描述
在这里插入图片描述

4.如果在把slave宕掉,整个集群就无法使用

[root@server1 redis-5.0.3]# redis-cli -c -p 7006
127.0.0.1:7006> SHUTDOWN
not connected> exit

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
5.查看进程,7002,7006进程不在
在这里插入图片描述

  • 恢复集群

1.重新加载7002和7006的配置文件

[root@server1 ~]# cd /usr/local/rediscluster/
[root@server1 rediscluster]# cd 7006/
[root@server1 7006]# redis-server redis.conf 
[root@server1 7006]# cd ..
[root@server1 rediscluster]# cd 7002/
[root@server1 7002]# redis-server redis.conf 

在这里插入图片描述

2.再次查看集群恢复正常

[root@server1 ~]# ps ax

在这里插入图片描述
在这里插入图片描述

  • 给集群中添加节点
    1.先创建两个新的节点
[root@server1 ~]# cd /usr/local/rediscluster/
[root@server1 rediscluster]# ls
7001  7002  7003  7004  7005  7006
[root@server1 rediscluster]# mkdir 7007 7008
[root@server1 rediscluster]# ls
7001  7002  7003  7004  7005  7006  7007  7008

在这里插入图片描述

2.把7001目录下配置好的redis文件发送给7007和7008目录下

[root@server1 rediscluster]# cp 7001/redis.conf 7007/
[root@server1 rediscluster]# cp 7001/redis.conf 7008/

在这里插入图片描述

3.切换到7007目录下,编辑redis配置文件

[root@server1 rediscluster]# cd 7007/
[root@server1 7007]# ls
redis.conf
[root@server1 7007]# vim redis.conf
 port 7007
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
pidfile "/usr/local/rediscluster/7007/redis.pid"
logfile "/usr/local/rediscluster/7007/redis.log"
daemonize yes
dir "/usr/local/rediscluster/7007"

在这里插入图片描述

4.把新建节点7007拉起来,查看进程7007节点已经起来

[root@server1 7007]# redis-server redis.conf 
[root@server1 7007]# ps ax

在这里插入图片描述

5.切换到7008目录下,编辑redis配置文件

[root@server1 7007]# cd ../7008
[root@server1 7008]# vim redis.conf 
port 7008
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
pidfile "/usr/local/rediscluster/7008/redis.pid"
logfile "/usr/local/rediscluster/7008/redis.log"
daemonize yes
dir "/usr/local/rediscluster/7008"

在这里插入图片描述

6.把新建节点7008拉起来,查看进程7008节点已经起来


[root@server1 7008]# redis-server redis.conf 
[root@server1 7008]# ps ax

在这里插入图片描述
7.把节点7007添加到集群里(master的添加方法)

[root@server1 ~]# redis-cli --cluster add-node 127.0.0.1:7007 127.0.0.1:7001

在这里插入图片描述

8.查看节点7007已经添加进去

[root@server1 ~]# redis-cli --cluster check 127.0.0.1:7001

在这里插入图片描述
在这里插入图片描述
9.把节点7008添加到集群里(slave的添加方法)

[root@server1 ~]# redis-cli --cluster add-node --cluster-slave --cluster-master-id 259b303813b76fb05e6d938af7926d831aec719a 127.0.0.1:7008 127.0.0.1:7007

在这里插入图片描述

注意:这里的id号为节点7007的id
10.再次查看,节点7008已经添加进去

[root@server1 ~]# redis-cli --cluster check 127.0.0.1:7001

在这里插入图片描述
在这里插入图片描述

11.给新的节点7007添加哈希槽

[root@server1 ~]# redis-cli --cluster reshard --cluster-from all --cluster-to 259b303813b76fb05e6d938af7926d831aec719a --cluster-slots 300 --cluster-yes 127.0.0.1:7001

12.再次查看,哈希槽添加成功,但可以看到哈希槽分配不平均,会导致数据不同步

[root@server1 ~]# redis-cli --cluster check 127.0.0.1:7001

在这里插入图片描述
在这里插入图片描述

13.平均分配哈希槽

[root@server1 ~]# redis-cli --cluster rebalance --cluster-threshold 1 --cluster-use-empty-masters 127.0.0.1:7001

14.再次检查,可以看到哈希槽都为4096 slots

[root@server1 ~]# redis-cli --cluster check 127.0.0.1:7001

在这里插入图片描述
在这里插入图片描述

15.查看节点状态

[root@server1 ~]# redis-cli -c -p 7008
127.0.0.1:7008> info

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值