Redis Hochverfügbarkeit und Lastausgleich

8

Ich verwende Redis seit einiger Zeit und jetzt möchten wir zu einem redundanten Cluster wechseln, der fehlertolerant, hochverfügbar und lastausgeglichen ist.

Ich verwende Redis hauptsächlich für eine PHP-Webanwendung, in der einige Prozessstatusinformationen gespeichert sind (ich verwende hierfür PHPRedis), und ich möchte es auch für den PHP-Sitzungsspeicher in einem Cluster mit Lastenausgleich verwenden.

Ich habe bereits einen Load Balancing, den ich für Nginx und MySQL verwende (basierend auf pfSense).

Ich habe gesehen, dass Redis Cluster für Redis 3 existiert, aber ich habe auch einige Kommentare darüber gelesen, dass es nicht für die Produktion bereit ist, andere, die besagen, dass Redis keine vollständige Master / Master-Cluster-Konfiguration durchführen kann.

Was raten Sie?

  • Versuchen Sie es mit Redis Cluster
  • Wechseln Sie zu einer anderen key = value-Engine (CouchDB? Memcached? Others?)
  • Machen Sie sich nichts aus dem Lastenausgleich und verwenden Sie nur einen Knoten des Clusters pro Zeit sowie ein manuelles Failover, da ich keine Persistenz verwende
  • Andere Ideen?

Vielen Dank für Ihre Hilfe!

Matte
quelle

Antworten:

5

Mit Redis Sentinel können Sie mehrere Instanzen von Redis ausführen und das Failover für Sie durchführen. http://redis.io/topics/sentinel

Jim G.
quelle
1
//, Mat, hat es funktioniert?
Nathan Basanese
3
In der Frage wird speziell der Lastausgleich erwähnt, was Sentinel nicht tut. Sie sollten dies zumindest in Ihrem Kommentar ansprechen.
Adam Lassek
1

Eine naheliegende Lösung für Redis im Lastausgleich ist die Verwendung von Sentinel .

Soweit ich sehen kann, unterstützt predis Sentinel derzeit nicht. Sehen:

https://github.com/nrk/predis/issues/131

Eine mögliche Lösung kann Redis Sentinel + HAProxy-Failover sein, wenn Sie weiterhin Predis verwenden möchten.

Kim
quelle
@ Pierre.Vriens Vielleicht folge ich dir nicht richtig, aber soweit ich sehe, ist die Frage, wie man Redis ausbalanciert. Ich weise darauf hin, dass eine offensichtliche Lösung wie Sentinel bei Verwendung von Predis nicht funktioniert. Möglicherweise war das aus meiner Antwort nicht klar.
Kim
ok, das hilft ein bisschen, deine Antwort besser zu verstehen. Ich denke, Sie sollten es bearbeiten, um es auch irgendwie darin zu integrieren (und dann Ihren Kommentar löschen).
Pierre.Vriens