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ファイルを編集するのは面倒ですが、クラスターへの新しいノードの追加を自動的に管理するにはどうすればよいでしょうか。
- すべてのインスタンスはロードバランサーの背後にあります。
考えられる非回答:
- 小さなトークンを格納するためにmemcachedのみを使用しているため、1つのdjangoインスタンスをmemcached単一ノードの実行専用にすることもできます。 ただし、目標は、すべてのec2インスタンスを同一にすることです。
- エラスティックを使用することもできますが、最小バージョンでは高価です(35ドル/月!:))
注:私はmemcachedを使用して、celerydワーカーが同じリソースにアクセスできないようにしていますが、リソースが二重にアクセスされることがある場合は問題ありません。そして、私のトークンの寿命は短いです(15秒未満)。したがって、memcachedノードを失うことは、あまり頻繁に発生しない限り、大したことではありません。