Ich lese eine Menge Dokumentation zu Redis-Netzwerkkonfigurationen und bin verwirrt darüber, wie es scheint, dass die Anforderungen in meinem Architektur-Mental-Modell nicht mit den aktuellen Optionen übereinstimmen.
Erstens: Ich brauche keine Scherben, weil die Skalierbarkeit im Moment kein Thema ist. Also erstmal ein Master (Knoten M).
Zweitens: Ich möchte Redundanz, dh, wenn ein Master-Knoten ausfällt, möchte ich, dass ein zweiter Knoten die Anforderungen übernimmt, die der Client an ihn sendet. Nennen wir dies den ersten Slave: den Failover-Slave (Knoten FS).
Drittens: Ich möchte auch einen anderen Replikatknoten, nämlich einen Slave, der jedoch nur schreibgeschützte Abfragen bedient. Wenn ein Client eine Verbindung zu ihm herstellt und der Client versucht, Daten zu ändern, sollte der Knoten einen Fehler melden. Nennen wir dies den zweiten Slave: den Nur-Lese-Slave (RS).
Zuletzt: Ich möchte ein Failover für den Nur-Lese-Slave. Das heißt, für den Fall, dass RS stirbt, möchte ich, dass ein anderer Nur-Lese-Slave seine Aufgaben übernimmt. Nennen wir dies den vierten Slave: den schreibgeschützten Failover-Slave (FRS).
Gibt es eine Möglichkeit, Redis so zu konfigurieren? Scheint, dass alle Bereitstellungsmodi (hat diesen Artikel gelesen: https://blog.octo.com/en/what-redis-deployment-do-you-need/ ) einen einzigen Master außer dem Cluster haben. Es sieht so aus, als wäre mein "FS" -Knoten ein zweiter Master, da er Schreibanfragen akzeptiert. Die Clusterkonfiguration ist jedoch standardmäßig auf "Sharding" aktiviert und es scheint, als gäbe es keine normale Möglichkeit, ihn zu deaktivieren, es sei denn, ich vermisse etwas.