一、说明
Memcache本身没有内置分布式功能,无法实现使用多台Memcache服务器来存储不同的数据,最大程度的使用相同的资源;无法同步数据,容易造成单点故障。(memagent代理实现集群)
在 Memcached中可以保存的item数据量是没有限制的,只要内存足够 。
Memcached单进程最大使用内存为2G,要使用更多内存,可以分多个端口开启多个Memcached进程
最大30天的数据过期时间,设置为永久的也会在这个时间过期,常量REALTIME_MAXDELTA 60*60*24*30控制
最大键长为250字节,大于该长度无法存储,常量KEY_MAX_LENGTH 250控制
单个item最大数据是1MB,超过1MB数据不予存储,常量POWER_BLOCK 1048576进行控制, 它是默认的slab大小
最大同时连接数是200,通过 conn_init()中的freetotal进行控制,最大软连接数是1024,通过settings.maxconns=1024 进行控制
跟空间占用相关的参数:settings.factor=1.25, settings.chunk_size=48, 影响slab的数据占用和步进方式
memcached是一种无阻塞的socket通信方式服务,基于libevent库,由于无阻塞通信,对内存读写速度非常之快。
memcached分服务器端和客户端,可以配置多个服务器端和客户端,应用于分布式的服务非常广泛。
memcached作为小规模的数据分布式平台是十分有效果的。
memcached是键值一一对应,key默认最大不能超过128个字 节,value默认大小是1M,也就是一个slabs,如果要存2M的值(连续的),不能用两个slabs,因为两个slabs不是连续的,无法在内存中 存储,故需要修改slabs的大小,多个key和value进行存储时,即使这个slabs没有利用完,那么也不会存放别的数据。
二、集群规划
1. 服务器列表
magent server 192.168.128.100:10000
memcache server 1 (mem-s1) 192.168.128.101:11211
memcache server 2 (mem-s2) 192.168.128.102:11211
memcache server 3 (mem-s3) 192.168.128.103:11211
memcache backup 1 (mem-b1) 192.168.128.104:11211
memcache backup 2(mem-b2) 192.168.128.105:11211
2. 部署图示:
三、集群实施
1. 在mem-s1,mem-s2,mem-s3,mem-b1,mem-b2机器上分别安装memcached
#编译安装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 ../
#编译安装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 ../
2.启动所有机器的memcached服务
执行以下命令:
memcached -m 1 -u root -d -l 192.168.128.101 -p 11211
memcached -m 1 -u root -d -l 192.168.128.102 -p 11211
memcached -m 1 -u root -d -l 192.168.128.103 -p 11211
memcached -m 1 -u root -d -l 192.168.128.104 -p 11211
memcached -m 1 -u root -d -l 192.168.128.105 -p 11211
然后查看进程是否启动成功 ps -ef | grep memcached
3. 在Magent机器上安装magent服务
#编译安装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
4.在Magent机器上启动magent服务
执行命令:
magent -u root -n 51200 -l 192.168.128.100 -p 10000 -s 192.168.128.101:11211 -s 192.168.128.102:11211 -s 192.168.128.103:11211 -b 192.168.128.104:11211 -b 192.168.128.105:11211
启动参数
-u 启动账号
-n 最大连接数
-l magent监听的IP
-p magent监听的端口
-s IP:端口 代表是主服务器的IP:端口
-b IP:端口 代表是备服务器的IP:端口
四、检验集群
1. 集群数据分布式存储检验
2. 集群数据冗余备份检验
3. 集群服务failover检验