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是推荐的!

配置:

Magent:代理服务器     192.168.7.100:12000  192.168.7.101:12000
Memcached主服务器     192.168.7.102:11211   192.168.7.102:11211
Memcached备份服务器  192.168.7.104:11211

安装配置

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

magent -u root -n 51200 -l 192.168.7.100 -p 12000 -s 192.168.7.102:11211 -s 192.168.7.103:11211 -b 192.168.7.104:11211
magent -u root -n 51200 -l 192.168.7.101 -p 12000 -s 192.168.7.102:11211 -s 192.168.7.103:11211 -b 192.168.7.104:11211
 
4、测试(使用python测试,其他的比如java或者C都可以去百度查看下接口即可)
我这里使用python简单测试:
模块需求:python-memcached(pip install python-memcached 然后直接复制我下面的python脚本执行即可)
#/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

MemAdmin是一款可视化的Memcached管理与监控工具,基于 PHP5 & JQuery 开发,体积小,操作简单。(介绍摘自官网)
主要功能:
  •     服务器参数监控:STATS、SETTINGS、ITEMS、SLABS、SIZES实时刷新
  •     服务器性能监控:GET、DELETE、INCR、DECR、CAS等常用操作命中率实时监控
  •     支持数据遍历,方便对存储内容进行监视
  •     支持条件查询,筛选出满足条件的KEY或VALUE
  •     数组、JSON等序列化字符反序列显示
  •     兼容memcache协议的其他服务,如Tokyo Tyrant (遍历功能除外)
  •     支持服务器连接池,多服务器管理切换方便简洁
1、安装apache
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、添加管理(图形界面不在解释,请自行添加)

posted @ 2015-12-30 15:18  天帅  阅读(2404)  评论(0编辑  收藏  举报