Skonfigurowaliśmy serwer Redis z jednym masterem i dwoma urządzeniami podrzędnymi. Jeśli mój master zawiedzie, jak możemy obsłużyć przełączanie awaryjne bez restartowania serwera Redis.Błąd Redis Over
Odpowiedz
Aktualizacja:
Dzisiaj, polecam sprawdzanie redis-sentinel, narzędzie według Autor Antirez Redis' dla monitorowania i automatycznego przełączania awaryjnego.
Oryginalny odpowiedź:
Sprawdź SLAVEOF
polecenie: http://redis.io/commands/slaveof
Kiedy okazuje się, że twój pan nie wyda SLAVEOF NO ONE
na jednym ze swoich niewolników, aby promować to do opanowania. Następnie skieruj swojego drugiego niewolnika na nowego mistrza. Zobacz także "Aktualizowanie lub ponowne uruchamianie instancji Redis bez przestojów": http://redis.io/topics/admin
Do zarządzania plikami konfiguracyjnymi można zrobić coś wzdłuż tych linii (uwaga: nie testowano, jako przykład). Poniższy przykład zakłada dwa pliki konfiguracyjne dla każdego serwera (/etc/redis/server1.master.conf
, /etc/redis/server1.slave.conf
itp), z których jedna posiada serwera jako niewolnik jakiegoś predefiniowanego Master:
#!/bin/sh
master()
{
server_name=$1
redis-cli slaveof no one
ln -sf /etc/redis/$server_name.master.conf /etc/redis/$server_name.conf
}
# Usage: slave(server1 server2 6379)
slave()
{
server_name=$1
master=$2
master_port=$3
redis-cli slaveof $master $master_port
ln -sf /etc/redis/$server_name.slave.conf /etc/redis/$server_name.conf
}
Zamiast predefiniowanych plików konfiguracyjnych, można edytować je na mucha z np sed
. Zasadniczo, upewnij się, że zawsze masz pozycję slaveof
w plikach konfiguracyjnych, albo wskazując na mastera lub slaveof no one
. Następnie przepisać konfigurację przy użyciu sed
(ponownie, nie testowane, tak pomyślany jako pokarm dla myśli):
#!/bin/sh
master()
{
server_name=$1
config=$server_name.conf
redis-cli slaveof no one
sed -i "s/^slaveof.*/slaveof no one/" $config
}
# Usage: slave(server1 server2 6379)
slave()
{
server_name=$1
config=$server_name.conf
master=$2
master_port=$3
redis-cli slaveof $master $master_port
sed -i "s/^slaveof.*/slaveof $master $master_port/" $config
}
Polecam zajrzeć do Redis Klastra (wersja 3.2 jako ostatni stabilny dzisiaj). Cluster to nowe podejście, nie ma już strażników. Zasada "fail over over" jest taka sama, slave promuje się do master w przypadku, gdy master jest w dół i nowe funkcje, w tym logika sharding obsługiwana przez Redis. Aplikacja musi po prostu połączyć się z klastrem z zestawem węzłów, to wszystko.
Jeśli mówimy o ogólnym Fail Over, należy pamiętać, że Redis Cluster nie gwarantuje wysokiej spójności.
Proszę znaleźć fragment z: http://redis.io/topics/cluster-tutorial
„Redis klastrowania nie jest w stanie zagwarantować silną spójność W praktyce oznacza to, że w pewnych warunkach możliwe jest, że Redis Cluster stracą pisze, że były. potwierdzony przez system do klienta.
pierwszy powód Redis Klaster może stracić pisze to dlatego, że wykorzystuje asynchroniczną replikację.
Istnieje jeszcze inny znaczący scenariusz, w którym Klaster Redis utraci zapis, co dzieje się podczas partycji sieciowej, na której klient jest odizolowany z mniejszą liczbą instancji, w tym przynajmniej nadrzędną."
- 1. Błąd Spring Redis
- 2. Błąd PHP redis
- 3. Błąd "Niepoprawna składnia" przy użyciu OVER()
- 4. Błąd połączenia w websocket over amazon ELB
- 5. Redis (błąd) ERR operacja niedozwolona
- 6. Websockets over HTTPS 403 Forbidden
- 7. Jak mogę użyć SUM() OVER()
- 8. C++ over wątku
- 9. Egistential Quantification over Values
- 10. MIDI Over Bluetooth
- 11. Mojolicious over HTTPS
- 12. Redis | redis-cli INFO/avg_ttl wartość
- 13. Hover over polygons (wyświetlanie tekstu)
- 14. Hover Over efekt w NSCollectionView
- 15. Behat over Cucumber w PHP
- 16. Loop Over Array w JavaScript
- 17. ROW_NUMBER() bez over w SQL
- 18. Czy istnieje pętla "start-over"?
- 19. sessionStorage over localStorage w PhoneGap
- 20. CSS: Box + text over image
- 21. Playframework: Looping over a list
- 22. Wysyłanie i odbieranie std :: string over socket
- 23. HAproxy dla niewolników redis
- 24. Uruchamianie łącznie za pomocą klauzuli over
- 25. Node.js i Redis Auth
- 26. Podłączanie do zdalnej pamięci podręcznej Redis Redis przy użyciu Redis CLI
- 27. redis-py: Jaka jest różnica między metodami StrictRedis() i Redis()?
- 28. Polecenie Redis do listy wszystkich subskrybentów zasubskrybowanych do kanału redis
- 29. Redis/Uzyskaj wszystkie klucze i wartości od redis z prefiksem
- 30. Jak zaimplementować Redis Multi-Exec za pomocą Spring-data-Redis
Dzięki Linus, próbowałem że klient Redis jego pracy w porządku, ale jak zmienić takie same na Redis conf w locie, Czy istnieje jakiś skrypt dostępny do tego? Dzięki – vijay
Great! I don” t Wiesz, której biblioteki klienckiej redis używasz, ale domyślam się, że ma komendę 'slaveof' Dla plików konfiguracyjnych możesz mieć dwie konfiguracje dla każdego serwera, jeden dla slave i jeden dla master oraz dowiązanie symboliczne między tymi serwerami. –