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.gz3.#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-replication4.# make5.# make install3、启动:
启动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: accept4.replication: marugoto copying5.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 copying4.replication: close5.replication: listen4、测试:
操作master
01.[root@localhost bin]# telnet 127.1 1121102.Trying 127.0.0.1...03.Connected to localhost.localdomain (127.0.0.1)...04.Escape character is '^]'.05.get key106.END07.set key1 0 0 208.aa09.STORED10.quit11.Connection closed by foreign host.查看slave
01.[root@localhost bin]# telnet 127.1 1121202.Trying 127.0.0.1...03.Connected to localhost.localdomain (127.0.0.1)...04.Escape character is '^]'.05.get key106.VALUE key1 0 207.aa08.END09.quit10.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.gz3.cd libevent-1.4.9-stable/4../configure --prefix=/usr5.make && make install6.cd ../b、编译安装Memcached:
2.tar zxvf memcached-1.2.6.tar.gz3.cd memcached-1.2.6/4../configure --with-libevent=/usr5.make && make install6.cd ../c、编译安装magent:
01.mkdir magent02.cd magent/04.tar zxvf magent-0.5.tar.gz05./sbin/ldconfig06.sed -i "s#LIBS = -levent#LIBS = -levent -lm#g" Makefile07.make08.cp magent /usr/bin/magent09.cd ../2、使用实例:
1.memcached -m 1 -u root -d -l 127.0.0.1 -p 112112.memcached -m 1 -u root -d -l 127.0.0.1 -p 112123.memcached -m 1 -u root -d -l 127.0.0.1 -p 112134.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 1200002.Trying 127.0.0.1...03.Connected to 127.0.0.1.04.Escape character is '^]'.05.stats06.memcached agent v0.407.matrix 1 -> 127.0.0.1:11211, pool size 008.matrix 2 -> 127.0.0.1:11212, pool size 009.END10.set key1 0 0 811.zhangyan12.STORED13.set key2 0 0 814.zhangyan15.STORED16.quit17.Connection closed by foreign host.18. 19.[root@centos52 ~]# telnet 127.0.0.1 1121120.Trying 127.0.0.1...21.Connected to 127.0.0.1.22.Escape character is '^]'.23.get key124.END25.get key226.VALUE key2 0 827.zhangyan28.END29.quit30.Connection closed by foreign host.31. 32.[root@centos52 ~]# telnet 127.0.0.1 1121233.Trying 127.0.0.1...34.Connected to 127.0.0.1.35.Escape character is '^]'.36.get key137.VALUE key1 0 838.zhangyan39.END40.get key241.END42.quit43.Connection closed by foreign host.44. 45.[root@centos52 ~]# telnet 127.0.0.1 1121346.Trying 127.0.0.1...47.Connected to 127.0.0.1.48.Escape character is '^]'.49.get key150.VALUE key1 0 851.zhangyan52.END53.get key254.VALUE key2 0 855.zhangyan56.END57.quit58.Connection closed by foreign host.模拟11211、11212端口的Memcached死掉
01.[root@centos52 ~]# ps -ef | grep memcached02.root 6589 1 0 01:25 ? 00:00:00 memcached -m 1 -u root -d -l 127.0.0.1 -p 1121103.root 6591 1 0 01:25 ? 00:00:00 memcached -m 1 -u root -d -l 127.0.0.1 -p 1121204.root 6593 1 0 01:25 ? 00:00:00 memcached -m 1 -u root -d -l 127.0.0.1 -p 1121305.root 6609 6509 0 01:44 pts/0 00:00:00 grep memcached06.[root@centos52 ~]# kill -9 658907.[root@centos52 ~]# kill -9 659108.[root@centos52 ~]# telnet 127.0.0.1 1200009.Trying 127.0.0.1...10.Connected to 127.0.0.1.11.Escape character is '^]'.12.get key113.VALUE key1 0 814.zhangyan15.END16.get key217.VALUE key2 0 818.zhangyan19.END20.quit21.Connection closed by foreign host.模拟11211、11212端口的Memcached重启复活
01.[root@centos52 ~]# memcached -m 1 -u root -d -l 127.0.0.1 -p 1121102.[root@centos52 ~]# memcached -m 1 -u root -d -l 127.0.0.1 -p 1121203.[root@centos52 ~]# telnet 127.0.0.1 1200004.Trying 127.0.0.1...05.Connected to 127.0.0.1.06.Escape character is '^]'.07.get key108.END09.get key210.END11.quit12.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的技术团队)开发的一套分布式内存对象缓存系统,用于在动态系统中减少数据库负载,提升性能.关于这个东西,相信很多人都用过,本文意在通过对 ...
随机推荐
- tomcat修改默认端口
1.webserver: tomcat2.version: Apache Tomcat/7.0.293.operation: 修改默认端口 3.1 修改tomcat目录下的/conf/server ...
- PHP-preg_replace过滤字符串代码
$str=preg_replace("/\s+/", " ", $str); //过滤多余回车 $str=preg_replace("/& ...
- c# @符号后面对 双引号转义
本文讲述c#中如何转义双引号. c#中转义双引号",使用的转义字符仍然是\. string str = "\"www.itjsxx.com\""; 但 ...
- Laravel5.1 搭建博客 --展示简单的首页
今天起开始搭建博客,把之前学的东西运用下. 1 创建 配置项目 1.1 创建项目 composer create-project laravel/laravel blog 5.1.1 1.2 配置数据 ...
- Duilib教程-自动布局2
在上一节中,我简单介绍了控件随父LAYOUT自由移动的设置.在这一节,我将介绍一种常见的情况:嵌入窗口. 在项目中,我们很少会100%的编写一个软件,特别是界面相关的,我们会使用以前已经编写好的窗口, ...
- 记一次androidd登陆页面的实现
背景 先说个事:最近我准备做个开源的博客园android客户端!符合Google最新的material design设计风格的!不知道有没有小伙伴愿意和我一起做呢?如果有愿意的,请私信我哦!!!!我还 ...
- Delphi xe7 android实现透明度可以调整的对话框
Delphi xe7 android实现透明度可以调整的对话框 Delphi xe7 android实现透明度可以调整的对话框 Delphi xe7 android实现透明度可以调整的对话框 要实现对 ...
- $routeParams传递路由参数
$routeParams传的值是一个对象数组. 案例: index.html <!DOCTYPE html> <html lang="zh-cn" data-ng ...
- sql server 作业没跑、开启sql 代理服务、新建作业
sql server 数据库中设置了晚上跑的作业,以前没注意,后来换了服务器建了新的虚拟机后第二天发现作业没跑. 主动执行作业可以实现目的,但是他不会自动执行,那么问题来了,为啥呢? 没有开启SQL ...
- iOS UIModalPresentationFormSheet风格下的键盘隐藏
1. 在UIModalPresentationFormSheet(iPad device, without a UINavigationController)下的视图中,如果使用 [inputView ...