Memcached【Magent+Memcached】集群
Memcached介绍
事件处理
libevent是个程序库,它将Linux的epoll、BSD类操作系统的kqueue等事件处理功能封装成统一的接口。即使对服务器的连接数增加,也能发挥O(1)的性能。memcached使用这个libevent库,因此能在Linux、BSD、Solaris等操作系统上发挥其高性能。关于事件处理这里就不再详细介绍,可以参考Dan Kegel的The C10K Problem。
存储方式
为了提高性能,memcached中保存的数据都存储在memcached内置的内存存储空间中。由于数据仅存在于内存中,因此重启memcached、重启操作系统会导致全部数据消失。另外,内容容量达到指定值之后,就基于LRU(Least Recently Used)算法自动删除不使用的缓存。memcached本身是为缓存而设计的服务器,因此并没有过多考虑数据的永久性问题。
通信分布式
memcached尽管是“分布式”缓存服务器,但服务器端并没有分布式功能。各个memcached不会互相通信以共享信息。那么,怎样进行分布式呢?这完全取决于客户端的实现!
事件、存储、通信解释摘自百度
Magent+Memcached实现集群
如上图所示:
Agent1把数据分别保存在192.168.7.102:11211 和 192.168.7.103:11211分成两份,并且192.168.7.104:11211保留完整的备份
Agent2把数据分别保存在192.168.7.103:11211 和 192.168.7.103:11211分成两份,并且192.168.7.104:11211保留完整的备份
原因:
在写的时候同时写两份保存在Memcached里!可以根据需要自己调整,基本上一个Agent即可,但是为了冗余使用两个Agent是推荐的!
配置:
安装配置
1、安装Memcached (安装memcached在192.168.7.102 192.168.7.103 192.168.7.104 并启动端口11211)
yum -y install memcached #安装软件 /usr/bin/memcached -d -u root -l 192.168.7.102 -m 1024 -p 11211#启动服务 /usr/bin/memcached -d -u root -l 192.168.7.103 -m 1024 -p 11211#启动服务 /usr/bin/memcached -d -u root -l 192.168.7.104 -m 1024 -p 11211#启动服务 #命令解释: ''' 启动Memcache 常用参数 -p <num> 设置TCP端口号(默认不设置为: 11211) -U <num> UDP监听端口(默认: 11211, 0 时关闭) -l <ip_addr> 绑定地址(默认:所有都允许,无论内外网或者本机更换IP,有安全隐患,若设置为127.0.0.1就只能本机访问) -d 以daemon方式运行 -u <username> 绑定使用指定用于运行进程<username> -m <num> 允许最大内存用量,单位M (默认: 64 MB) -P <file> 将PID写入文件<file>,这样可以使得后边进行快速进程终止, 需要与-d 一起使用 '''
2、安装Magent (安装Magent在192.168.7.100 192.168.7.101)
cd /usr/local/ mkdir ./magent cd ./magent wget -c http://memagent.googlecode.com/files/magent-0.6.tar.gz tar xzvf ./magent-0.6.tar.gz /sbin/ldconfig sed -i "s#LIBS = -levent#LIBS = -levent -lm#g" Makefile make cp ./magent /usr/bin/magent #命令详解 ''' -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 '''
3、启动Magent
#/usr/bin/env python #-*- coding:utf-8 -*- import memcache mc = memcache.Client(['192.168.7.100:11211'],debug=True) mc.set('Timluo','1',60) mc.set('Timluo2','2',60) mc.set('Timluo3','3',60) mc.set('Timluo4','4',60) mc.set('Timluo5','5',60) mc.set('Timluo6','6',60)
5、可以通过telnet 192.168.7.102 或 192.168.7.103 或 192.168.7.104 上直接get keyname去获取值看看是否可以正常获取是否已经正常存储了!或者安装管理工具Memadmin查看
''' telnet 192.168.7.102 11211 get Timluo1 VALUE Timluo1 0 1 1 ..... ......... '''
Memadmin
主要功能:
- 服务器参数监控:STATS、SETTINGS、ITEMS、SLABS、SIZES实时刷新
- 服务器性能监控:GET、DELETE、INCR、DECR、CAS等常用操作命中率实时监控
- 支持数据遍历,方便对存储内容进行监视
- 支持条件查询,筛选出满足条件的KEY或VALUE
- 数组、JSON等序列化字符反序列显示
- 兼容memcache协议的其他服务,如Tokyo Tyrant (遍历功能除外)
- 支持服务器连接池,多服务器管理切换方便简洁
yum -y install httpd
2、安装php的memcache扩展包php-pecl-memcache
yum -y install php-pecl-memcache
3、修改apache配置文件添加php
vim /etc/httpd/conf/httpd.conf line:420 DirectoryIndex index.html index.html.var index.php #新增index.php
4、下载MemAdmin
git clone https://github.com/junstor/memadmin #如果没有安装git请自行安装
5、启动apache服务
/etc/init.d/httpd start
6、登录WEB MemAdmin
http://192.168.7.101/memadmin #默认密码在config.php中可以自己定义
7、添加管理(图形界面不在解释,请自行添加)