Linux系统下Memcached缓存集群和magent代理服务器集群测试方案

Linux系统下Memcached缓存集群和magent代理服务器集群测试方案
1. Memcached如何处理容错的?
在memcached节点失效的情况下,集群没有必要做任何容错处理。如果发生了节点失效,应对的措施完全取决于用户。节点失效时,下面列出几种方案供您选择:
忽略它! 在失效节点被恢复或替换之前,还有很多其他节点可以应对节点失效带来的影响。
把失效的节点从节点列表中移除。做这个操作千万要小心!在默认情况下(余数式哈希算法),客户端添加或移除节点,会导致所有的缓存数据不可用!因为哈希参照的节点列表变化了,大部分key会因为哈希值的改变而被映射到(与原来)不同的节点上。
启动热备节点,接管失效节点所占用的IP。这样可以防止哈希紊乱(hashing chaos)。
举例说明:
在客户端连接的部分写入多个服务器端的ip地址,客户端将会自动的把缓存数据分布的放在每个不同的机器上,如图所示:
 
缺陷:如果其中一个缓存节点的机器down机,那么客户端存入的缓存数据将会丢失一部分,就是图中红色字体描述的“Losed 33% Cache Data”,也就是说那部分数据彻底没有了!如果是用户的关键性信息那么就玩大了,如图所示:
 
2.解决方案:采用缓存代理服务器
采用 Magent 缓存代理,防止单点现象,缓存代理也可以做备份,通过客户端连接到缓存代理服务器,缓存代理服务器连接缓存服务器,缓存代理服务器可以连接多台Memcached机器。


测试准备:
Magent代理服务器2台:192.168.75.3:12000;192.168.75.3:12001
Memcached主服务器3台:192.168.75.3:11211;192.168.75.3:11212;192.168.75.3:11213
Memcached备服务器2台:192.168.75.3:11214;192.168.75.3:11215


首先在192.168.75.3上安装memcached,这里使用的是同一台机器不同端口,实际应用中采用不同机器,则都要确保安装了memcached,参考安装手册。
然后再192.168.75.3上安装magent,这里同样使用了同一台机器不同端口,实际应用中采用不同机器,则都要确保安装了magent. 可参考安装手册。


如图所示:







测试举例:


memcached -m 1 -u root -d -l 192.168.75.3 –p 11211
memcached -m 1 -u root -d -l 192.168.75.3 -p 11212
memcached -m 1 -u root -d -l 192.168.75.3 -p 11213


memcached -m 1 -u root -d -l 192.168.75.3 -p 11214
memcached -m 1 -u root -d -l 192.168.75.3 -p 11215


magent -u root -n 51200 -l 192.168.75.3 -p 12000 -s 192.168.75.3:11211 -s 192.168.75.3:11212 –s  192.168.75.3:11213 –b 192.168.75.3:11214 –b 192.168.75.3:11215
magent -u root -n 51200 -l 192.168.75.3 -p 12001 –s 192.168.75.3:11211 -s 192.168.75.3:11212 –s  192.168.75.3:11213 –b 192.168.75.3:11214 –b 192.168.75.3:11215


 
分别在11211、11212、11213、11214、11215端口启动5个memcached进程,在12000、12001端口开启两个magent代理程序。其中11211、11212、11213端口为主Memcached,11214、11215端口为备份Memcached。


使用telnet链接12000端口的magent
 
链接成功:
 
使用add命令添加key为1-10的数据保存。
 
使用get命令查看。get后面跟key,可以跟多个key,空格分开。例如:get 1 2 3 4 5 6 7 8 9 10
 
使用quit退出telnet链接。
链接12001端口的magent,并使用get命令查看通过12000添加的数据。


 
通过12001端口再添加两组数据。
 


 
退出后,链接memcached的主服务器,端口11211,发现上面分布了key为3,6,9,10的数据。
 
退出后,链接memcached的主服务器,端口11212,发现上面分布了key为1,4,7,11的数据。
 


退出后,链接memcached的主服务器,端口11213
发现上面分布了key为2,5,8,12的数据。


 


退出后,链接memcached的备服务器,
端口11214
发现上面分布了key为1,3,5,7,9,10,12的数据。


 


退出后,链接memcached的备服务器,
端口11215
发现上面分布了key为2,4,6,8,11的数据。


 




故障测试:
此时将memcached主服务器11213断开后,通过magent代理,端口12000查询,依然可以查询到所有key的数据。原因是代理服务器发现memcached主服务器断开后会去通过memcached备服务器查找数据。
 


 


 
使用12001端口的magent同样可以查到。


存在问题:
当11213端口的Memcached重启复活后,连接到12000端口,magent会从11213端口取数据,由于这台重启后无数据,因此magent取到空值,尽管备机11214和11215有数据。



 




 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值