Wir haben eine Redis-Konfiguration mit zwei Redis-Servern. Wir haben auch 3 Sentinels, um die beiden Instanzen zu überwachen und bei Bedarf ein Failover zu initiieren.Wie man einen FLUSHALL redisisert, ohne einen Sentinel-Failover auszulösen?
Wir haben derzeit einen Prozess, bei dem wir regelmäßig einen FLUSHALL auf dem Redis-Server ausführen müssen. Dies ist ein Blockiervorgang, der länger dauert als die Zeit, die wir den Sentinels für die Zeitüberschreitung zugewiesen haben. Mit anderen Worten, wir haben unsere Sentinel-Konfiguration mit:
sentinel down-after-milliseconds OurMasterName 5000
und auf dem Server ein redis-cli flushall tun nimmt> 5000 Millisekunden, so dass die Sentinels initiieren eine über fehlschlagen.
Wir bestätigen, dass die Ausführung einer FLUSHALL nicht großartig ist und wir wissen auch, dass wir die Down-after-Millisekunden erhöhen können, aber für die Zwecke dieser Frage angenommen, dass keine dieser Optionen sind.
Die Frage ist: Wie können wir einen FLUSHALL (oder eine äquivalente Operation) ausführen, OHNE dass unsere Sentinels einen Fail Over auslösen, weil die FLUSHALL-Blockierung länger als 5000 Millisekunden dauert? Hat jemand dieses Problem angetroffen und gelöst?
Wenn Sie auf einer Cloud-Plattform sind, können Sie einfach eine neue Instanz erstellen: Entweder haben Sie Maschinenimages bereit oder mit einigen Devops-Tools –
@LiviuCostea Ich denke, das ist wahrscheinlich die richtige Option. Wenn Sie auf etwas Bezug nehmen können, das etwas ausführlicher beschreibt, wie dies funktionieren könnte, würde ich gerne Ihre Antwort akzeptieren. – jakejgordon
Wenn Sie etwas wie AWS oder Azure verwenden, haben Sie eine API zum Erstellen eines neuen Redis-Clusters. Starten Sie es, laden Sie es mit Daten und sobald Sie fertig sind, ändern Sie einfach das DNS, wieder mit API-Aufruf -so alle diese können von einem Teil Ihrer Anwendung behandelt werden. Aber auf dem Gelände können die Dinge komplexer werden, weil es etwas Automatisierung mit ansible/Koch/Puppet erfordert. –