redis集群中节点fail,noaddr

文章目录

      • [1. 问题:fail,noaddr](#1. 问题:fail,noaddr)
      • [2. cluster nodes节点信息解读](#2. cluster nodes节点信息解读)
        • [2.1 每个字段的含义](#2.1 每个字段的含义)
        • [2.2 flags字段各标记含义](#2.2 flags字段各标记含义)
      • [3. redis集群fail,noaddr问题解决](#3. redis集群fail,noaddr问题解决)
      • [4. cluster指令](#4. cluster指令)
      • [5. 相关文章](#5. 相关文章)
        • [(1) redis集群搭建](#(1) redis集群搭建)
        • [(2) 华为云两台机器内网互联](#(2) 华为云两台机器内网互联)
        • [(3) /etc/rc.d/init.d 详解|程序开机自启](#(3) /etc/rc.d/init.d 详解|程序开机自启)
        • [(4) Redis5.0+ Redis集群水平扩容|节点删除](#(4) Redis5.0+ Redis集群水平扩容|节点删除)
        • [(5) 三台机器搭建redis集群过程及问题记录](#(5) 三台机器搭建redis集群过程及问题记录)
        • [(6) redis5.0集群搭建(两台服务器)](#(6) redis5.0集群搭建(两台服务器))
        • [(7) Linux安装部署Redis](#(7) Linux安装部署Redis)
        • [(8) 【redis】 windows环境下安装、配置、使用、卸载](#(8) 【redis】 windows环境下安装、配置、使用、卸载)
        • [(9) CentOS chkconfig的安装及使用](#(9) CentOS chkconfig的安装及使用)
        • [(10) 解决Linux局域网不能相互访问](#(10) 解决Linux局域网不能相互访问)
        • [(11) redis集群中节点fail,noaddr](#(11) redis集群中节点fail,noaddr)
      • [6. 参考文献](#6. 参考文献)

1. 问题:fail,noaddr

查看集群的节点信息

python 复制代码
192.168.1.150:8007> cluster nodes
c23a3958115789474a2b056a5cc1e507b56578f3 :0@0 master,fail,noaddr - 1698141989085 1698141985076 13 disconnected
ea191d707d0f69c2dd520cb0548f3459185b88d2 :0@0 master,fail,noaddr - 1698142013042 1698142010134 15 disconnected
72999f45b138940d65692e8f9c9f52d75df64fff :0@0 master,fail,noaddr - 1698306487358 1698306484000 11 disconnected
fd4d8f622f8775debb3f5edf007f99971ab376ca 192.168.1.33:8005@18005 master - 0 1698306681044 18 connected 12288-16383
ae08442ba278f8ad62c8f82e0a25a9ca1efbe043 192.168.1.200:8004@18004 slave ed604208cf43e7b2490ff2640ae17e0ff590ef5e 0 1698306681000 12 connected
bf352d47f8c4559b3bf54aecc0f2f75687eac4e2 192.168.1.150:8008@18008 slave fd4d8f622f8775debb3f5edf007f99971ab376ca 0 1698306680000 18 connected
97213c070778004be59498f17ce4605b6147dacc 192.168.1.33:8006@18006 slave fd4d8f622f8775debb3f5edf007f99971ab376ca 0 1698306680042 18 connected
84d4bc3e46a829df205f645867468f5ec44682e9 192.168.1.150:8007@18007 myself,slave 96c7ce1ea3a57ad49a75e857c676aee8f2fb6011 0 1698306678000 10 connected
281bf9970db59d644caa5fc6b34d0040e36544ef 192.168.1.60:8002@18002 slave 96c7ce1ea3a57ad49a75e857c676aee8f2fb6011 0 1698306682047 16 connected
ed604208cf43e7b2490ff2640ae17e0ff590ef5e 192.168.1.200:8003@18003 master - 0 1698306678039 12 connected 5461-12287
96c7ce1ea3a57ad49a75e857c676aee8f2fb6011 192.168.1.60:8001@18001 master - 0 1698306680000 16 connected 0-5460

查看集群状态,发现其中三个节点异常(是fail状态),发现它已脱离集群。

2. cluster nodes节点信息解读

cluster nodes显示的每一行信息,由下面的字段组成。

ip:port ...

2.1 每个字段的含义
  1. id: 节点ID,一个40字节的随机字符串,节点创建时生成,且不会变化(除非使用CLUSTER RESET HARD命令)。

  2. ip:port: 客户端访问的地址。

  3. flags: 逗号分隔的标记位,可能值有:myself, master, slave, fail?, fail, handshake, noaddr, noflags。

  4. master: 若是已知master节点的slave,这里出现的是master的节点ID,否则是"-"。

  5. ping-sent: 最近一次发送ping的unix毫秒时间戳,0代表没有发送过。

  6. pong-recv: 最近一次收到pong的unix毫秒时间戳。

  7. config-epoch: 该节点或其master节点的epoch值。每次故障转移都会生成一个新的,唯一的,递增的epoch值。若多个节点竞争相同的slot,epoch值大的获胜。

  8. link-state: 节点和集群总线间的连接状态,可以是connected或disconnected。

  9. slot: 该节点负责的slot。

2.2 flags字段各标记含义

myself: 当前连接的节点。

master: 节点是master。

slave: 节点是slave。

fail?: 节点处于pfail状态,当前节点无法和其联系,但其它节点可以。

fail: 节点处于fail状态,大多数节点都无法和其联系,将其由pfail升级到fail状态。

handshake: 还没完全加入集群,正在握手阶段。

noaddr: 不知道节点地址。

noflags: 没有任何标记。

3. redis集群fail,noaddr问题解决

redis版本:

python 复制代码
[root@hecs99567]$ redis-cli -v
redis-cli 5.0.8

解决方式:

登录集群并执行cluster forget 将故障节点id移除

python 复制代码
[root@hecs99567]$ redis-cli -h 192.168.1.150 -p 8007 -a 123456 -c
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
192.168.1.150:8007>
192.168.1.150:8007> cluster forget 72999f45b138940d65692e8f9c9f52d75df64fff
OK
192.168.1.150:8007> cluster forget ea191d707d0f69c2dd520cb0548f3459185b88d2
OK
192.168.1.150:8007> cluster forget c23a3958115789474a2b056a5cc1e507b56578f3
OK
192.168.1.150:8007> cluster nodes
fd4d8f622f8775debb3f5edf007f99971ab376ca 192.168.1.33:8005@18005 master - 0 1698306681044 18 connected 12288-16383
ae08442ba278f8ad62c8f82e0a25a9ca1efbe043 192.168.1.200:8004@18004 slave ed604208cf43e7b2490ff2640ae17e0ff590ef5e 0 1698306681000 12 connected
bf352d47f8c4559b3bf54aecc0f2f75687eac4e2 192.168.1.150:8008@18008 slave fd4d8f622f8775debb3f5edf007f99971ab376ca 0 1698306680000 18 connected
97213c070778004be59498f17ce4605b6147dacc 192.168.1.33:8006@18006 slave fd4d8f622f8775debb3f5edf007f99971ab376ca 0 1698306680042 18 connected
84d4bc3e46a829df205f645867468f5ec44682e9 192.168.1.150:8007@18007 myself,slave 96c7ce1ea3a57ad49a75e857c676aee8f2fb6011 0 1698306678000 10 connected
281bf9970db59d644caa5fc6b34d0040e36544ef 192.168.1.60:8002@18002 slave 96c7ce1ea3a57ad49a75e857c676aee8f2fb6011 0 1698306682047 16 connected
ed604208cf43e7b2490ff2640ae17e0ff590ef5e 192.168.1.200:8003@18003 master - 0 1698306678039 12 connected 5461-12287
96c7ce1ea3a57ad49a75e857c676aee8f2fb6011 192.168.1.60:8001@18001 master - 0 1698306680000 16 connected 0-5460

4. cluster指令

bash 复制代码
# 先删除7003 节点
CLUSTER FORGET <node_id> 从集群中移除 node_id 指定的节点。
# 在将7003加入到集群中
CLUSTER MEET <ip> <port> 将 ip 和 port 所指定的节点添加到集群当中,让它成为集群的一份子。 

全部指令通过cluster help查询

python 复制代码
192.168.1.150:8007> cluster help
 1) CLUSTER <subcommand> arg arg ... arg. Subcommands are:
 2) ADDSLOTS <slot> [slot ...] -- Assign slots to current node.
 3) BUMPEPOCH -- Advance the cluster config epoch.
 4) COUNT-failure-reports <node-id> -- Return number of failure reports for <node-id>.
 5) COUNTKEYSINSLOT <slot> - Return the number of keys in <slot>.
 6) DELSLOTS <slot> [slot ...] -- Delete slots information from current node.
 7) FAILOVER [force|takeover] -- Promote current replica node to being a master.
 8) FORGET <node-id> -- Remove a node from the cluster.
 9) GETKEYSINSLOT <slot> <count> -- Return key names stored by current node in a slot.
10) FLUSHSLOTS -- Delete current node own slots information.
11) INFO - Return onformation about the cluster.
12) KEYSLOT <key> -- Return the hash slot for <key>.
13) MEET <ip> <port> [bus-port] -- Connect nodes into a working cluster.
14) MYID -- Return the node id.
15) NODES -- Return cluster configuration seen by node. Output format:
16)     <id> <ip:port> <flags> <master> <pings> <pongs> <epoch> <link> <slot> ... <slot>
17) REPLICATE <node-id> -- Configure current node as replica to <node-id>.
18) RESET [hard|soft] -- Reset current node (default: soft).
19) SET-config-epoch <epoch> - Set config epoch of current node.
20) SETSLOT <slot> (importing|migrating|stable|node <node-id>) -- Set slot state.
21) REPLICAS <node-id> -- Return <node-id> replicas.
22) SLOTS -- Return information about slots range mappings. Each range is made of:
23)     start, end, master and replicas IP addresses, ports and ids

