Как использовать Elasticache с Django MemcachedCache Backend
Как правильно использовать сервис Amazon Elasticache (с механизмом Memcached) с бэкэндом MemcachedCache Django?
У меня есть локальная служба Memcached, работающая локально, которая отлично работает с настройкой Django:
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': '127.0.0.1:11211',
}
}
Я думал, что использовать Elasticache будет так же просто, как создать экземпляр кластера Memcached и затем изменить мои настройки на:
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': 'instance-name.abcdef.cfg.use1.cache.amazonaws.com:11211',
}
}
Однако, когда я проверяю это локально, кеш молча завершается сбоем и ничего не сохраняет успешно.
Что я делаю неправильно? Как мне заставить сервер MemcachedCache показывать реальное сообщение об ошибке? Нужно ли использовать подобный Elasticache бэкэнд Django?
1 ответ
Вы не можете подключиться к экземплярам ElastiCache за пределами сети AWS. Даже если у ваших групп безопасности могут быть исключения, разрешающие трафик с вашего IP-адреса (или всего интернета), сеть AWS не будет принимать к нему трафик, исходящий не из их сети.
Эта конфигурация в порядке, однако будет работать только с экземпляром EC2.
В качестве альтернативы вы можете следовать этому руководству (которое также подтверждает мой ответ выше), которое в основном включает в себя раскрутку экземпляра EC2, чей IP-адрес вы будете использовать в своей конфигурации CACHES. Этот экземпляр настроен на выполнение NAT между входящим трафиком через порт 11211 и перенаправлением его на ваш узел ElastiCache. Эта конфигурация далека от идеальной и не должна использоваться в производстве.