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
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'"}