美文网首页
redis虚拟机迁移到其他实体机导致集群故障

redis虚拟机迁移到其他实体机导致集群故障

作者: 读或写 | 来源:发表于2018-10-25 18:22 被阅读0次

    情况描述:
    三主三从原生集群,rhel6.8 64位机器,redis版本为3.2.8,redis的gem文件版本为3.3.3,ruby版本为2.4.0,gem版本为2.6.10,zlib版本为1.2.11,openssl版本为1.0.1e-fips。

    由于物理机故障,需要将该物理机上的两个redis节点迁移到其他物理机。迁移过程如下:
    1、确保这两个节点为slave后,若不是,则需进行切换操作
    2、停止两个节点的redis服务,关闭操作系统
    3、复制虚拟机硬盘文件到新的物理机上。
    4、配置好网络,保持ip不变。启动redis服务

    发现新启动的redis已经不能加入集群中了,id变了。这有个疑问,为什么迁移前,只要不清理集群nodes配置文件,不管怎么重启redis,id都不会变。这迁移了位置,启动后id就变更了,难道跟mac地址或者其他什么因素导致的?

    此时查看集群配置信息:cat nodes-7654.conf
    可以看到有两个节点连接失败,且新启动的redis服务,用redis-trib.rb检测,他本身是master。

    此时解决方法是:添加节点,将重启的redis节点当做新节点加入,角色为slave
    其中--master-id为他要复制的哪一个master节点的id。
    第一个ip:port为即将加入的节点的
    第二个ip:port为集群中已存在节点的
    redis-trib.rb add-node --slave --master-id f3ac25b069b4ebd504173d26244f728ddb7db329 10.0.10.13:7654 10.0.10.15:7654
    redis-trib.rb add-node --slave --master-id f6947ac9a33d2c90034f5b35f3e8751d09492be8 10.0.10.16:7654 10.0.10.15:7654

    基于安全的考虑,让10.0.10.16在加入后,切换成了master角色,此时查看集群配置信息为:
    ae7bbe241aa178747d99a866fe56523a871417b1 10.0.10.16:7654 master - 0 1540459238280 11 connected 10923-16383
    f3ac25b069b4ebd504173d26244f728ddb7db329 10.0.10.17:7654 myself,master - 0 0 10 connected 0-5460
    f6947ac9a33d2c90034f5b35f3e8751d09492be8 10.0.10.15:7654 slave ae7bbe241aa178747d99a866fe56523a871417b1 0 1540459239686 11 connected
    91a92235a9bd592109e3adbd7ddcd9f794708576 :0 slave,fail,noaddr f3ac25b069b4ebd504173d26244f728ddb7db329 1540456267274 1540456266471 10 disconnected<<<<<<<<<<<<<<<<<<<<<连接失败
    d9514583f6bb4c3850d4b5a87d47f6e2b0b4a8aa :0 slave,fail,noaddr f6947ac9a33d2c90034f5b35f3e8751d09492be8 1540456271394 1540456270390 6 disconnected<<<<<<<<<<<<<<<<<<<<<连接失败
    cb5588ad114b75e5db4445f5a723ea52173baf65 10.0.10.18:7654 master - 0 1540459239183 9 connected 5461-10922
    b9d4d483d42fc9a007cc0f034bff5ebec83c4fa0 10.0.10.13:7654 slave f3ac25b069b4ebd504173d26244f728ddb7db329 0 1540459239686 10 connected
    b262698141699417bb3b92ab0cc1f298d59a8cd2 10.0.10.14:7654 slave cb5588ad114b75e5db4445f5a723ea52173baf65 0 1540459239183 9 connected

    可以看到配置中有两个失效的节点信息,通过cluster forget或者redis-trib.rb del-node都不能删除,报错节点不存在,可以通过以下方法解决:
    删除所有节点的集群nodes配置信息,然后登陆每一个节点运行cluster saveconfig名,新生成配置文件。
    cd /u01/redis/3.2.8/data/7654/
    rm -rf nodes-7654.conf

    redis-cli -c -h 10.0.10.13 -p 16963 CLUSTER SAVECONFIG
    redis-cli -c -h 10.0.10.14 -p 16963 CLUSTER SAVECONFIG
    redis-cli -c -h 10.0.10.15 -p 16963 CLUSTER SAVECONFIG
    redis-cli -c -h 10.0.10.16 -p 16963 CLUSTER SAVECONFIG
    redis-cli -c -h 10.0.10.17 -p 16963 CLUSTER SAVECONFIG
    redis-cli -c -h 10.0.10.18 -p 16963 CLUSTER SAVECONFIG

    相关文章

      网友评论

          本文标题:redis虚拟机迁移到其他实体机导致集群故障

          本文链接:https://www.haomeiwen.com/subject/couctqtx.html