magent + memcached 集群测试

来源:互联网 发布:网络骗局案例 编辑:程序博客网 时间:2024/04/29 22:34

 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 ../


前面的3步就跳过了,接着测试magent +memcached的强大功能

 

  环境说明:  centeros 5.4(虚拟机) IP:192.168.128.133

         测试客户端:xp

    先在133上面开5个memcached端口

    依次执行

memcached -m 1 -u root -d -l 192.168.128.133 -p 10001

memcached -m 1 -u root -d -l 192.168.128.133 -p 10002

memcached -m 1 -u root -d -l 192.168.128.133 -p 10003

memcached -m 1 -u root -d -l 192.168.128.133 -p 10004

memcached -m 1 -u root -d -l 192.168.128.133 -p 10005

  先看看是否启动监听端口成功

  ps -ef | grep memcached

  发现结果6行,最后一行是执行这个查看命令的 说明成功

  接着启动magent 设置启动参数 -u当然是启动账号 -n是最大连接数,-l是magent监听的IP -p是magent监听的端口

  后面的格式依次是 -s IP:端口 代表是主服务器 然后指定IP:端口的格式

  -b IP:端口的意思是 备用服务器,

  这里我设置了10001,10002,10003 为主Memcached服务器

  10004,10005 为memcached备份服务器 

 magent -u root -n 51200 -l 192.168.128.133 -p 12000 -s 192.168.128.133:10001 -s 192.168.128.133:10002 -s 192.168.128.133:10003 -b 192.168.128.133:10004 -b 192.168.128.133:10005

  执行命令后 可以先查看是否启动成功

  ps -ef | grep magent

  出现2行 OK,继续

  在XP客户端上测试

   直接连接magent 端口 12000

  telnet 192.168.128.133 12000

  执行stats

  

说明magent 里面已经负载了3个memcached 端口

  接着我们继续set

set key1 0 0 1
1
STORED
set key2 0 0 1
2
STORED
set key3 0 0 1
3
STORED

 

 好了 依次设置了3个key ,这里说明下参数 <command name> <key> <flags> <exptime> <bytes>\r\n

 详细的解释大家请看:http://blog.zol.com.cn/737/article_736087.html

  既然设置了3个key,我们来读取看

  执行命令get key1 get key2 get key3

  依次返回了

 到此,一个缓存写入已经存取的过程就完成了,但是我们要了解其中的过程呀,哈哈

  然后我们直接登陆memcached的端口get数据看 它是怎么样保存的

  先telnet 192.168.128.133 10001

      执行stats

  STAT pid 7496
STAT uptime 894
STAT time 1319202978
STAT version 1.2.6
STAT pointer_size 32
STAT rusage_user 0.000000
STAT rusage_system 0.001999
STAT curr_items 1
STAT total_items 1
STAT bytes 54
STAT curr_connections 3
STAT total_connections 4
STAT connection_structures 4
STAT cmd_get 1
STAT cmd_set 1
STAT get_hits 1
STAT get_misses 0
STAT evictions 0
STAT bytes_read 36
STAT bytes_written 32
STAT limit_maxbytes 1048576
STAT threads 1\STAT threads 1\

 

说明10001只缓存了1个key

  我们看是存的哪一个

get key1
VALUE key1 0 1
1
END

  OK存的key1

再telnet 192.168.128.133 10002

直接

get key1
END
get key2
VALUE key2 0 1
2
END
get key3
END
get key4
END
get key5
END

说明10002上缓存的key2啊,

这样不难看出10003上应该是缓存的key3了

  试试

  telnet 192.168.128.133 10003

然后

get key1
END
get key2
END
get key3
VALUE key3 0 1
3
END
get key4
END
get key5
END

到此 知道了magent是根据自己的算法 把要缓存的内容依次分发到后端的memcached的,至于具体的算法就不知道了,我个人认为应该是依次分发的吧,当然此memcached存活的前提下,

 

知道了主服务器是分发负载的,不知道备用服务器是不是这样,

  进telnet 192.168.128.133 10004

  依次

get key1
END
get key2
VALUE key2 0 1
2
END
get key3
END
get key4
END
get key5
END

  发现 备用服务10004 并没有全部缓存3个key,就是之前的key1 key2 key3

再进 telnet 192.168.128.133 10005

get key1

VALUE key1 0 1
1
END
get key2
END
get key3
VALUE key3 0 1
3
END
get key4
END
get key5
END
看来备用服务器也是实现了负载啊,哈哈,估计算法还是跟主服务器的一样吧,

 

  然后我把主服务器的10001 10002 10003的进程全部kill了

root      7496     1  0 21:01 ?        00:00:00 memcached -m 1 -u root -d -l 192.168.128.133 -p 10001
root      7498     1  0 21:01 ?        00:00:00 memcached -m 1 -u root -d -l 192.168.128.133 -p 10002
root      7500     1  0 21:01 ?        00:00:00 memcached -m 1 -u root -d -l 192.168.128.133 -p 10003

kill 7496 7498 7500

再在magent的端口上get key1
VALUE key1 0 1
1
END
get key2
VALUE key2 0 1
2
END
get key3
VALUE key3 0 1
3
END

 

并不影响取值。

  不过如果备用服务器也死了的话,就无力了,

  到此测试结束咯

1 0
原创粉丝点击