Redis集群节点的选举(实验)

Redis集群节点的选举:

当master挂掉之后,就会在该集群中的slave中选取一个来代替mater角色,

从而保证redis集群slot的完整性。

如果其中一个mster和它的slave都挂掉后,会导致slot不完整,整个集群都会挂掉。

集群节点信息:

192.168.2.200:6379> cluster nodes

3ff3a74f9dc41f8bc635ab845ad76bf77ffb0f69 192.168.2.201:6379 master - 0 1527145806504 5 connected 10923-16383

2faf68564a70372cfc06c1afff197019cc6a39f3 192.168.2.201:6380 slave 3ff3a74f9dc41f8bc635ab845ad76bf77ffb0f69 0 1527145805495 5 connected

227f51028bbe827f27b4e40ed7a08fcc7d8df969 192.168.2.200:6380 slave 098e7eb756b6047fde988ab3c0b7189e1724ecf5 0 1527145804485 4 connected

5844b4272c39456b0fdf73e384ff8c479547de47 192.168.2.200:6379 myself,master - 0 0 3 connected 5461-10922

7119dec91b086ca8fe69f7878fa42b1accd75f0f 192.168.2.100:6380 slave 5844b4272c39456b0fdf73e384ff8c479547de47 0 1527145802468 3 connected

098e7eb756b6047fde988ab3c0b7189e1724ecf5 192.168.2.100:6379 master - 0 1527145803476 1 connected 0-5460

新建3个key:

192.168.2.200:6379> set name zhangsan

OK

192.168.2.200:6379> set age 26

-> Redirected to slot [741] located at 192.168.2.100:6379

OK

192.168.2.100:6379> set home beijing

-> Redirected to slot [10814] located at 192.168.2.200:6379

OK

模拟192.168.2.100:6379挂掉:

# ps -ef |grep redis

root      19023      1  0 15:05 ?        00:00:01 redis-server 192.168.2.100:6379 [cluster]

root      19030      1  0 15:05 ?        00:00:01 redis-server 192.168.2.100:6380 [cluster]

root      19127   2912  0 15:13 pts/0    00:00:00 grep --color=auto redis

# kill 19023

查看集群节点状态:(可以看到集群中的一个slave的角色变成了master)

# redis-trib.rb check 192.168.2.200:6379

>>> Performing Cluster Check (using node 192.168.2.200:6379)

M: 5844b4272c39456b0fdf73e384ff8c479547de47 192.168.2.200:6379

slots:5461-10922 (5462 slots) master

1 additional replica(s)

M: 3ff3a74f9dc41f8bc635ab845ad76bf77ffb0f69 192.168.2.201:6379

slots:10923-16383 (5461 slots) master

1 additional replica(s)

S: 2faf68564a70372cfc06c1afff197019cc6a39f3 192.168.2.201:6380

slots: (0 slots) slave

replicates 3ff3a74f9dc41f8bc635ab845ad76bf77ffb0f69

M: 227f51028bbe827f27b4e40ed7a08fcc7d8df969 192.168.2.200:6380

slots:0-5460 (5461 slots) master

0 additional replica(s)

S: 7119dec91b086ca8fe69f7878fa42b1accd75f0f 192.168.2.100:6380

slots: (0 slots) slave

replicates 5844b4272c39456b0fdf73e384ff8c479547de47

[OK] All nodes agree about slots configuration.

>>> Check for open slots...

>>> Check slots coverage...

[OK] All 16384 slots covered.

查看数据是否存在:

# redis-cli -h 192.168.2.200 -p 6380 -c

192.168.2.200:6380> keys *

1) "age"

模拟恢复故障节点:

# redis-server redis.conf

查看集群节点状态:(故障节点恢复后,是变成master还是slave?)

# redis-trib.rb check 192.168.2.200:6379

>>> Performing Cluster Check (using node 192.168.2.200:6379)

M: 5844b4272c39456b0fdf73e384ff8c479547de47 192.168.2.200:6379

slots:5461-10922 (5462 slots) master

1 additional replica(s)

M: 3ff3a74f9dc41f8bc635ab845ad76bf77ffb0f69 192.168.2.201:6379

slots:10923-16383 (5461 slots) master

1 additional replica(s)

S: 2faf68564a70372cfc06c1afff197019cc6a39f3 192.168.2.201:6380

slots: (0 slots) slave

replicates 3ff3a74f9dc41f8bc635ab845ad76bf77ffb0f69

M: 227f51028bbe827f27b4e40ed7a08fcc7d8df969 192.168.2.200:6380

slots:0-5460 (5461 slots) master

1 additional replica(s)

S: 7119dec91b086ca8fe69f7878fa42b1accd75f0f 192.168.2.100:6380

slots: (0 slots) slave

replicates 5844b4272c39456b0fdf73e384ff8c479547de47

S: 098e7eb756b6047fde988ab3c0b7189e1724ecf5 192.168.2.100:6379

slots: (0 slots) slave

replicates 227f51028bbe827f27b4e40ed7a08fcc7d8df969

[OK] All nodes agree about slots configuration.

>>> Check for open slots...

>>> Check slots coverage...

[OK] All 16384 slots covered.

总结:master:192.168.2.100:6379 宕机后,

slave:192.168.2.200:6380 代替了其位置,变成了master角色。

当192.168.2.100:6379故障恢复后,并没有恢复到master的角色,

