keystone cache
http://docs.openstack.org/juno/config-reference/content/section_keystone.conf.html
http://docs.openstack.org/liberty/config-reference/content/section_keystone-cache.html
keystone很多子系统如token, identity等都用到了cache,cache的设置可以是全局的对所有subsystem,也可以对每个subsystem单独设置cache。
keystone中使用 dogpile.cache
oslo.cache https://specs.openstack.org/openstack/oslo-specs/specs/kilo/oslo-cache-using-dogpile.html
也是对dogpile.cache的包装。可以支持以下backend:
- Memcached
- BMemcached
- Standard Memcached
- Pylibmc
- In-Memory (Python dict-based)
- Redis
- MongoDB
keystone cache section中配置:
默认的是backend
= keystone.common.cache.noop
在生产环境下建议使用keystone.cache.memcache_pool) or Redis (dogpile.cache.redis)
devstack实验环境可以使用dogpile.cache.memory
keystone所有支持的cache backend:
-
dogpile.cache.memcached
- Memcached backend using the standard python-memcached library -
dogpile.cache.pylibmc
- Memcached backend using the pylibmc library -
dogpile.cache.bmemcached
- Memcached using python-binary-memcached library. -
dogpile.cache.redis
- Redis backend -
dogpile.cache.dbm
- Local DBM file backend -
dogpile.cache.memory
- In-memory cache, not suitable for use outside of testing as it does not cleanup it's internal cache on cache expiration and does not share cache between processes. This means that caching and cache invalidation will not be consistent or reliable. -
dogpile.cache.mongo
- MongoDB as caching backend. - keystone.cache.memcache_pool - An eventlet safe implementation ofdogpile.cache.memcached. This implementation also provides client connection re-use.
Warning
如果在 eventlet下部署keystone,不要采用dogpile.cache.memcached backend,已知问题会导致memcache client内存泄漏和耗费额外的socket。