weixin_39654465
weixin_39654465
2020-12-31 02:10

在k8s中部署redis集群,连接后报Connection was not opened

代码很简单,控制台程序

cs
class Program
    {
        static void Main(string[] args)
        {
            var csredis = new CSRedisClient("172.16.80.220:30033,password=Weck33,ssl=false,preheat=5");
            //var csredis = new CSRedisClient("127.0.0.1:6379,ssl=false,preheat=5");
            RedisHelper.Initialization(csredis);

            Test();
            Console.ReadLine();
        }

        static void Test()
        {
            RedisHelper.Set("name", "fuck");
            Console.WriteLine(RedisHelper.Get<string>("name"));
        }
    }
</string>

用的 CSRedisCore3.1.5.

如果连本地的redis则不会有任何问题,连到本地k8s里部署的redis集群就会报这个错误。

该提问来源于开源项目:2881099/csredis

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

6条回答

  • weixin_39654465 weixin_39654465 4月前
    
    PS C:\windows\system32> redis-cli -h 172.16.80.220 -p 30033
    172.16.80.220:30033> cluster nodes
    2d0b2d740ca294b017bb25cc8b1699e2d2ddfa3c 172.17.0.8:6379 master - 0 1567335511582 1 connected 0-16383
    7a55fad7229ca880c7d4976dc9f6ff54d74cd1da 172.17.0.10:6379 slave 2d0b2d740ca294b017bb25cc8b1699e2d2ddfa3c 0 1567335512586 1 connected
    c9362837f4a2e84f49f1be9ed329d7960e22ed4c 172.17.0.9:6379 myself,slave 2d0b2d740ca294b017bb25cc8b1699e2d2ddfa3c 0 1567335512000 0 connected
    
    点赞 评论 复制链接分享
  • weixin_39546312 weixin_39546312 4月前

    172.17.0.10:6379 因为连这几个内部节点去了

    点赞 评论 复制链接分享
  • weixin_39654465 weixin_39654465 4月前

    刚才确实是有点问题,但是我把service只指向master节点后,依然还是报这个错误。

    
    172.16.80.220:30033> cluster nodes
    7a55fad7229ca880c7d4976dc9f6ff54d74cd1da 172.17.0.10:6379 slave 2d0b2d740ca294b017bb25cc8b1699e2d2ddfa3c 0 1567343430688 1 connected
    c9362837f4a2e84f49f1be9ed329d7960e22ed4c 172.17.0.9:6379 slave 2d0b2d740ca294b017bb25cc8b1699e2d2ddfa3c 0 1567343429681 1 connected
    2d0b2d740ca294b017bb25cc8b1699e2d2ddfa3c 172.17.0.8:6379 myself,master - 0 1567343429000 1 connected 0-16383
    

    这时我用stackexchange.redis就可以成功

    cs
            static void Main1(string[] args)
            {
                var log = new StringWriter();
                var redis = ConnectionMultiplexer.Connect("172.16.80.220:30033,password=Weck33,abortConnect=False,resolvedns=1", log);
    
                var logOutput = log.ToString();
    
                var db = redis.GetDatabase();
                db.StringSet("q", "f");
    
                Console.WriteLine($"a:{db.StringGet("a")}");
                Console.ReadLine();
            }
    
    点赞 评论 复制链接分享
  • weixin_39546312 weixin_39546312 4月前

    testcluster=false

    加这个试下

    点赞 评论 复制链接分享
  • weixin_39546312 weixin_39546312 4月前

    172.17.0.10:6379 172.17.0.9:6379 172.17.0.8:6379

    这三个节点能访问吗? k8s 这个环境是不是像腾讯云那样的集群,只需要访问外部节点就行,即就像普通模式一样连接?

    点赞 评论 复制链接分享
  • weixin_39654465 weixin_39654465 4月前

    非常感谢,加上testcluster=false就好了。

    点赞 评论 复制链接分享

相关推荐