predixy
predixy copied to clipboard
关于predixy运行在容器内代理云化redis集群
背景: 我们在容器云内部署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:6379
与10.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
是,predixy没有考虑你这种场景
我也遇到这个问题了。暂时无解,通过固定POD IP 来避免的。 另外redis上容器之后,你有没有遇到过 maxmemory 设置的10g,pod mem limit 设置的15G,运行一段时间之后,pod 内存涨到15G 被k8s kill 的情况呢。我们这边在大规模的使用容器redis,上千个实例,遇到好多坑, 可以交流一下 ,fuzengjie 我的微信号
我也遇到这个问题。插眼
同样的问题,pod被重新调度后,数据可以get但无法set,错误:(error) ERR no server connection avaliable
大家都是这个问题哈。。。
我们也有类似问题,试下这个办法
想问一下,这个问题有解吗,目前出现的比较多
redis 7.x 已经开始支持使用域名搭建集群了。试试吧
你好,我这边的问题不是因为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 你没有加微信吗?要不拉个微信群,便于及时沟通啊 :-)
好的,我有微信啊,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: @.***>