Cluster模式搭建

                                                                  cluster集群特点:

 

多个redis节点网络互联,数据共享
所有的节点都是一主一从(也可以是一主多从),其中从不提供服务,仅作为备用
不支持同时处理多个key(如MSET/MGET),因为redis需要把key均匀分布在各个节点上,  并发量很高的情况下同时创建key-value会降低性能并导致不可预测的行为
支持在线增加、删除节点
客户端可以连接任何一个主节点进行读写
Cluster模式搭建

 

准备工作:(建立端口存放相关配置的文件夹,和配置文件)
cp /root/redis-6.2.3/redis.conf /root/redis-6.2.3/redis_7001.conf
cp /root/redis-6.2.3/redis.conf /root/redis-6.2.3/redis_7002.conf
mkdir -p /var/log/redis/cluster
mkdir -p /root/redis-6.2.3/cluster/{redis_7001,redis_7002}

注意:这里是同一台主机的7001 端口 和 7002端口 所需要的配置文件copy   redis.conf即可

修改配置文件

以下是要手动修改或添加的,其他配置不需要修改:

# vim redis_7001.conf

bind 192.168.42.28     #修改为本机ip
port 7001              #添加7001端口
daemonize yes          #开启后台运行
pidfile "/var/run/redis_7001.pid"                     #pid文件存放路径   
logfile "/var/log/redis/cluster/redis_7001.log"       #日志文件存放路径
dir "/root/redis-6.2.3/cluster/redis_7001"            #后续相关文件路径 
masterauth “123456”                                   #配置主从机登录验证密码
requirepass “123456”                                  #配置本机登录验证密码
appendonly yes                                        #开启AOF增量备份
cluster-enabled yes                                   #开启cluster集群
cluster-config-file nodes_7001.conf                   #集群节点消息存放路径
cluster-node-timeout 15000                            #命令返回时间为15000ms / 15s

以上为7001端口所对应配置文件,后续端口都一样

 其它两台机器配置与192.168.42.28一致,此处省略

启动redis服务:

src/redis-server redis_7001.conf
tail -f /var/log/redis/cluster/redis_7001.log
src/redis-server redis_7002.conf
tail -f /var/log/redis/cluster/redis_7002.log

  其它两台机器启动与192.168.42.28一致,此处省略

查看启动的日志文件

No cluster configuration found, I'm a1eec932d923b55e23a5fe6a488ed7a97e27c826

这表示我们的redis服务器正在运行在cluster mode

•创建集群:
src/redis-cli -a 123456 --cluster create 192.168.42.28:7001 192.168.42.28:7002 192.168.42.29:7003 192.168.42.29:7004 192.168.42.30:7005 192.168.42.30:7006 --cluster-replicas 1

手动输入yes,接受上面的配置

 

 

                                 查看replicates可以看到Slave对应的主机关系

可以看到

192.168.42.28:7001是master,它的slave是192.168.42.29:7004

192.168.42.29:7003是master,它的slave是192.168.42.30:7006

192.168.42.30:7005是master,它的slave是192.168.42.28:7002

                                    这里的nodes文件存放的是节点信息

集群操作:

      登录集群:

redis-cli -c -h 192.168.42.28 -p 7001 -a 123456          # -c,使用集群方式登录

      查看集群信息:

192.168.42.28:7001> CLUSTER INFO #集群状态

      列出节点信息:

192.168.42.28:7001> CLUSTER NODES             #列出节点信息

      写入数据:

192.168.42.28:7001> set key111 aaa
-> Redirected to slot [13680] located at 192.168.42.30:7005          #说明数据到了192.168.42.30:7005上
OK

192.168.42.30:7005> set key222 bbb
-> Redirected to slot [2320] located at 192.168.42.28:7001            #说明数据到了192.168.42.28:7001上OK

192.168.42.28:7001> set key333 ccc
-> Redirected to slot [7472] located at 192.168.42.29:7003            #说明数据到了192.168.42.29:7003上OK

192.168.42.29:7003> get key111
-> Redirected to slot [13680] located at192.168.42.30:7005
"aaa

"192.168.42.30:7005> get key333
-> Redirected to slot [7472] located at 192.168.42.29:7003
"ccc"

可以看出redis cluster集群是去中心化的,每个节点都是平等的,连接哪个节点都可以获取和设置数据。

当然,平等指的是master节点,因为slave节点根本不提供服务,只是作为对应master节点的一个备份

      增加节点:

        1、192.168.42.29上增加一节点:

cp /root/redis-6.2.3/redis_7003.conf /root/redis-6.2.3/redis_7007.conf 
vim /root/redis-6.2.3/redis_7007.conf
mkdir /root/redis-6.2.3/cluster/redis_7007
src/redis-server redis_7007.conf 
bind 192.168.42.29
port 7007
daemonize yes
pidfile "/var/run/redis_7007.pid“
logfile "/usr/local/redis/cluster/redis_7007.log“
dir "/data/redis/cluster/redis_7007“
#replicaof 192.168.30.129 6379
masterauth "123456“
requirepass "123456“
appendonly yes
cluster-enabled yes
cluster-config-file nodes_7007.conf
cluster-node-timeout 15000

       2、集群中增加节点:

192.168.42.29:7003> CLUSTER MEET 192.168.42.29 7007
OK
192.168.42.29:7003> CLUSTER NODES

 

 可以看到,新增的节点都是以master身份加入集群的

       3、更换节点身份:

 

     删除节点:
192.168.42.30:7008> CLUSTER FORGET dc2c5a26a620423214942a0cc6d8cf5538122563 
(error) ERR I tried hard but I can't forget myself...          #无法删除登录节点

192.168.42.30:7008> CLUSTER FORGET e51ab166bc0f33026887bcf8eba0dff3d5b0bf14
(error) ERR Can't forget my master!                 #不能删除自己的master节点

192.168.42.30:7008> CLUSTER FORGET 6788453ee9a8d7f72b1d45a9093838efd0e501f1
OK              #可以删除其它的master节点

192.168.30.130:7008> CLUSTER NODES

   

192.168.42.30:7008> CLUSTER FORGET b4d3eb411a7355d4767c6c23b4df69fa183ef8bcOK              
#可以删除其它的slave节点

      保存配置:
192.168.42.30:7008> CLUSTER SAVECONFIG            #将节点配置信息保存到硬盘
OK
 
cat /data/redis/cluster/redis_7001/nodes-7001.conf  #查看节点信息文件

 

redis-cli -c -h 192.168.42.30 -p 7008 -a 123456
192.168.30.130:7008> CLUSTER NODES

可以看到,之前删除的节点又恢复了,这是因为对应的配置文件没有删除,执行CLUSTER SAVECONFIG恢复 

模拟master节点挂掉

netstat -lntp |grep 7001

kill pid

 

常见错误:

1、

 报错原因:因为之前已经搭建了,导致无法继续再搭建,所以需要把cluster下的文件都删除然后再重新创建,最后再创建集群即可。 

                    或者不创建集群,直接登录

2、

(error) ERR To set a master the node must be empty and without assigned slots.

Redis集群使用总结(二)_notOnlyRush的博客-CSDN博客

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值