Chcę przygotować konfigurację bazową dla redis sentinel. Replikacja wygląda dobrze, dane są w slave'ach, ale nie działa failover. Aby to przetestować napisałem prostą aplikacje w pythonie która w nieskończonej pętli manipuluje kluczami redisowymi. W chwili zapauzowania redis-master slave nie zostaje elektowany na mastera. Po pewnym czasie spędzonym w google prawdopodobnie borykam się z https://redis.io/docs/management/sentinel/#sentinel-docker-nat-and-possible-issues. Próbowałem użyć IP hosta lub kombinować z różnymi opcjami announce ale bez sukcesu. Tutaj jest moje testowe repo: https://github.com/tomekstrzeszkowski/pysent/tree/master. Kiedy uruchamiam docker-compose up --build skrypt działa poprawnie, lecz gdy symuluję awarię master redisa przez docker-compose pause redis-master failover nie działa.

Logi, ppo sdwon master sentinel nie wybrał nowego master'a

Kopiuj
redis-slave-2_1      | 1:S 14 Aug 2023 10:16:32.332 * MASTER <-> REPLICA sync: Finished with success
redis_cluster_app_1  | ***************************************************************************
redis_cluster_app_1  | {'success': True}
redis_cluster_app_1  | {'success': True, 'value': b'world'}
redis_cluster_app_1  | Slave is readonly
redis_cluster_app_1  | ******** SLEEPING *********
redis_cluster_app_1  | ******** AGAIN *********
redis_cluster_app_1  | {'success': True}
redis_cluster_app_1  | {'success': True, 'value': b'world2'}
redis_cluster_app_1  | {'success': True}
redis_cluster_app_1  | {'success': True, 'value': b'world'}
redis_cluster_app_1  | Slave is readonly
redis_cluster_app_1  | ******** SLEEPING *********
redis_cluster_app_1  | ******** AGAIN *********
redis_cluster_app_1  | {'success': False, 'error': 'Error while connecting to redis : Timeout reading from socket'}
sentinel-1_1         | 1:X 14 Aug 2023 10:17:59.295 # +sdown master mymaster 172.31.0.2 6379
redis_cluster_app_1  | {'success': False, 'error': "Error while connecting to redis : No master found for 'mymaster'"}