标签:
Repcached介绍
Repchched项目地址:http://repcached.sourceforge.net/
关于repcached
“repcached”是一个补丁集合,它添加数据复制功能到memcached 1.2.x。
主要目的
Memcached 1.4.x的Repcached补丁
地址:http://mdounin.ru/
最新补丁:http://mdounin.ru/files/repcached-2.3.1-1.4.13.patch.gz
工作原理
repcached实现了memcached复制的功能,它是一个单master单slave的方案,但master/slave都是可读写的,而且可以相互同步,如果master坏掉slave侦测到连接断了,它会自动listen而成为master,这时坏掉的master只能启用为slave,它们之间互换角色,才能保持复制功能,换句话说,master没有抢占功能;而如果slave坏掉,master也会侦测到连接断,它就会重新listen等待新的slave加入。
应用场景
用memcached做session共享或其它服务时会存在memcached的单点故障,如果memcached宕机,那么整个系统用户无法登陆(session)。
基于这种情况,采用repcached做memcached的主从冗余
警告:repcached内存复制插件版本一定要和memcached版本一致,否则会出现版本不兼容等各种错误!
主从机器上必须都安装repcached插件
wget https://memcached.googlecode.com/files/memcached-1.4.13.tar.gz wget http://mdounin.ru/files/repcached-2.3.1-1.4.13.patch.gz tar zxvf memcached-1.4.13.tar.gz gzip -d repcached-2.3.1-1.4.13.patch.gz cd memcached-1.4.13 patch -p1 -i ../repcached-2.3.1-1.4.13.patch 以下命令路径要切换成自己的安装目录,还有 ./configure --prefix=/usr/local/mecached --with-libevent=/usr/local/libevent --enable-replication make && make install
出现的错误以及解决方法:
错误一:
在解压repcached文件时出现如下错误
gzip:stdin:not in gzip
tar:Child returned status 1
tar:由于前面的延迟的错误而退出
这是因为文件的下载链接不是直接指向文件,而是先指向一个页面,在这个页面里才是真的下载链接,所以在前一个页面上直接保存文件,实际上保存的是一个页面。解决办法:
首先用 file 命令查看该文件的真实属性,根据真实属性选择解压命令即可解决,遇到这样的错误提示记得查看该文件的真实属性,我这里file repcached-2.3.1-1.4.13.patch.gz得到的文件属性居然是html文件类型的,好家伙,难怪会提示不是gzip类型文件呢,原来是下载链接地址在wget 下下载的是html页面跳转地址,通过浏览器输入(如下)下载地址回车就得到了原始真实repcached的gzip包文件
http://mdounin.ru/files/repcached-2.3.1-1.4.13.patch.gz
错误二:
wget https://memcached.googlecode.com/files/memcached-1.4.13.tar.gz
去掉https模式改用http模式试试 wget http://memcached.googlecode.com/files/memcached-1.4.13.tar.gz
如果还无法打开源码包,可能是谷歌被封了,或者地址迁移了,请从下面链接地址进行下载即可:csdn memcached-1.4.13下载地址:http://download.csdn.net/detail/liaowuxukong/4578543
安装完毕了,下面我们来启动主从memcached服务器,主机为本地127.0.0.1 11211端口,从机为10.0.2.15 服务器的11222端口
/usr/local/memcached/bin/memcached -d -m -p 11222 -u nobody -l 10.0.2.15 -x 127.0.0.1 -X 11211 -P /tmp/localhost_slave.pid -vv
参数说明:
-x 设置从哪个IP上进行同步。
-X 指定数据同步的端口。
查看端口
netstat -tupln | grep memcached
tcp 0 0 127.0.0.1:11211 0.0.0.0:* LISTEN 12242/memcached验证数据同步
在Master创建数据:
[root@test01 bin]# telnet 127.0.0.1 11211
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is ‘^]‘.
get key1
END
set key1 0 0 2
aa
STORED
quit
Connection closed by foreign host.
在Slave获取数据:
[root@test02 bin]# telnet 10.0.2.15 11222
Trying 10.0.2.15...
Connected to 10.0.2.15.
Escape character is ‘^]‘.
get key1
END
get key1
VALUE key1 0 2
aa
END
quit
Connection closed by foreign host.
在Slave创建数据:
[root@test02 bin]# telnet 10.0.2.15 11222
Trying 10.0.2.15...
Connected to 10.0.2.15.
Escape character is ‘^]‘.
get key2
END
set key2 0 0 3
b
STORED
get key2
VALUE key2 0 3
b
END
quit
Connection closed by foreign host.
在Master获取数据:
[root@test01 bin]# telnet 127.0.0.1 11211
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is ‘^]‘.
get key2
VALUE key2 0 3
b
END
quit
Connection closed by foreign host.
Memcached高可用
启动Master和Slave时不要加-l参数指定监听地址,否则keepalived无法监听VIP的地址。
然后配置上keepalived就可以作为高可用了。
关于Mecached和php memcached扩展安装方法请参见 摘取天上星 的另外一篇博文:http://blog.csdn.net/zqtsx/article/details/26720849
本教程所使用软件包下载地址
memcached1.4.13
http://download.csdn.net/detail/zqtsx/8910705
版权声明:本文为博主原创文章,未经博主允许不得转载。
memcached内存复制/主从/主备模式之mecached1.4.13版
标签:
原文地址:http://blog.csdn.net/zqtsx/article/details/46934787