簡體   English   中英

Redis - 處理故障轉移和負載平衡?

[英]Redis - Handling Failover and Load Balancing?

我有一個使用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) --> />

如何與這種情況相處並增加可用性。 我讀了一些帶有zookeeper的插件,但沒有讀過Java,甚至不知道我們將如何實現相同的插件。

如有需要,請隨時詢問任何說明。

你可能想看看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/

干杯

每當s1主機死機時,Sentinal很容易切換,但是我們的應用程序完全不知道切換並繼續指向s1服務器的IP而主機現在是s2

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM