redis3主3从集群一般对于中小互联网企业是够用的了,也保留了扩展6主6从的空间。之前办公测试环境中有一套redis3主3从集群,为了扩展也测试了6主6从,而后将测试云主机删掉了。但是,在cluster nodes信息中留下了6个fail信息。看着挺别扭的。
搜索资料可以如下方式删除:
../../src/redis-trib.rb del-node 192.168.124.102:7010 0f38ec60781919ed7c15c386a711e72a3f43bd81
但是,需要该节点在线才行,否则会得到报错,大概内容是无法连接该节点。
使用gpt询问,还有一种办法。使用redis-cli登录任一redis节点,然后执行cluster forget fail节点id。但是呢,如果只在1个redis节点执行是不行的,需要在所有节点执行。
一共6个节点,每个节点执行6个命令,妥妥的两个循环。
#!/bin/env python3
nodes=["192.168.124.200:7000", "192.168.124.200:7001","192.168.124.179:7002","192.168.124.179:7003","192.168.124.180:7004","192.168.124.180:7005"]
commands=[]
commands.append("cluster forget 0f38ec60781919ed7c15c386a711e72a3f43bd81")
commands.append("cluster forget d9798113e286484abc1b32d6dbae218bc60ee4f4")
commands.append("cluster forget 986f2fc487b0449a9f62cfea7c333cec858d6e23")
commands.append("cluster forget 87b6515fe84944ffa10dfe9c1abb3daa21bfdf6b")
commands.append("cluster forget 034f7dcd918e5eb1596aca04fec740f628ad6408")
commands.append("cluster forget a0fe17bcf0cb2af63fca33d2456edcbb78bb6579")
for node in nodes:
# print(node)
for command in commands:
# print(command)
node_split = node.split(":")
result = f"/opt/machtalk/redis/src/redis-cli -h {node_split[0]} -p {node_split[1]} -a xxx {command}"
print(result)
# 如需检查,使用如下命令
#print(f"/opt/machtalk/redis/src/redis-cli -h {node_split[0]} -p {node_split[1]} -a xxx cluster nodes")
break
print("\n")
执行成功后,过一段时间看看,然后再看看,发现fail的节点已经彻底消失了。