3

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ノードを失うことは、あまり頻繁に発生しない限り、大したことではありません。

4

1 に答える 1

1

キャッシュデータが本当に非常に小さい場合は、redistogo.comのようなAmazon以外でホストされるキャッシュサービスに興味があるかもしれません。データが十分に小さく、価格が非常に合理的にスケーリングされている場合は、無料バージョンがあります。

これはあなたの質問にまったく答えませんが、あなたはelasticacheについて言及しましたが、価格で吠えたので、おそらくそれはあなたのニーズに合うでしょう。

于 2012-05-20T20:26:27.453 に答える