一种memcache分布式缓存系统的制作方法

文档序号:9791741阅读:559来源:国知局
一种memcache分布式缓存系统的制作方法
【技术领域】
[0001 ]本发明涉及缓存技术领域,具体地,涉及一种memcache分布式缓存系统。
【背景技术】
[0002]双主模式openstack HA环境中,每个控制节点上都同时运行着nova-consoleauthservice,用户通过horizon访问虚拟机的VNC服务时,需要向其中一台consoleauth发起认证请求,而consoIeath默认将VNC认证token存储在本地内存缓冲区,其他consoleath无法共享获取到存储的token;双主模式下VNC认证请求消息通过rabbitmq以轮询方式发送到每个consoleauth,而只有其中一台在本地存储了正确的认证token,导致多consoleauth下访问VNC服务认证失败。为了解决这个问题我们引入memcache作为VNC认证token的共享存储区,并且为了避免单点故障我们同时还需要构建自己的memcache HA。
[0003]Keystone认证token默认存储在数据库中,随着整个云计算平台运行时间的增长,数据库中token存放空间也会累计递增,长此以往key s tone获取token进行认证的速度将受到影响,为此我们引入memcache作为keystone认证token的存储后端,并且为了避免单点故障我们同时还需要构建自己的memcache HA。
[0004]Memcache作为高性能的分布式缓存系统,设计初衷并没有加入数据冗余机制,也没有必要。每个memcache分布式服务器端之间没有相互关系,数据的分布主要靠客户端相关算法来维系,没有任何应对单点故障的能力,集群中任何一台memcache节点故障都将导致存入的缓存数据丢失,为此我们需要设计一个全新的构架来构建稳定的memcache HA。
[0005]数据冗余是构建memcacheHA防止单点故障的基础,理想的解决方案包括针对memcache自身开发具有数据冗余功能的repcache和使用具有主备数据同步功能的magent作为缓存代理服务器,前者由于单主从冗余机制限制了分布式集群的扩展性,而后者由于单向同步机制同样存在主节点宕机复活后无法同步备节点数据导致访问异常的问题。
[0006]转发超时几乎是所有memcacheHA构架中一个必然要解决的问题,当整个分布式memcache集群中作为主节点的memcache服务端宕机后,由于相关的请求超时机制导致每次访问memcache集群都将产生较大的延时,从而导致整个openstack horizon页面的响应速度极慢,为此我们需要设计一套新的心跳检测机制及时调整更换整个构架中的memcache服务端的主备状态,以绕开请求超时所带来的响应延时,并且保证宕机的节点复活后能对活动节点进行数据同步,达到正常的数据冗余。

【发明内容】

[0007]针对现有技术中的缺陷,本发明的目的是提供一种memcache分布式缓存系统。
[0008]根据本发明提供的一种memcache分布式缓存系统,包括:至少一个magent集群代理服务器和至少2个memcache服务器,所述magent集群代理服务器通过一致性哈希算法将数据映射至所述memcache服务器中进行缓存;
[0009]其中:所述magent集群代理服务器用于:[00?0] 将其中一台所述memcache服务器作为当前主节点,其他memcache服务器为备用节点,对所述当前主节点进行故障监测;
[0011]在监测到所述当前主节点的memcache服务器出现故障时进行主备切换,即从所述备用节点中选择一 memcache服务器切换为当前主节点,将出现故障的memcache服务器切换为备用节点;
[0012]在监测到所述故障的memcache服务器恢复后,仍将恢复的memcache服务器作为备用节点。
[0013]可选地,所述magent集群代理服务器还用于:在监测到所述memcache服务器恢复后,将作为所述当前主节点的memcache服务器中的缓存数据同步到所述恢复的memcache服务器中。
[0014]可选地,所述magent集群代理服务器对所述当前主节点进行故障监测具体为:
[0015]所述magent集群代理服务器每隔预设时间,主动询问作为当前主节点的memcache服务器的运行状态,当监测到当前主节点的memcache服务器出现故障则触发所述主备切换。
[0016]可选地,所述magent集群代理服务器还用于:
[0017]将出现故障的memcache服务器切换为备用节点后向管理系统发送状态切换提示
?目息O
[0018]可选地,所述至少2个所述magent集群代理服务器通过keepalive保活机制对应至一个对外的虚拟IP;在所述magent集群代理服务器出现故障的状态下,待缓存数据通过所述虚拟IP再经由未出现故障的magent集群代理服务器转发至主节点的memcache服务器。
[0019]与现有技术相比,本发明具有如下的有益效果:
[0020]本发明将成熟的代理工具magent集群代理服务器和简单的设计脚本结合,设计简洁,原理清晰,不仅有效克服了memcache HA构建过程中面临的转发超时和数据冗余的技术障碍,突破了 memcache设计的理论瓶颈,还反馈式地解决了 magent遗留问题,减少了平台对不成熟软件的依赖,为平台部署提供了高效稳定的memcache HA分布式集群环境。
【附图说明】
[0021]为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍,显而易见,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。附图中:
[0022]图1是可选实施例中的一种memcache分布式缓存系统构架不意图;
[0023]图2是可选实施例中的一种多memcache服务器的分布式缓存系统构架不意图;
[0024]图3是可选实施例中的一种多magent集群代理服务器的分布式缓存系统构架示意图。
【具体实施方式】
[0025]下文结合附图以具体实施例的方式对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,还可以使用其他的实施例,或者对本文列举的实施例进行结构和功能上的修改,而不会脱离本发明的范围和实质。
[0026]在本发明提供的一种memcache分布式缓存系统,如图1所不,包括:至少一个magent集群代理服务器和至少2个memcache服务器,所述magent集群代理服务器通过一致性哈希算法将数据映射至所述memcache服务器中进行缓存;
[0027]其中:所述magent集群代理服务器用于:
[0028]将其中一台所述memcache服务器作为当前主节点,其他memcache服务器为备用节点,对所述当前主节点进行故障监测;
[0029]在监测到所述当前主节点的memcache服务器出现故障时进行主备切换,即从所述备用节点中选择一 memcache服务器切换为当前主节点,将出现故障的memcache服务器切换为备用节点;
[0030]在监测到所述故障的memcache服务器恢复后,仍将恢复的memcache服务器作为备用节点。
[0031]现有技术中使用具有主备数据同步功能的magent作为缓存代理服务器以解决memcache分布系统的高可用(HA ),但由于单向同步机制同样存在主节点宕机复活后无法同步备节点数据导致访问异常的问题。由于主节点在进行修复的时间段内是没有数据存储的,因此在主节点复活后出现了数据缺失,而如果需要读取这段数据,则出现所述的访问异常。
[0032]另一方面,现有技术通常是magent集群代理服务器在因memcache服务器宕机而取到NULL值后,才发现主节点宕机
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1