Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
lehy786 opened this issue Mar 9, 2021 · 11 comments
Open

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

lehy786 opened this issue Mar 9, 2021 · 11 comments

Comments

@lehy786
Copy link

lehy786 commented Mar 9, 2021

背景:
我们在容器云内部署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

@fortrue
Copy link
Member

fortrue commented Apr 1, 2021

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

@fuzengjie
Copy link

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

@xtay573269555
Copy link

我也遇到这个问题。插眼

@walk1ng
Copy link

walk1ng commented Dec 16, 2021

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

@okooo00
Copy link

okooo00 commented Dec 17, 2021

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

@xiebincc
Copy link

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

@longshen123
Copy link

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

@xtay573269555
Copy link

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

@longshen123
Copy link

longshen123 commented Jul 25, 2022 via email

@xiaokai-wang
Copy link

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

@longshen123
Copy link

longshen123 commented Jul 28, 2022 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

9 participants