5. 相关文章

(1) redis集群搭建

redis集群搭建

(2) 华为云两台机器内网互联

华为云两台机器内网互联

(3) /etc/rc.d/init.d 详解|程序开机自启

/etc/rc.d/init.d 详解|程序开机自启

(4) Redis5.0+ Redis集群水平扩容|节点删除

Redis5.0+ Redis集群水平扩容|节点删除

(5) 三台机器搭建redis集群过程及问题记录

三台机器搭建redis集群过程及问题记录

(6) redis5.0集群搭建(两台服务器)

redis5.0集群搭建(两台服务器)

(7) Linux安装部署Redis

Linux安装部署Redis

(8) 【redis】 windows环境下安装、配置、使用、卸载

【redis】 windows环境下安装、配置、使用、卸载

(9) CentOS chkconfig的安装及使用

CentOS chkconfig的安装及使用

(10) 解决Linux局域网不能相互访问

解决Linux局域网不能相互访问

(11) redis集群中节点fail,noaddr

redis集群中节点fail,noaddr

6. 参考文献

https://blog.csdn.net/ximaiyao1984/article/details/130616598

https://blog.csdn.net/zzhongcy/article/details/119914677

相关推荐
Kagol3 小时前
macOS 和 Windows 操作系统下如何安装和启动 MySQL / Redis 数据库
redis·后端·mysql
hzulwy3 小时前
Redis常用的数据结构及其使用场景
数据库·redis
ashane13145 小时前
Redis 哨兵集群(Sentinel)与 Cluster 集群对比
redis
Y第五个季节6 小时前
Redis - HyperLogLog
数据库·redis·缓存
Justice link6 小时前
企业级NoSql数据库Redis集群
数据库·redis·缓存
爱的叹息9 小时前
Spring Boot 集成Redis 的Lua脚本详解
spring boot·redis·lua
morris13117 小时前
【redis】redis实现分布式锁
数据库·redis·缓存·分布式锁
爱的叹息19 小时前
spring boot集成reids的 RedisTemplate 序列化器详细对比(官方及非官方)
redis
weitinting19 小时前
Ali linux 通过yum安装redis
linux·redis
纪元A梦20 小时前
Redis最佳实践——首页推荐与商品列表缓存详解
数据库·redis·缓存