memcached单点
一.Repcached (memcached同步补丁)
下载地址:http://sourceforge.net/projects/repcached/files/repcached/2.2.1-1.2.8/
版本号:memcached 1.2.8 repcached 2.2.1
1、repcached介绍
repcached是日本人开发的实现memcached复制功能,它是一个单 master单 slave的方案,但它的 master/slave都是可读写的,而且可以相互同步,如果 master坏掉, slave侦测到连接断了,它会自动 listen而成为 master;而如果 slave坏掉, master也会侦测到连接断,它就会重新 listen等待新的 slave加入
2、安装
在两台服务器上分别安装memcached服务,另注本文libevent的版本为:libevent-1.4.13,下载地址: http://www.monkey.org/~provos/libevent-1.4.13-stable.tar.gz (安装省略)
repcached有两种方式:
方式一、下载对应的repcached版本
2.
#tar zxf memcached-1.2.8-repcached-2.2.tar.gz
3.
#cd memcached-1.2.8-repcached-2.2
方式二、下载对应patch版本
2.
#gzip -cd ../repcached-2.2-1.2.8.patch.gz | patch -p1】
3.
#./configure –enable-replication
4.
# make
5.
# make install
3、启动:
启动master
1.
# ./memcached -v -u root -d -l 127.0.0.1 -p 11211 -x 127.0.0.1 -X 11111 (11211:master端口;11111:同步端口)
2.
replication: connect (peer=127.0.0.1:11111)
3.
replication: accept
4.
replication: marugoto copying
5.
replication: start
启动salve
1.
# ./memcached -v -u root -d -l 127.0.0.1 -p 11212 -x 127.0.0.1 -X 11111 (11212:slave端口;11111:同步端口)
2.
replication: connect (peer=127.0.0.1:11111)
3.
replication: marugoto copying
4.
replication: close
5.
replication: listen
4、测试:
操作master
01.
[root@localhost bin]
# telnet 127.1 11211
02.
Trying 127.0.0.1...
03.
Connected to localhost.localdomain (127.0.0.1)...
04.
Escape character is '^]'.
05.
get key1
06.
END
07.
set
key1 0 0 2
08.
aa
09.
STORED
10.
quit
11.
Connection closed by foreign host.
查看slave
01.
[root@localhost bin]
# telnet 127.1 11212
02.
Trying 127.0.0.1...
03.
Connected to localhost.localdomain (127.0.0.1)...
04.
Escape character is '^]'.
05.
get key1
06.
VALUE key1 0 2
07.
aa
08.
END
09.
quit
10.
Connection closed by foreign host.
注意:如果master down机,slave接管并成为master,这时down机的master只能启用slave,他们之间互换角色,才能保持复制功能。换句话说,master没有抢占功能。而且,同步间隔时间未知。
优点:
- 数据冗余
- 两台memcached都可以进行读写操作
缺点:
- 只支持单对单
- 只支持memcached 1.2.x版本
二.Magent (memcached的代理)
原文地址:http://blog.s135.com/post/393/
magent是一款开源的Memcached代理服务器软件,其项目网址为:
http://code.google.com/p/memagent/
1、安装步骤:
a、编译安装libevent:
2.
tar
zxvf libevent-1.4.9-stable.
tar
.gz
3.
cd
libevent-1.4.9-stable/
4.
./configure --prefix=/usr
5.
make
&&
make
install
6.
cd
../
b、编译安装Memcached:
2.
tar
zxvf memcached-1.2.6.
tar
.gz
3.
cd
memcached-1.2.6/
4.
./configure --with-libevent=/usr
5.
make
&&
make
install
6.
cd
../
c、编译安装magent:
01.
mkdir
magent
02.
cd
magent/
04.
tar
zxvf magent-0.5.
tar
.gz
05.
/sbin/ldconfig
06.
sed
-i
"s#LIBS = -levent#LIBS = -levent -lm#g"
Makefile
07.
make
08.
cp
magent /usr/bin/magent
09.
cd
../
2、使用实例:
1.
memcached -m 1 -u root -d -l 127.0.0.1 -p 11211
2.
memcached -m 1 -u root -d -l 127.0.0.1 -p 11212
3.
memcached -m 1 -u root -d -l 127.0.0.1 -p 11213
4.
magent -u root -n 51200 -l 127.0.0.1 -p 12000 -s 127.0.0.1:11211 -s 127.0.0.1:11212 -b 127.0.0.1:11213
- 分别在11211、11212、11213端口启动3个Memcached进程,在12000端口开启magent代理程序;
- 11211、11212端口为主Memcached,11213端口为备份Memcached;
- 连接上12000的magent,set key1和set key2,根据哈希算法,key1被写入11212和11213端口的Memcached,key2被写入11212和11213端口的Memcached;
- 当11211、11212端口的Memcached死掉,连接到12000端口的magent取数据,数据会从11213端口的Memcached取出;
- 当11211、11212端口的Memcached重启复活,连接到12000端口,magent会从11211或11212端口的Memcached取数据,由于这两台Memcached重启后无数据,因此magent取得的将是空值,尽管11213端口的Memcached还有数据(此问题尚待改进)。
3、整个测试流程:
01.
[root@centos52 ~]
# telnet 127.0.0.1 12000
02.
Trying 127.0.0.1...
03.
Connected to 127.0.0.1.
04.
Escape character is '^]'.
05.
stats
06.
memcached agent v0.4
07.
matrix 1 -> 127.0.0.1:11211, pool size 0
08.
matrix 2 -> 127.0.0.1:11212, pool size 0
09.
END
10.
set
key1 0 0 8
11.
zhangyan
12.
STORED
13.
set
key2 0 0 8
14.
zhangyan
15.
STORED
16.
quit
17.
Connection closed by foreign host.
18.
19.
[root@centos52 ~]
# telnet 127.0.0.1 11211
20.
Trying 127.0.0.1...
21.
Connected to 127.0.0.1.
22.
Escape character is '^]'.
23.
get key1
24.
END
25.
get key2
26.
VALUE key2 0 8
27.
zhangyan
28.
END
29.
quit
30.
Connection closed by foreign host.
31.
32.
[root@centos52 ~]
# telnet 127.0.0.1 11212
33.
Trying 127.0.0.1...
34.
Connected to 127.0.0.1.
35.
Escape character is '^]'.
36.
get key1
37.
VALUE key1 0 8
38.
zhangyan
39.
END
40.
get key2
41.
END
42.
quit
43.
Connection closed by foreign host.
44.
45.
[root@centos52 ~]
# telnet 127.0.0.1 11213
46.
Trying 127.0.0.1...
47.
Connected to 127.0.0.1.
48.
Escape character is '^]'.
49.
get key1
50.
VALUE key1 0 8
51.
zhangyan
52.
END
53.
get key2
54.
VALUE key2 0 8
55.
zhangyan
56.
END
57.
quit
58.
Connection closed by foreign host.
模拟11211、11212端口的Memcached死掉
01.
[root@centos52 ~]
# ps -ef | grep memcached
02.
root 6589 1 0 01:25 ? 00:00:00 memcached -m 1 -u root -d -l 127.0.0.1 -p 11211
03.
root 6591 1 0 01:25 ? 00:00:00 memcached -m 1 -u root -d -l 127.0.0.1 -p 11212
04.
root 6593 1 0 01:25 ? 00:00:00 memcached -m 1 -u root -d -l 127.0.0.1 -p 11213
05.
root 6609 6509 0 01:44 pts/0 00:00:00
grep
memcached
06.
[root@centos52 ~]
# kill -9 6589
07.
[root@centos52 ~]
# kill -9 6591
08.
[root@centos52 ~]
# telnet 127.0.0.1 12000
09.
Trying 127.0.0.1...
10.
Connected to 127.0.0.1.
11.
Escape character is '^]'.
12.
get key1
13.
VALUE key1 0 8
14.
zhangyan
15.
END
16.
get key2
17.
VALUE key2 0 8
18.
zhangyan
19.
END
20.
quit
21.
Connection closed by foreign host.
模拟11211、11212端口的Memcached重启复活
01.
[root@centos52 ~]
# memcached -m 1 -u root -d -l 127.0.0.1 -p 11211
02.
[root@centos52 ~]
# memcached -m 1 -u root -d -l 127.0.0.1 -p 11212
03.
[root@centos52 ~]
# telnet 127.0.0.1 12000
04.
Trying 127.0.0.1...
05.
Connected to 127.0.0.1.
06.
Escape character is '^]'.
07.
get key1
08.
END
09.
get key2
10.
END
11.
quit
12.
Connection closed by foreign host.
优点:
- 可以做多主或多从
缺点:
- 当master宕掉又恢复后,取不到数据。
memcached单点的更多相关文章
- memcached单点登录配置
域名 www.lxy.comblog.lxy.comnews.lxy.comshop.lxy.com php配置 session.save_handler = memcache session写mem ...
- cookie+memcached实现单点登陆
10年的时候在iteye的第一篇文章记录了一下当时怎么实现我们系统的单点登陆.不过那个时候文章写的不好,思路也很浮躁,很难看懂,在csdn的第一篇技术博客打算重新温顾一下当时实现单点登陆的思路.先来看 ...
- 看图理解JWT如何用于单点登录
单点登录是我比较喜欢的一个技术解决方案,一方面他能够提高产品使用的便利性,另一方面他分离了各个应用都需要的登录服务,对性能以及工作量都有好处.自从上次研究过JWT如何应用于会话管理,加之以前的项目中也 ...
- [原创]django+ldap实现单点登录(装饰器和缓存)
前言 参考本系列之前的文章,我们已经搭建了ldap并且可以通过django来操作ldap了,剩下的就是下游系统的接入了,现在的应用场景,我是分了2个层次,第一层次是统一认证,保证各个系统通过ldap来 ...
- Memcached集群/分布式/高可用 及 Magent缓存代理搭建过程 详解
当网站访问量达到一定时,如何做Memcached集群,又如何高可用,是接下来要讨论的问题. 有这么一段文字来描述“Memcached集群” Memcached如何处理容错的? 不处理!:) 在memc ...
- GPS部标监控平台的架构设计(十一)-基于Memcached的分布式Gps监控平台
部标gps监控平台的架构,随着平台接入的车辆越来越多,架构也面临越来越大的负载挑战,我们当然希望软件尽可能的优化并能够接入更多的车辆,减少在硬件上的投资.但是当车辆增多到某一个临界点的时候,仍然要面临 ...
- redis和memcached
Redis 1.主从配置(主从复制不会阻塞master.) 1)bind 192.168.1.2(请修改成本机的IP地址,要不然,客户端无法进行访问) 2)slaveof 192.168.1.1 6 ...
- memcached+magent实现memcached集群
首先说明下memcached存在如下问题 本身没有内置分布式功能,无法实现使用多台Memcache服务器来存储不同的数据,最大程度的使用相同的资源:无法同步数据,容易造成单点故障.(memagent代 ...
- Memcached深度分析
Memcached是danga.com(运营LiveJournal的技术团队)开发的一套分布式内存对象缓存系统,用于在动态系统中减少数据库负载,提升性能.关于这个东西,相信很多人都用过,本文意在通过对 ...
随机推荐
- 给jdk配置jvm的参数
(1)window->preference->java->installed JREs ->edit -Xms512m -Xmx512m -XX:MaxNewSize=512 ...
- 【转】MOCK测试
mock测试:就是在测试过程中,对于某些不容易构造或者 不容易获取的对象,用一个虚拟的对象[mock对象]来创建以便测试的测试方法. mock对象:这个虚拟的对象就是mock对象. mock对象就是真 ...
- Java语言中两种异常的差别
Java提供了两类主要的异常:runtime exception和checked exception.所有的checked exception是从java.lang.Exception类衍生出来的,而 ...
- 关于JSON日期格式显示及My97日期控件
1.My97日期控件.显示不同的日期格式,可以调整"dateFmt“的参数来配置: 详细DEMO:http://www.my97.net/demo/index.htm <p>日期 ...
- 网页端的utf8和gb2312 之间关于osd 传参数的乱码问题
(0)HZK16 点阵字库原理及实现 (1)utf8 和 unicode gb2312之间的转换 (2)gb2312 的拓展 gbk 实现了更多的文字编码 像“瞭望塔”的瞭子在gb2312中是没有的 ...
- 【BZOJ】3397: [Usaco2009 Feb]Surround the Islands 环岛篱笆(tarjan)
http://www.lydsy.com/JudgeOnline/problem.php?id=3397 显然先tarjan缩点,然后从枚举每一个scc,然后向其它岛屿连费用最小的边,然后算最小的即可 ...
- python socket 简单例子
myserver.py: import socket serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) serverso ...
- echarts使用要点
- 《C++程序设计》朝花夕拾
(以后再也不用破Markdown写东西了,直到它有一个统一的标准,不然太乱了--) 函数签名 int f (int a, int b) ↑ ↑ ↑ ↑ 返回类型 函数名 形 式 参 数 其中,函数 ...
- 标签球-Js插件
今天上学校的图书馆,看到了一个好玩的东西,特意百度了下,发现叫做“标签球”,效果图为: 直接代码如下: #div1 {position:relative; width:350px; height:35 ...