magent是一款开源的Memcached代理服务器软件,其项目网址为:
http://code.google.com/p/memagent/
一、安装步骤:
1、编译安装libevent:
wget http://monkey.org/~provos/libevent-1.4.9-stable.tar.gz
tar zxvf libevent-1.4.9-stable.tar.gz
cd libevent-1.4.9-stable/
./configure --prefix=/usr
make && make install
cd ../
2、编译安装Memcached:
wget http://danga.com/memcached/dist/memcached-1.2.6.tar.gz
tar zxvf memcached-1.2.6.tar.gz
cd memcached-1.2.6/
./configure --with-libevent=/usr
make && make install
cd ../
3、编译安装magent:
mkdir magent
cd magent/
wget http://memagent.googlecode.com/files/magent-0.5.tar.gz
tar zxvf magent-0.5.tar.gz
/sbin/ldconfig
sed -i "s#LIBS = -levent#LIBS = -levent -lm#g" Makefile
make
cp magent /usr/bin/magent
cd ../
二、使用实例:
memcached -m 1 -u root -d -l 127.0.0.1 -p 11211
memcached -m 1 -u root -d -l 127.0.0.1 -p 11212
memcached -m 1 -u root -d -l 127.0.0.1 -p 11213
magent -u root -n 51200 -l 127.0.0.1 -p 12000 -s 127.0.0.1:11211 -s 127.0.0.1:11212
-b 127.0.0.1:11213
1、分别在11211、11212、11213端口启动3个Memcached进程,在12000端口开启magent代理程序;
2、11211、11212端口为主Memcached,11213端口为备份Memcached;
3、连接上12000的magent,set key1和set key2,根据哈希算法,key1被写入11212和11213端口的Memcached,key2被写入11212和11213端口的Memcached;
4、当11211、11212端口的Memcached死掉,连接到12000端口的magent取数据,数据会从11213端口的Memcached取出;
5、当11211、11212端口的Memcached重启复活,连接到12000端口,magent会从11211或11212端口的
Memcached取数据,由于这两台Memcached重启后无数据,因此magent取得的将是空值,尽管11213端口的Memcached还有数
据(此问题尚待改进)。
命令详解:
-h this message
-u uid
-g gid
-p port, default is 11211. (0 to disable tcp support)
-s ip:port, set memcached server ip and port
-b ip:port, set backup memcached server ip and port
-l ip, local bind ip address, default is 0.0.0.0
-n number, set max connections, default is 4096
-D do not go to background
-k use ketama key allocation algorithm
-f file, unix socket path to listen on. default is off
-i number, max keep alive connections for one memcached server, default is 20
-v verbose
三、整个测试流程:
[root@centos52 ~]# telnet 127.0.0.1 12000
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
stats
memcached agent v0.4
matrix 1 -> 127.0.0.1:11211, pool size 0
matrix 2 -> 127.0.0.1:11212, pool size 0
END
set key1 0 0 8
zhangyan
STORED
set key2 0 0 8
zhangyan
STORED
quit
Connection closed by foreign host.
[root@centos52 ~]# telnet 127.0.0.1 11211
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
get key1
END
get key2
VALUE key2 0 8
zhangyan
END
quit
Connection closed by foreign host.
[root@centos52 ~]# telnet 127.0.0.1 11212
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
get key1
VALUE key1 0 8
zhangyan
END
get key2
END
quit
Connection closed by foreign host.
[root@centos52 ~]# telnet 127.0.0.1 11213
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
get key1
VALUE key1 0 8
zhangyan
END
get key2
VALUE key2 0 8
zhangyan
END
quit
Connection closed by foreign host.
模拟11211、11212端口的Memcached死掉
[root@centos52 ~]# ps -ef | grep memcached
root 6589 1 0 01:25 ? 00:00:00 memcached -m 1 -u root -d -l 127.0.0.1 -p 11211
root 6591 1 0 01:25 ? 00:00:00 memcached -m 1 -u root -d -l 127.0.0.1 -p 11212
root 6593 1 0 01:25 ? 00:00:00 memcached -m 1 -u root -d -l 127.0.0.1 -p 11213
root 6609 6509 0 01:44 pts/0 00:00:00 grep memcached
[root@centos52 ~]# kill -9 6589
[root@centos52 ~]# kill -9 6591
[root@centos52 ~]# telnet 127.0.0.1 12000
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
get key1
VALUE key1 0 8
zhangyan
END
get key2
VALUE key2 0 8
zhangyan
END
quit
Connection closed by foreign host.
模拟11211、11212端口的Memcached重启复活
[root@centos52 ~]# memcached -m 1 -u root -d -l 127.0.0.1 -p 11211
[root@centos52 ~]# memcached -m 1 -u root -d -l 127.0.0.1 -p 11212
[root@centos52 ~]# telnet 127.0.0.1 12000
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
get key1
END
get key2
END
quit
Connection closed by foreign host.
========================================
项目主页上有人说,存在内存泄露问题,如果使用请注意!
=======20100708==================================
今天关注其issue,发现作者shellcode已经发现了这个问题并修改了这个问题,但只是修改了源代码并没有发布bin。
分享到:
相关推荐
小结:Memcached 服务器集群的安装配置和测试是一个复杂的过程,需要安装和配置多个组件,包括 libevent、Memcached 和 magent。在配置防火墙和启动服务时,需要注意防火墙的设置和服务的参数。最后,需要验证服务...
memadmin可能是另一个memcached的管理工具,通常这类工具提供图形化界面,方便用户更直观地管理和监控memcached集群。memadmin-master.zip可能是这个工具的源码包,可能需要解压后编译安装,然后通过Web界面进行操作...
Magent通常是指Magent,一个用于管理memcached集群的工具,能够帮助监控和调整memcached实例的性能。 **memcached详解** 1. **工作原理**:Memcached基于键值对存储,将数据存储在内存中,通过TCP或UDP协议提供...
1. **magent.c**:这是 C 语言编写的源代码文件,很可能包含了 magent 主要的功能实现,如与 Memcached 服务器的通信、节点管理和故障检测等核心逻辑。 2. **ketama.c**:这可能是实现了 Ketama 分布式哈希算法的源...
- Magent代理:Magent是一个开源的Memcached代理,可以提高Memcached集群的可用性和性能。 - 客户端库:对于Java开发,常用的客户端库是memcached client for java(也称为spymemcached),它提供方便的API接口,...
标题中的"libevent+memcached+magent+repacached.zip"是一个组合了多个软件和工具的压缩包,用于搭建一个基于Memcached的集群环境。这个压缩包包含了以下关键组件: 1. **Libevent**:这是一个事件通知库,主要用于...
- **Non-Sticky Mode**:在这种模式下,客户端的请求可以在集群中的任意一台服务器上被处理,这就需要通过Memcached或其他中央存储来同步Session数据。 #### 四、项目环境与实施步骤 在实际部署过程中,需要完成...
- **定义**:一款开源的Memcached代理服务器软件,用于构建高可用性的集群应用。 - **作用**:通过代理的方式提高Memcached的稳定性和性能。 - **获取方式**:访问其项目网站 (http://code.google.com/p/memagent/) ...
`magent`是一个简单的memcached代理,可以用来实现简单的负载均衡。安装magent(如文件`magent-0.6.tar.gz`所示),然后配置它作为客户端与多个memcache服务器之间的中间层。 ### 8. memcached升级 在文件`...
Magent是一个开源的Memcached代理服务器软件,可以用来建立和管理缓存,能够支持高可用性的集群应用。Memcached客户端程序,推荐使用memcachedclientforjava,这是因为它提供了Java开发者常用的API,方便与Java应用...
通过 Memcached 代理软件 Magent 可以构建内存集群,如一个由 10 台 4GB 内存服务器组成的集群总共可以提供 40GB 的可用内存。 3. **MongoDB**:适合大规模数据存储,依赖操作系统虚拟内存(VM)进行内存管理。为了...
4. 分布式:虽然两者都可以通过客户端或者代理支持分布式的实现,但Redis自身从3.0版本开始支持多播方式的集群功能,而Memcached需要依赖其他组件如Magent来实现集群。 5. 使用场景:由于Redis提供了更多的功能和...
- **Memcached** 通常需要借助第三方工具如 Magent 来实现集群功能。 **4. 安全性和灾难恢复** - **Redis** 通过持久化机制支持数据备份,即使在服务器故障时也能通过 RDB 或 AOF 文件恢复数据。 - **Memcached** ...