开发者社区> 问答> 正文

关于SLB连接重建的问题

目前的想法是想做DB类服务的高可用(如redis):
原理:前端应用通过SLB VIP访问redis,SLB后端配置一个redis master和若干redis slave,SLB初始配置master权重100,所有slave的权重配置为0(即只有master提供读写服务)
在redis主挂掉后,将某个slave提升为master,此时通过SLB的API将新master的权重调整为100,并将原master的权重调整为0


但是这里存在一个问题:
如果应用使用长连接连接到redis,那么我们调整SLB的访问权重并不会对这些已有的链接造成影响(特别是master短时间内又恢复的场景),即可能导致一部分已有的链接还是连接在原来的master上,更致命的是,此时的SLB的健康检查是OK的(因为此时原master只是无法写入,但是是可以telnet通的),因此应用侧会报无法写入的错误,而SLB还是将请求转发到原master,




目前想到的解决办法就是:
在slave提升为master之后,直接将原master关闭,或者将原master上的所有连接都kill掉,强制让应用侧进行断线重连,但是貌似不够优雅


PS:不要说让我使用阿里云的RDS for redis之类的,目前我们都是自建的,暂时不会使用这个,所以,小伙伴们有什么好的解决方法吗?

展开
收起
redcatmiss 2016-10-27 11:08:57 4242 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
《应用型负载均衡ALB产品解读》 立即下载
阿里云网络-SLB负载均衡产品介绍 立即下载
负载均衡SLB热点问题解答 立即下载