Memcached配置失误引发的Keystone token丢失的问题
故障现象
近期公司的OpenStack上频繁出现虚拟机创建失败的情况,查看日志定位到问题出在neutron-server向keystone认证token失败。
故障原因
Keystone所使用的Memcahed token后端配置的可用内存大小为64MB,新集群加入后,token量逐渐增加,需要保存的数据量大于这个大小,导致memcached频繁清理未过期的以腾出空间存储新创建的token,继而出现token丢的情况。
处理方法
给memcached分配更多的可用内存空间,目前分配4GB。
排查过程
在出现虚拟机创建失败情况时,查看日志,发现都是在nova-compute访问neutron-server去创建port时,neutron-server向keystone验证token报错:
查看代码梳理一遍认证流程:
1. nova-compute会保存一个全局的token,用这个token去访问neutron-server。每次访问前,检查token是否快要到期,判断标准是120秒,在nova代码里硬编码,也就是每次请求发现token剩余有效时间小于120秒,就重新申请一个token。
2. neutron-server从请求头中提取出token,访问keystone验证token是否有效。
3. keystone配置的token后端是memcache,keystone去memcached检查token时,发现找不到token,返回报错。
由于keystone保存在memcached的token是经过dogpile封装的,不能直接访问,所以无法查看memcached判断token状态。 于是在nova-compute打印出token的详细信息,得到如下结果:
发现token还没到过期时间就找不到了,严重的时候甚至新创建的token下一秒就找不到了。判断是memcached出了问题,将keystone的token后端设置为sql后,这个问题果然不再出现。于是查看memcached的状态,其中两个关键参数:
STAT limit_maxbytes
STAT evictions
表明memcached只有64MB可用内存,出现了54635次因为内存不足进行的对象清理。基本可以确定是memcached内存不足的问题。推断在只有两个region时,缓存的token没有达到memcache内存上限,在第三个region加入后,新增的token量导致memcached内存不足,越来越频繁地出现token被清理的情况。
将memcached可用内存配置为4GB后重启,目前没有再出现这个问题。
Memcached配置失误引发的Keystone token丢失的问题的更多相关文章
- MemCached配置与缓存知识概述
先看看百度百科里面对缓存的介绍: 缓存(Cache memory)是硬盘控制器上的一块内存芯片,具有极快的存取速度,它是硬盘内部存储和外界接口之间的缓冲器.由于硬盘的内部数据传输速度和外界介面传输速度 ...
- 探针配置失误,线上容器应用异常死锁后,kubernetes集群未及时响应自愈重启容器?
探针配置失误,线上容器应用异常死锁后,kubernetes集群未及时响应自愈重启容器? 探针配置失误,线上容器应用异常死锁后,kubernetes集群未及时响应自愈重启容器? 线上多个服务应用陷入了死 ...
- Memcached 配置 和项目应用
Memcached 配置 http://blog.csdn.net/sup_heaven/article/details/32337711 memcached真实项目中的应用 http://blog. ...
- Jenkins权限配置失误后导致登录失败的解决办法
为了便于管理,Jenkins一般需要设置用户,而且这些用户是需要配置相应的权限的,如果一不小心配置的时候出了问题,那么,你就斯巴达了. 这里,用我的切身经历,为大家说一下Jenkins因为权限配置失误 ...
- Druid连接池参数maxWait配置错误引发的问题
Druid连接池参数maxWait配置错误引发的问题 1. 背景 数据库服务器(服务部署在客户内网环境)的运行一段时间后,网卡出现了问题,导致所有服务都连接不上数据库,客户把网络恢复之后,反馈有个服务 ...
- Rhel6-tomcat+nginx+memcached配置文档
理论基础: User - > web ->nginx ->tomcat1 ->*.jsp 80 8080 ↓ -> tomcat2 html ...
- OpenStack-Ocata版+CentOS7.6 云平台环境搭建 — 3.安装配置OpenStack认证服务(keystone)
节点配置信息说明: 控制节点:controller: IP:192.168.164.128 hostname&hosts:likeadmin 计算加点:Nova: IP:192.168.164 ...
- 图解集合5:不正确地使用HashMap引发死循环及元素丢失
问题引出 前一篇文章讲解了HashMap的实现原理,讲到了HashMap不是线程安全的.那么HashMap在多线程环境下又会有什么问题呢? 几个月前,公司项目的一个模块在线上运行的时候出现了死循环,死 ...
- (转)实战Memcached缓存系统(3)Memcached配置参数初解
一.基本参数 在我们第一次安装Memcached时,一般都是用过这个命令: memcached -m 512 -u root -d -l 127.0.0.1 -p 11211 我们先来解释这几个参数的 ...
随机推荐
- csu 1554: SG Value 思维题
http://acm.csu.edu.cn/csuoj/problemset/problem?pid=1554 这题在比赛的时候居然没想出来,然后发现居然是做过的题目的变种!!!! 先不考虑插入操作, ...
- (转)Nginx/Apache服务连接数梳理
Nginx/Apache服务连接数梳理 原文:http://www.cnblogs.com/kevingrace/p/6211542.html 统计连接数,使用netstat命令或ss命令都可以1)统 ...
- 牛客网Java刷题知识点之抽象类与接口
不多说,直接上干货! 接口和内部类为我们提供了一种将接口与实现分离的更加结构化的方法. 抽象类与接口是Java语言中对抽象概念进行定义的两种机制,正是由于它们的存在才赋予java强大的面向对象的能力. ...
- Ionic开发-常用插件安装
cordova plugin add cordova-plugin-nativestoragecordova plugin add cordova-plugin-devicecordova plu ...
- 5.类型、值和变量-JavaScript权威指南笔记
开始变得有意思起来了,然而第三章还是以基础知识了解的角度阐释相关的概念,并没有深入到结合代码以及要实现的功能讲用法和原理的程度. 1.概论. value:程序的运行是对值的操作. type:能够表示并 ...
- webpack.config.js====插件clean-webpack-plugin
1. 安装:主要是用来清除重复文件,生成最新的的插件 就是说在编译文件的时候,先把 build或dist (就是放生产环境用的文件) 目录里的文件先清除干净,再生成新的带有hash值的文件 cnpm ...
- springboot 学习笔记(三)
(三)用jar包启动springboot项目 1.首先需要在pom文件中添加依赖,spring-boot-starter-parent包含有打包的默认配置,如果要修改的话要可以进行重新定义,具体内容参 ...
- 1068 乌龟棋 2010年NOIP全国联赛提高组
1068 乌龟棋 2010年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 查看运行结果 题目描述 Descrip ...
- javascript组件封装中一段通用代码解读
有图有真相,先上图. 相信很多想去研究源码的小伙伴一定被这段代码给吓着了把,直接就打消了往下看下去的想法.我刚开始看的时候也是有点一头雾水,这是什么东东这么长,但是慢慢分析你就会发现其中的奥秘,且听我 ...
- U3D加载服务器上的assetbundle
在Unity3D中,如果加载服务器上的AssetBundle,总是会提示找不到crossdomain.xml文件,即使添加了该文件,也会报同样的错误.属于跨域访问报错的问题. 官方的解决方案如下: h ...