2014-01-13 37 views
6

我有一個應用程序使用Redis Tomcat Session Manager連接到Redis服務器以便將會話外部化。由於我們的目標是高可用性,我們希望以分佈式方式運行Redis主從配置。我們成功地在一臺具有多個主從配置的服務器上實現它,並且我們使用sentinal來實現。Redis - 處理故障轉移和負載平衡?

當我們從一臺服務器到多服務器環境中移動,即考慮我們有服務器S1我們的問題開始,S2,S3和主運行在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) --> /> 

如何這種情況相處,提高可用性。我用zookeeper讀了一些插件,但沒有用於Java,甚至不知道我們將如何實現它。

請隨時在需要時問任何澄清。

+0

我沒有完成它自己,所以我不知道所有的細節粗糙,但我認爲[人成功地進行故障轉移(http://www.jambr.co.uk/Article/redis-twemproxy-代理)與[twemproxy](https://github.com/twitter/twemproxy)。 – kuporific

+0

@kuporific好的,我看到的是這個代理能夠切換沒有sentinal。 –

+1

我不這麼認爲。很抱歉,如果不清楚,但我的第一條評論中隱藏了兩個鏈接,我會重複一遍,以便更明顯:http://www.jambr.co.uk/Article/redis-twemproxy-agent和https:/ /github.com/twitter/twemproxy – kuporific

回答

1

前哨輕鬆處理超過每當S1主模具,但我們的應用程序是完全不知道的開關上,並不斷指着一個開關s1服務器的IP,而現在的主服務器是s2

嘗試Redisson它會自動更新Redis拓撲,尤其是處理您的情況下的主更改。它還支持Single/Sentinel/Cluster和AWS Elasticache模式,當然還支持Tomcat Session Manager

相關問題