redis-cluster集群模式

                                【redis-cluster模式】(redis 5.0)

1. 优点:

  1. 解决了redis内存不够用问题,通过多个master来增大redis集群内存
  2. master之间相互通讯,相互选举,保证故障转移
  3. 主从复制,master的从节点同步主节点数据,不做读写操作,作为master的备用节点,master宕机后由他的从节点顶替master
  4. 客户端连接任意一个节点就可以使用

2. 数据分配节点存储方式:

  1. 有几个master节点,就将16383个哈希槽平均分配
  2. 用CRC16计算出key的哈希值,哈希值%16384得到的数分配到对应哈希槽槽范围的节点中

3. 投票容错:

        每秒发送心跳ping,超时算节点失效(配置cluster-node-timeout),集群中一半以上的master认为该节点失效,则认为该master节点挂掉

4. 集群失效条件(整个集群不可用):

  1. 集群任意master挂掉,且当前master没有slave,则集群进入fail状态(集群的[0-16383]slot映射不完全时进入fail状态)
  2. 集群超过半数以上master挂掉,无论是否有slave,集群进入fail状态

5. 集群节点变动操作(黑窗口中输入命令)(具体命令见下面的命令栏):

创建集群:

  1. 输入创建集群命令

新增主节点:

  1. 输入创建主节点命令
  2. 重新分配哈希槽

新增从节点:

  1. 输入创建从节点命令

删除主节点:

  1. 将主节点哈希槽迁移到其他节点(执行重新分配哈希槽流程)
  2. 执行删除节点命令

删除从节点:

  1. 执行删除节点命令

重新分配哈希槽:查看【redis专栏】的 redis-cluster重新分配哈哈希槽

6. 使用到的命令:

查看集群哈希槽分配情况:cluster slots

查看集群状态:cluster info

查看集群中的节点:cluster nodes

操作集群的命令:

  • create:创建一个集群环境host1:port1 … hostN:portN
  • call:可以执行redis命令
  • add-node:将一个节点添加到集群里,第一个参数为新节点的ip:port,第二个参数为集群中任意一个已经存在的节点的ip:port
  • del-node:移除一个节点
  • reshard:重新分片
  • check:检查集群状态

创建集群:

格式:./redis-cli --cluster create <集群某个节点的ip>:<端口> <集群某个节点的ip>:<端口> ...... --cluster-replicas <1 主节点的从节点数量>
例如:redis-cli --cluster create 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 127.0.0.1:6385 --cluster-replicas 1

新增一个主节点:

格式:./redis-cli --cluster add-node <新增节点IP>:<新增节点端口> <集群中任意存在节点IP>:<集群中任意存在节点IP节点端口>
例如:./redis-cli --cluster add-node 127.0.0.1:6386 127.0.0.1:6381

新增一个从节点:

格式:./redis-cli --cluster add-node <新节点的ip>:<端口> <现存主节点的ip>:<端口> --cluster-slave --cluster-master-id <主节点id>
例如:./redis-cli --cluster add-node 127.0.0.1:6387 127.0.0.1:6386 --cluster-slave --cluster-master-id a29a1af143eb4997ed06d29c2af369fa7cfa093f

删除一个节点(删除主节点先把槽分配给其他节点):

格式:./redis-cli --cluster del-node <删除节点的ip>:<端口> <删除节点的ID>
例如:./redis-cli --cluster del-node 127.0.0.1:6386 a29a1af143eb4997ed06d29c2af369fa7cfa093f

重写分配哈希槽:

格式:./redis-cli --cluster reshard <集群中任意节点ip>:<端口>
例如:./redis-cli --cluster reshard 127.0.0.1:6386

7. cluster模式的配置方式:

  1. 每一个redis节点都有配置:redis.conf
  2. # 开启集群模式
    cluster-enabled yes
    # 集群节点生成的配置文件(存放集群信息)
    cluster-config-file nodes-6380.conf
    # 集群认为节点挂掉的超时时间(单位毫秒)
    cluster-node-timeout 15000
    #集群总线监听TCP连接端口(每个节点都要配置不同端口,用于集群 故障检测、配置更新、故障转移,和6379是区分开的)
    cluster-port <端口>
  3. 保证redis集群端口号不一致
  4. 在随便一个redis目录下小黑床,输入【创建】命令:
redis-cli --cluster create 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 127.0.0.1:6385 --cluster-replicas 1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值