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

Shi*_*esh 7 java tomcat high-availability redis apache-zookeeper

我有一个使用Redis Tomcat会话管理器的应用程序,以便连接到Redis服务器以外部化会话.由于我们的目标是高可用性,因此我们希望以分布式方式运行Redis主从配置.我们成功地能够在具有多个主从配置的单个服务器中实现它,我们使用sentinal来实现它.

当我们从单个服务器迁移到多个服务器环境时,我们的问题就出现了,即考虑我们有服务器s1,s2,s3和master在s1中运行,而s2和s3运行从属进程.每当s1主机死机时,Sentinal很容易切换,但我们的应用程序完全不知道切换并继续指向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) --> />
Run Code Online (Sandbox Code Playgroud)

如何与这种情况相处并增加可用性.我读了一些带有zookeeper的插件,但没有读过Java,甚至不知道我们将如何实现相同的插件.

如有需要,请随时询问任何说明.

Rob*_*don 1

您可能想看看 HAProxy。几天前,我在 Windows Azure 中设置高可用性 Redis 服务时遇到了类似的情况。我在这里记录了如何执行此操作:

http://robertianhawdon.me.uk/2014/02/11/sysops-installing-a-high-availability-redis-service-on-centos-6-x-in-windows-azure/

干杯