知识点

相关文章

更多

最近更新

更多

redis集群出现宕机没法访问-redis集群管理

2019-03-24 00:02|来源: 网路

先来查看集群节点信息
192.168.56.101:6382> cluster nodes
03596d92625f1b778f29eb4a9128d92809dfd79a 192.168.56.101:6381 master - 0 1468858392134 2 connected 5795-10922
b1939026deb80fedde7bdb22c1df3ecfaa72f608 192.168.56.101:6380 master - 0 1468858393149 5 connected 0-5794 10923-11255
6aa027917d223b8fedd42893a89fb0e2c07c8b27 192.168.56.101:6382 myself,master - 0 0 3 connected 11256-16383


[root@master redis-cluster]# ps -ef | grep redis

root      8921     1  0 Jul18 ?        00:00:08 /usr/local/bin/redis-server 192.168.56.101:6380 [cluster]          
root      8925     1  0 Jul18 ?        00:00:07 /usr/local/bin/redis-server 192.168.56.101:6381 [cluster]          
root      8929     1  0 Jul18 ?        00:00:07 /usr/local/bin/redis-server 192.168.56.101:6382 [cluster]        
root     23289  1785  0 00:13 pts/0    00:00:00 grep redis


把6382的进程kill 掉,再查看集群节点信息,发现6382的状态是disconnected

192.168.56.101:6380> cluster nodes
6aa027917d223b8fedd42893a89fb0e2c07c8b27 192.168.56.101:6382 master,fail - 1468858541215 1468858540912 3 disconnected 11256-16383
03596d92625f1b778f29eb4a9128d92809dfd79a 192.168.56.101:6381 master - 0 1468858579644 2 connected 5795-10922
b1939026deb80fedde7bdb22c1df3ecfaa72f608 192.168.56.101:6380 myself,master - 0 0 5 connected 0-5794 10923-11255


想向集群中写入数据是没法进行的,提示的错误信息是集群挂掉了

192.168.56.101:6380> set k2 111
(error) CLUSTERDOWN The cluster is down


故障机制

1、 集群中的每个节点都会定期的向其它节点发送PING命令,并且通过有没有收到回复判断目标节点是否下线;
2、 集群中每一秒都会随机选择几个节点,然后选择其中最久没有响应的节点放PING命令;
3、 如果一定时间内目标节点都没有响应,那么该节点就认为目标节点疑似下线;
4、 当集群中的节点超过半数认为该目标节点疑似下线,那么该节点就会被标记为下线;
5、 当集群中的任何一个节点下线,就会导致插槽区有空档,不完整,那么该集群将不可用;
6、 如何解决上述问题?
a) 在Redis集群中可以使用主从模式实现某一个节点的高可用
b) 当该节点(master)宕机后,集群会将该节点的从数据库(slave)转变为(master)继续完成集群服务;


书生参考网络整理


redis知识点

redis快速入门

reids常用命令

redis数据结构

java_API_客户端

Jedis

Tlcache

redis_持久化

AOF

RDB

发布订阅(pub/sub)

redis_事件

redis事务

redis通讯协议

RESP(Redis Serialization Protocol)

redis高可用

redis哨兵

监控(Monitoring) 提醒(Notification) 自动故障迁移(Automatic failover)

redis主从复制

  • 复制模式

    1. 主从复制
    2. 从从复制
  • 复制过程

    • slave向master发送sync命令;
    • master开启子进程执行bgsave写入rdb文件;
    • master发送缓存和RDB文件给slave;
    • master发送数据发送给slave完成复制;

redis集群(Redis_Cluster)

相关问答

更多
  • 用的是什么集群方式,JedisSentinelPool 还是ShardedJedisPool。 如果用的是前者,配置是需要连接sentinel端口的(默认26379),不是连接redis端口(6379)。 或者把spring相关配置文件贴出来一下。 127.0.0.1:26379 127.0.0.1:26380 127.0.0.1:26381
  • 用的是什么集群方式,JedisSentinelPool 还是ShardedJedisPool。 如果用的是前者,配置是需要连接sentinel端口的(默认26379),不是连接redis端口(6379)。 或者把spring相关配置文件贴出来一下。
    用python-2.7.3\python是对的,但是你的hello.py放在那里?你需要先用“cd 目录名”转换当前目录到存放hello.py的地方,然后执行python-2.7.3\python hello.py。
  • Redis怎么做集群[2022-03-16]

    为什么集群? 通常,为了提高网站响应速度,总是把热点数据保存在内存中而不是直接从后端数据库中读取。Redis是一个很好的Cache工具。大型网站应用,热点数据量往往巨大,几十G上百G是很正常的事儿,在这种情况下,如何正确架构Redis呢? 首先,无论我们是使用自己的物理主机,还是使用云服务主机,内存资源往往是有限制的,scale up不是一个好办法,我们需要scale out横向可伸缩扩展,这需要由多台主机协同提供服务,即分布式多个Redis实例协同运行。 其次,目前硬件资源成本降低,多核CPU,几十G内存 ...
  • 把redis-3.2.0文件夹中redis.conf配置文件拷贝到/usr/local/redis/下,可能不同的版本,不一样,我这里需要拷贝,/usr/local/redis/没有,授权或者切换root用户 因为redis.conf是只读模式,所以非得授权和root用户,使用命令进入redis.conf后,把daemonize no修改,目的是开启后台启动,然后使用命令,找到集群把注释去掉。这样子单机版的redis的配置安装就完成了。
  • 正如你在这里看到的,redis现在支持自动分区。 As you can see here, redis supports now automatic partitioning.
  • 正如您所说,您在Redis群集中使用了3个主节点,因此可以清楚地看到,如果其中一个节点将关闭,那么您将收到CLUSTERDOWN错误。 为了避免这些类型的错误并获得高可用性,最好将从属服务器附加到主节点(如此处的官方Redis群集教程中所示)。 有一个理由让奴隶与你的主人联系以获得更高的可用性。 为此,您可以阅读上面Redis群集教程链接中提到的这些行。 Redis集群中有16384个散列槽,为了计算给定密钥的散列槽,我们只需采用密钥模数16384的CRC16。 Redis群集中的每个节点都负责散列槽的子集 ...
  • JedisCluster没有实现Transaction和Pipeline,因为它很难实现。 Redis可以在群集模式下发送MOVED或ASK,这意味着我们应该在节点之间移动插槽。 我正在考虑JedisCluster的管道模式,但没有进行进一步的研究。 https://groups.google.com/d/msg/jedis_redis/u6j8slokO3E/Dh5Q94TRjJUJ 目前,Jedis团队正致力于为JedisCluster稳定/提供更多API。 JedisCluster didn't im ...