千家信息网

教你用Magent实现Memcached集群

发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,Magent 是一款开源的 Memcached 代理服务器软件,使用它可以搭建高可用性的集群应用的 Memcached 服务 ,备份 Memcached 数据尽管 Memcached 服务挂掉,前端也
千家信息网最后更新 2025年01月23日教你用Magent实现Memcached集群
Magent 是一款开源的 Memcached 代理服务器软件,使用它可以搭建高可用性的集群应用的 Memcached 服务 ,备份 Memcached 数据

尽管 Memcached 服务挂掉,前端也能获取到数据,客户端先连到 Magent 代理服务器 ,然后Magent 代理服务器 在可以连接多台 Memcached 服务器,然后可以进行数据的保存和备份数据。这样数据就不会丢失,保存了数据完整性。

安装Magent

1)下载安装

cd /usr/localmkdir magentwget http://memagent.googlecode.com/files/magent-0.6.tar.gztar -zxvf magent-0.6.tar.gz/sbin/ldconfigsed -i "s#LIBS = -levent#LIBS = -levent -lm#g" Makefile

在ketama.h或magent.c开头添加

#ifndef SSIZE_MAX#define SSIZE_MAX 32767#endifmake

复制 make 生成的/usr/local/下名为magent的文件到/usr/bin/

cp magent /usr/bin/magent

检查是否安装成功:

./magent -h
代理Memcache
magent -u root -n 51200 -l 192.168.1.90 -p 12000 -s 192.168.1.111:11211 -s 192.168.1.112:11212 -b 192.168.1.112:11211magent参数说明:-h 帮助说明-u 用户-g gid-p 启动端口, 默认11211. (0 to disable tcp support)-s 服务memcached地址,ip:port, set memcached server ip and port-b 备份memcached地址,ip:port, set backup memcached server ip and port-l 启动IP地址,ip, local bind ip address, default is 0.0.0.0-n 最大并发数number, set max connections, default is 4096-D 非后台运行don't go to background-k use ketama key allocation algorithm-f file, unix socket path to listen on. default is off-i number, set max keep alive connections for one memcached server, default is 20-v verbose


如上一章,这次通过magent设值

  • 分别在11211、11212、11213端口启动3个Memcached进程,在12000端口开启magent代理程序;
  • 11211、11212端口为主Memcached,11213端口为备份Memcached;
  • 连接上12000的magent,根据哈希算法,值被写入11211或11212Memcached和备份11213端口的Memcached;
  • 当11211、11212端口的Memcached死掉,连接到12000端口的magent取数据,数据会从11213端口的Memcached取出;
  • 当11211、11212端口的Memcached重启复活,连接到12000端口,magent会从11211或11212端口的Memcached取数据,由于这两台Memcached重启后无数据,因此magent取得的将是空值,尽管11213端口的Memcached还有数据。
缓存与DB的同步

比较保险的做法是:查询的时候从缓存中取,add、updae、delete的时候同时操作缓存与DB。

当然你也可以定时同步缓存与DB的数据,不同的业务应该有不同的选择。

原文来自: https://www.linuxprobe.com/magent-memcached-cluster.html

0