在 Django 中,为了集群 memcached 节点,使用了一种非常简单的方法。只需在所有 django 服务器的 settings.py 文件中列出所有节点地址,如下所示:
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': [
'xxx.xxx.xxx.240:11211',
'xxx.xxx.xxx.242:11211',
...,
]
}
}
显然,每当实例退出或添加新实例时编辑每个实例的 setting.py 文件会很痛苦,您将如何自动管理向集群添加新节点?
- 所有实例都位于负载均衡器后面。
可能的非答案:
- 我也可以只使用一个 django 实例来运行一个 memcached 单节点,因为我只使用 memcached 来存储微小的令牌。 但目标是让所有 ec2 实例都相同。
- 我也可以使用 elasticache,但对于最小的版本来说它很贵(35 美元/月!:))
注意:我使用 memcached 来防止 celeryd 工作人员访问相同的资源,但如果资源偶尔被双重访问也可以。而且我的代币寿命很短(不到 15 秒)。因此,丢失 memcached 节点并不是什么大问题,只要它不会发生得太频繁。