predixy icon indicating copy to clipboard operation
predixy copied to clipboard

关于predixy运行在容器内代理云化redis集群

Open lehy786 opened this issue 3 years ago • 11 comments

背景: 我们在容器云内部署redis集群,redis版本为5.0,打包predixy最新release-1.0.5作为代理,redis+predixy整套环境部署于容器云内。

部署情况: redis-operator调度redis各实例,redis集群为3*3的cluster。predixy作为deployment部署,replica=2,通过LB对外提供服务。

predixy配置:

    ClusterServerPool {
        Password xxxxxxxxx
        MasterReadPriority 60
        StaticSlaveReadPriority 50
        DynamicSlaveReadPriority 50
        RefreshInterval 1
        ServerTimeout 30
        ServerFailureLimit 10
        ServerRetryTimeout 1
        KeepAlive 120
        Servers {
          + redis-slave-2.redis-slave.redis-community:6379
          + redis-slave-1.redis-slave.redis-community:6379
          + redis-slave-0.redis-slave.redis-community:6379
          + redis-master-2.redis-master.redis-community:6379
          + redis-master-1.redis-master.redis-community:6379
          + redis-master-0.redis-master.redis-community:6379
        }
    }

遇到问题: 代理可正常使用,但podIP变换时日志报错:

2020-06-11 01:38:47.720983 N Handler.cpp:265 server 10.177.69.33:6379 mark failure
2020-06-11 01:38:47.720986 N Handler.cpp:276 h 10 close s 10.177.69.33:6379 and c None -1 with status 4 EventError

并且info查看统计信息, 会同时包含redis-slave-2.redis-slave.redis-community:637910.177.69.33:6379,节点重调度后的newPodIP会增加到info输出,但旧的节点不不会清除,而标记CurrentIsFail为1(至此表示同一个节点的server统计信息有3个):

Server:10.177.69.33:6379  // old podIP
//...
CurrentIsFail:1
// ...

Server:10.177.70.13:6379  // new podIP
// ...
CurrentIsFail:0
// ...

Server:redis-slave-2.redis-slave.redis-community:6379  // pod DNS
// ...
CurrentIsFail:0
// ...

当redis的pod重新调度变换IP时,predixy能重新发现新IP并加入连接;但旧的失效IP不会剔除,并重复检测且reopen连接,导致一直重复report xxx mark failure。 另外查看代码,发现clusterServerPool等池子保存的mServPool等容器的capacity最高为2048,若容器重复调度,使得重新加入连接列表的server达到2048,是否就直接导致predixy不可用,需要重启释放了?

求解答,不胜感谢! @fortrue

lehy786 avatar Mar 09 '21 02:03 lehy786

是,predixy没有考虑你这种场景

fortrue avatar Apr 01 '21 14:04 fortrue

我也遇到这个问题了。暂时无解,通过固定POD IP 来避免的。 另外redis上容器之后,你有没有遇到过 maxmemory 设置的10g,pod mem limit 设置的15G,运行一段时间之后,pod 内存涨到15G 被k8s kill 的情况呢。我们这边在大规模的使用容器redis,上千个实例,遇到好多坑, 可以交流一下 ,fuzengjie 我的微信号

fuzengjie avatar Sep 11 '21 02:09 fuzengjie

我也遇到这个问题。插眼

xtay573269555 avatar Nov 15 '21 09:11 xtay573269555

同样的问题,pod被重新调度后,数据可以get但无法set,错误:(error) ERR no server connection avaliable

walk1ng avatar Dec 16 '21 06:12 walk1ng

大家都是这个问题哈。。。

okooo00 avatar Dec 17 '21 03:12 okooo00

我们也有类似问题,试下这个办法

xiebincc avatar Jan 25 '22 05:01 xiebincc

想问一下,这个问题有解吗,目前出现的比较多

longshen123 avatar Jul 20 '22 08:07 longshen123

redis 7.x 已经开始支持使用域名搭建集群了。试试吧

xtay573269555 avatar Jul 25 '22 07:07 xtay573269555

你好,我这边的问题不是因为ip改变造成的err,是运行时间长之后发生的只能get,不能set操作,后端redis的服务是正常的,应该是因为上面有人说的那个mserverpool为2048,您这边有什么头绪吗?困扰我很久了,这就是个定时炸弹

------------------ 原始邮件 ------------------ 发件人: "joyieldInc/predixy" @.>; 发送时间: 2022年7月25日(星期一) 下午3:00 @.>; @.@.>; 主题: Re: [joyieldInc/predixy] 关于predixy运行在容器内代理云化redis集群 (#128)

redis 7.x 已经开始支持使用域名搭建集群了。试试吧

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>

longshen123 avatar Jul 25 '22 07:07 longshen123

@longshen123 你没有加微信吗?要不拉个微信群,便于及时沟通啊 :-)

xiaokai-wang avatar Jul 28 '22 06:07 xiaokai-wang

好的,我有微信啊,clong521369,麻烦加我一下

------------------ 原始邮件 ------------------ 发件人: "joyieldInc/predixy" @.>; 发送时间: 2022年7月28日(星期四) 下午2:51 @.>; @.@.>; 主题: Re: [joyieldInc/predixy] 关于predixy运行在容器内代理云化redis集群 (#128)

@longshen123 你没有加微信吗?要不拉个微信群,便于及时沟通啊 :-)

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you were mentioned.Message ID: @.***>

longshen123 avatar Jul 28 '22 07:07 longshen123