Redis - 处理故障转移和负载均衡?

7
我有一个应用程序,使用Redis Tomcat Session Manager连接到Redis服务器以将会话外部化。由于我们的目标是高可用性,所以我们想要以分布式方式运行Redis主从配置。我们可以在单个服务器上成功地实现多个主从配置,并使用sentinel来完成。
当我们从单个服务器转移到多个服务器环境时,问题就开始了,即假设我们有s1、s2、s3服务器,其中Master在s1上运行,而s2和s3运行从进程。Sentinel很容易在s1主服务器停止运行时进行切换,但我们的应用程序完全不知道切换,并继续指向s1服务器的IP地址,而主服务器现在是s2。如何解决这个问题并如何提高可用性。
我们在Apache Tomcat中所做的配置更改在Server.xml文件中,并且如下:
<Valve className="com.radiadesign.catalina.session.RedisSessionHandlerValve" />
<Manager className="com.radiadesign.catalina.session.RedisSessionManager"
         host="localhost" <!-- optional: defaults to "localhost" -->
         port="6379" <!-- optional: defaults to "6379" -->
         database="0" <!-- optional: defaults to "0" -->
         maxInactiveInterval="60" <!-- optional: defaults to "60" (in seconds) --> />

如何处理这种情况并提高可用性。我阅读了一些与zookeeper相关的插件,但没有Java版本的,甚至不知道如何实现相同的功能。
如果需要任何澄清,请随时提问。

我自己没有做过,所以不知道所有的细节,但我认为人们正在成功地使用twemproxy进行故障转移。参考链接:http://www.jambr.co.uk/Article/redis-twemproxy-agent。 - kuporific
@kuporific 好的,我明白了。这个代理能否在没有 Sentinel 的情况下进行切换? - Shiv Kumar Ganesh
1
我不这么认为。如果我的第一条评论不清楚的话,很抱歉,里面有两个隐藏链接,我来重复一下以便更加明显:http://www.jambr.co.uk/Article/redis-twemproxy-agent 和 https://github.com/twitter/twemproxy。 - kuporific
2个回答

1

1
Sentinal可以轻松地在s1主服务器死亡时进行切换,但我们的应用程序完全不知道切换,并继续指向s1服务器的IP地址,而现在的主服务器是s2。
尝试使用Redisson,它会自动更新Redis拓扑结构,特别是处理像您这样的主服务器更改。它还支持单节点/哨兵/集群和AWS Elasticache模式,并且当然实现了Tomcat Session Manager

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接