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不会互相通讯以共享信息。那么,怎样进行分布式呢?这彻底取决于客户端的实现!php

事件、存储、通讯解释摘自百度html

Magent+Memcached实现集群

如上图所示:java

Agent1把数据分别保存在192.168.7.102:11211 和 192.168.7.103:11211分红两份,而且192.168.7.104:11211保留完整的备份python

Agent2把数据分别保存在192.168.7.103:11211 和 192.168.7.103:11211分红两份,而且192.168.7.104:11211保留完整的备份git

缘由:github

在写的时候同时写两份保存在Memcached里!能够根据须要本身调整,基本上一个Agent便可,可是为了冗余使用两个Agent是推荐的!算法

配置:apache

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

安装配置

一、安装Memcached  (安装memcached在192.168.7.102   192.168.7.103   192.168.7.104 并启动端口11211)vim

 

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 一块儿使用

'''

 

 

二、安装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
'''

三、启动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
 
四、测试(使用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)

五、能够经过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 (遍历功能除外)
  •     支持服务器链接池,多服务器管理切换方便简洁
一、安装apache
yum -y install httpd

二、安装php的memcache扩展包php-pecl-memcache

yum -y install  php-pecl-memcache

三、修改apache配置文件添加php

vim /etc/httpd/conf/httpd.conf
line:420
DirectoryIndex index.html index.html.var index.php  #新增index.php

四、下载MemAdmin

git clone https://github.com/junstor/memadmin

#若是没有安装git请自行安装

 五、启动apache服务

/etc/init.d/httpd start

六、登陆WEB MemAdmin

http://192.168.7.101/memadmin

#默认密码在config.php中能够本身定义

七、添加管理(图形界面不在解释,请自行添加)