本文介绍: 本身redisserver也是默认只在主节点读写,如果用rediscli连接就能发现读写任何key都会自动跳转到主节点,而不会在从节点。看153的redisserver日志错误日志,157是报错节点对应的主节点说明节点连不上节点。但redisson配置的是从节点读、主节点写,所以导致加锁执行exists命令时 到问题节点读取失败解决方式,把redisson配置为主节点读写不在从节点读,去除从节点不稳定影响场景使用redisson锁,redisserver集群方式,三主三从。

问题现象

场景使用redisson锁,redisserver集群方式,三主三从

错误信息有:

Unable to write command into connection! Increase connection pool size. Node source: NodeSource [slot=5073, addr=null, redisClient=null, redirect=null, entry=null], connection: RedisConnection@1161754400 [redisClient=[addr=redis://172.21.75.153:6379], channel=[id: 0x8490cd34, L:0.0.0.0/0.0.0.0:33988 ! R:172.21.75.153/172.21.75.153:6379], currentCommand=null, usage=1], command: (EXISTS), params: [redisLock_serviceLock] after 3 retry attempts

org.redisson.client.RedisConnectionException: SlaveConnectionPool no available Redis entries. Master entry host: 172.21.75.157/172.21.75.157:6379 Disconnected hosts: [172.21.75.157/172.21.75.157:6379] Hosts disconnected due to errors during `failedSlaveCheckInterval`: [172.21.75.153/172.21.75.153:6379]

org.redisson.client.RedisConnectionException: SlaveConnectionPool no available Redis entries. Master entry host: 172.21.75.157/172.21.75.157:6379 Disconnected hosts: [172.21.75.157/172.21.75.157:6379, 172.21.75.153/172.21.75.153:6379]

redisson 官方github升级版本,但这已经是20版本

排查方式

报错信息连不上153,报错命令exists,很明显是加锁使用exists命令,到153节点读取失败

 看153的redis-server日志,错误日志,157是报错从节点对应的主节点:说明从节点连不上主节点

3759119:S 06 May 2023 13:43:04.123 # Cluster state changed: fail
3759119:S 06 May 2023 13:43:42.325 # MASTER timeout: no data nor PING received...
3759119:S 06 May 2023 13:43:42.325 # Connection with master lost.
3759119:S 06 May 2023 13:43:42.325 * Caching the disconnected master state.
3759119:S 06 May 2023 13:43:42.325 * Connecting to MASTER 172.21.75.157:6379
3759119:S 06 May 2023 13:43:42.325 # Unable to connect to MASTER: Network is unreachable
3759119:S 06 May 2023 13:43:43.327 * Connecting to MASTER 172.21.75.157:6379
3759119:S 06 May 2023 13:43:43.327 # Unable to connect to MASTER: Network is unreachable
3759119:S 06 May 2023 13:43:44.329 * Connecting to MASTER 172.21.75.157:6379
3759119:S 06 May 2023 13:43:44.329 # Unable to connect to MASTER: Network is unreachable
3759119:S 06 May 2023 13:43:45.331 * Connecting to MASTER 172.21.75.157:6379
3759119:S 06 May 2023 13:43:45.331 # Unable to connect to MASTER: Network is unreachable

 解决方式

排查redis-server日志发现  redis集群从节点出现问题一个从节点和其主节点网络连接问题,但这个从节点却和其他节点通信正常,所以这个从节点没有被踢出集群

redisson配置的是从节点读、主节点写,所以导致加锁执行exists命令时 到问题节点读取失败

解决方式,把redisson配置为主节点读写不在从节点读,去除从节点不稳定影响

本身redis-server也是默认只在主节点读写,如果用redis-cli连接就能发现读写任何key都会自动跳转到主节点,而不会在从节点。从节点只是为主节点宕机、替换主节点使用

BaseConfig baseConfig;
baseConfig = config.setCodec(JsonJacksonCodec.INSTANCE)
                            .useClusterServers().addNodeAddress(xxx)
                    .setReadMode(ReadMode.MASTER)

备注

多次redis集群主从切换观察看,redis集群某节点出问题、或网络问题时,redis集群会自己完成主从切换,并且redisson客户端会主动感知到集群状态,并对新的主节点、或从节点初始化新的连接(从redisson日志能观察到),所以客户端需要什么

如果出了类似问题,说明集群某个节点出了问题、而且没有完成踢出节点、或者主从切换,集群本身状态有问题。

原文地址:https://blog.csdn.net/u014203449/article/details/130953048

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_33276.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注