redis 集群 踩坑

场景: redis集群三主三从, jedis接入,  只配置三个主节点

问题: 服务更新部署,发现连不上redis集群.包connection refused.

排查:

  1. 首先确定redis节点是否存在问题, redis-cli在当前服务器没有安装,使用telnet ip port进行测试, 发现三个节点中部分节点存在问题, 不能连接.
  2. 找运维确认节点状态,表示之前节点故障, 主从自动替换.
  3. 服务重启前运行正常, 重启出现问题,无法回滚.

发现:

  1. redis集群自动主从替换,服务无感知, 和下线节点之间的连接会自动和新节点建立连接
  2. 服务重新启动,服务会重新和配置中的ip建立连接,此步骤出错

解决方案:

jedis集群在添加节点时, 并不验证节点的可用性,需要我们在初始化的时候,自行进行校验,于是在cluster添加节点前,使用redis包自带的Connection进行校验.

import redis.clients.jedis.Connection;

private boolean validateConnection(String host, int port) {
        Connection connection = new Connection(host, port);
        try {
            connection.connect();
        } catch (Exception e) {
            log.error("failed get connection with ip {}, port {}", host, port);
            return false;
        } finally {
            connection.close();
        }
        return true;
}

可建立连接的节点,添加到集群中.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值