分享

清理过期token使Openstack提速

xioaxu790 发表于 2014-10-20 21:06:39 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 0 10660
问题导读
1、使用Horizon创建或查询数据的速度变慢等情况,原因有哪些?
2、如何清理过期的token?
3、token存放在哪些位置的?





有时候你会发现使用Horizon创建或查询数据的速度变慢了,或者mysql占用CPU过高,亦或是备份数据库尤其是备份keystone数据库时耗时太长,这时候你就要考虑清理keystone数据库中的token表了。
Keystone默认使用SQL数据库存储token,在keystone.conf可以看到相关信息。token默认有效期为1天。
  1. [token]  
  2. # Provides token persistence.  
  3. driver = keystone.token.backends.sql.Token
复制代码



token的存放还有两个选择
keystone.token.backends.memcache:内存数据库
keystone.token.backends.kvs:二元组(键对)
使用memcache虽然速度加快,但耗内存。使用键对速度相对较慢。所以最好的选择还是使用关系数据库,例如mysql。
但是Openstack中的每个组件执行的每次命令(请求),都需要token来验证,这就造成keystone创建了大量的token,随着时间的推移,无效的记录越来越多,企业私有云几天的量就可以几万条、几十万条。这么多无效的token导致针对token表的SQL语句变慢。你可以打开mysql的debug选项然后运行Openstack命令,如果token表非常大,对它的操作会占用大量时间。

Keystone实现了一个小功能就是清理过期的token,命令非常简单,如下:
  1. keystone-manage token_flush  
复制代码



把这条命令加入到crontab里,根据需要运行就可以了,例如每周运行一次。
  1. 0 1 * * 7 keystone-manage token_flush  
复制代码



在token上我再补充一些内容,鉴于PKI过于庞大,不仅对Keystone,对Horizon上的HTTP的负载也会加大,所以在私有云环境下我们完全可以用UUID来代替默认的PKI。
配置非常简单,在keystone.conf中设置如下内容并重启keystone服务。
  1. [signing]  
  2. # Deprecated in favor of provider in the [token] section  
  3. # Allowed values are PKI or UUID  
  4. token_format = UUID  
复制代码






没找到任何评论,期待你打破沉寂

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条