而是充当了slave角色。

原文地址:http://blog.51cto.com/13690439/2119973

时间: 2024-10-07 12:11:35

Redis集群节点的选举(实验)的相关文章

Redis集群节点主从关系调整

一.概述 Redis集群创建后,可能会出现互为主从关系的节点从属于同一台服务器的情况.在此种情况下,若 服务器故障宕机或需要停机维护,互为主从关系的节点同时停止运行,导致redis集群暂时失去一部 分slot插槽.此时,redis集群为fail状态,对其进行的数据读写操作均无法正常进行.为避免此种情 况的发生,应对redis集群节点的主从关系进行调整,使互为主从关系的节点分属于不同的服务器. 二.调整方法描述 1.使用redis-trib.rb脚本将待调整的从节点从redis集群中删除.(执行此

redis集群节点宕机

redis集群是有很多个redis一起工作,那么就需要这个集群不是那么容易挂掉,所以呢,理论上就应该给集群中的每个节点至少一个备用的redis服务.这个备用的redis称为从节点(slave). 1.集群是如何判断是否有某个节点挂掉 首先要说的是,每一个节点都存有这个集群所有主节点以及从节点的信息.它们之间通过互相的ping-pong判断是否节点可以连接上.如果有一半以上的节点去ping一个节点的时候没有回应,集群就认为这个节点宕机了,然后去连接它的备用节点. 2.集群进入fail状态的必要条件

Redis集群环境搭建(实验)

环境信息: 集群中至少有奇数个主节点,所以至少三个主节点, 每个节点至少一个备份节点,所以共6个节点(master和slave各3个) 节点信息: (我这里准备了3台主机,每台主机运行一个master和一个slave) 节点1:192.168.2.100:6379     master 节点2:192.168.2.100:6380     slave 节点3:192.168.2.200:6379     master 节点4:192.168.2.200:6380     slave 节点5:19

Redis集群搭建及选举原理

redis集群简述 哨兵模式中如果主从中master宕机了,是通过哨兵来选举出新的master,在这个选举切换主从的过程,整个redis服务是不可用的.而且哨兵模式中只有一个主节点对外提供服务,因此没法支持更高的并发.而且当个主节点的内存设置也不宜过大.否则会导致持久化文件过大,影响数据恢复或主从同步的效率. redis集群是由一系列的主从节点群组成的分布式服务器群,它具有复制.高可用和分片特性.Redis集群不需要 sentinel哨兵也能完成节点移除和故障转移的功能.需要将每个节点设置成集群

Redis集群节点管理

Redis集群一旦启动,就不能轻易删除掉一个节点了. 需要由redis-trib.rg这个ruby脚本行使集群管理的功能.所有的哈希槽都分配于master节点 一.delete master node 1. 重新分片 reshard后的参数可以是集群中任何一个节点 redis-3.2.9/src/redis-trib.rb reshard 192.168.1.6:7000 2.删除主节点 redis-3.2.9/src/redis-trib.rb del-node 192.168.1.6:700

Redis 集群cluster

在网上查找 redis集群的相关文档,很多都是以主从或者主从故障转移而说是集群,前几天玩了下集群,今天终于写出来一部分内容,可以分享出来了. 一.       Redis集群基础介绍 1.Redis集群简介:Redis集群是一个可以在多个 Redis 节点之间进行数据共享的设施.Redis 集群通过分区来提供一定程度的可用性:即使集群中有一部分节点失效或者无法进行通讯, 集群也可以继续处理命令请求.Redis 集群提供了以下两个好处:(1.)将数据自动切分(split)到多个节点的能力.(2.)

Redis集群容器化安装

Redis集群概述Redis作为当前非常热门的内存型数据结构存储,可用于数据存储,缓存和消息代理等.本文将讲解如何基于docker搭建Redis集群,Redis的集群设计包括两个部分:主从复制和哈希Slot.1.1. 主从复制主从复制在数据库中很常见,一般用来做读写分离,Redis中也是如此.要求只有1个Master(主节点),可以有N个slaver(从节点),而且Slaver也可以有自己的Slaver,由于这种主从的关系决定他们是在配置阶段就要指定他们的上下级关系,而不是Zookeeper那种

2.Redis集群环境搭建

转载请出自出处:http://www.cnblogs.com/hd3013779515/ 一.基本概念 1.redis集群是一个可以在多个节点之间进行数据共享的设施.redis集群提供了以下两个好处1.1 将数据自动切分(split)到多个节点1.2 当集群中的某一个节点故障时,redis还可以继续处理客户端的请求. 2.一个 Redis 集群包含 16384 个哈希槽(hash slot),数据库中的每个数据都属于这16384个哈希槽中的一个.集群使用公式 CRC16(key) % 16384

redis集群之Cluster

RedisCluster 是 Redis 的亲儿子,它是 Redis 作者自己提供的 Redis 集群化方案. 相对于 Codis 的不同,它是去中心化的,如图所示,该集群有三个 Redis 节点组成,每个节点负责整个集群的一部分数据,每个节点负责的数据多少可能不一样.这三个节点相互连接组成一个对等的集群,它们之间通过一种特殊的二进制协议相互交互集群信息. Redis Cluster 将所有数据划分为 16384 的 slots,它比 Codis 的 1024 个槽划分的更为精细,每个节点负责其