как переключить Redis с помощью Django

Я хочу сделать отказоустойчивость Redis с помощью Django, но не могу найти способ сделать это.

То, что я настроил, выглядит следующим образом:

  • Я использую Redis в качестве серверной части сеанса.
  • Я настроил два сервера Redis в отношениях «главный-ведомый», чтобы при сбое ведущего ведомый автоматически становился ведущим (используя Sentinel)

Я настраиваю settings.py следующим образом

CACHES = {
    'default': {
        'BACKEND': 'redis_cache.RedisCache',
        'LOCATION':[
            "127.0.0.1",
            "IPofSlave"
        ],
        'OPTIONS': {
            'PASSWORD': "xxxxxxxx",
            'DB': 0,
        }
    }
}
SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
SESSION_CACHE_ALIAS = "default"

Я хочу, чтобы Django обычно использовал только мастер и автоматически переключался на подчиненный, когда он не может подключиться к мастеру.

Как я могу сделать это, отредактировав settings.py, или мне следует пойти другим путем?


person user2875308    schedule 08.12.2015    source источник
comment
Вы можете создать сценарий (вызываемый вашей системой опроса), который будет обновлять settings.py информацией о подчиненном сервере, а затем перезапускать приложение. В качестве альтернативы вы можете иметь несколько копий settings.py, settings.py.slave, settings.py.master, а затем ваша система опроса перезапишет settings.py соответствующим файлом.   -  person Dirty Penguin    schedule 08.12.2015


Ответы (1)


Я бы, наверное, выбрал что-то вроде https://github.com/KabbageInc/django-redis-sentinel/blob/master/README.md, который добавляет поддержку Sentinel в плагин Django Redis. Могут быть и другие, более подходящие, это было первым в списке поиска Django sentinel в Google.

person The Real Bill    schedule 09.12.2015