设为首页 收藏本站
查看: 1402|回复: 0

[经验分享] Memcached无单点解决方案

[复制链接]

尚未签到

发表于 2018-12-25 13:25:15 | 显示全部楼层 |阅读模式
一.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版本
  #wget http://downloads.sourceforge.net/repcached/memcached-1.2.8-repcached-2.2.tar.gz
  #tar zxf memcached-1.2.8-repcached-2.2.tar.gz
  #cd memcached-1.2.8-repcached-2.2
  【方式二、下载对应patch版本
  #wget http://downloads.sourceforge.net/repcached/repcached-2.2-1.2.8.patch.gz
  #gzip -cd ../repcached-2.2-1.2.8.patch.gz | patch -p1】
  #./configure –enable-replication
  # make
  # make install
  3、启动:
  启动master
  # ./memcached -v -u root -d -l 127.0.0.1 -p 11211 -x 127.0.0.1 -X 11111   (11211:master端口;11111:同步端口)

  启动salve
  # ./memcached -v -u root -d -l 127.0.0.1 -p 11212 -x 127.0.0.1 -X 11111   (11212:slave端口;11111:同步端口)

  4、测试:
  操作master

  查看slave

  注意:如果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、编译安装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 ../
  2、编译安装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 ../
  3、编译安装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
  cd ../
  二、使用实例:
  memcached -m 1 -u root -d -l 127.0.0.1 -p 11211
  memcached -m 1 -u root -d -l 127.0.0.1 -p 11212
  memcached -m 1 -u root -d -l 127.0.0.1 -p 11213
  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
  1、分别在11211、11212、11213端口启动3个Memcached进程,在12000端口开启magent代理程序;
  2、11211、11212端口为主Memcached,11213端口为备份Memcached;
  3、连接上12000的magent,set key1和set key2,根据哈希算法,key1被写入11212和11213端口的Memcached,key2被写入11212和11213端口的Memcached;
  4、当11211、11212端口的Memcached死掉,连接到12000端口的magent取数据,数据会从11213端口的Memcached取出;
  5、当11211、11212端口的Memcached重启复活,连接到12000端口,magent会从11211或11212端口的Memcached取数据,由于这两台Memcached重启后无数据,因此magent取得的将是空值,尽管11213端口的Memcached还有数据(此问题尚待改进)。
  三、整个测试流程:
  [root@centos52 ~]# telnet 127.0.0.1 12000
  Trying 127.0.0.1…
  Connected to 127.0.0.1.
  Escape character is ‘^]’.
  stats
  memcached agent v0.4

  matrix 1 -> 127.0.0.1:11211, pool>
  matrix 2 -> 127.0.0.1:11212, pool>  END
  set key1 0 0 8
  zhangyan
  STORED
  set key2 0 0 8
  zhangyan
  STORED
  quit
  Connection closed by foreign host.
  [root@centos52 ~]# telnet 127.0.0.1 11211
  Trying 127.0.0.1…
  Connected to 127.0.0.1.
  Escape character is ‘^]’.
  get key1
  END
  get key2
  VALUE key2 0 8
  zhangyan
  END
  quit
  Connection closed by foreign host.
  [root@centos52 ~]# telnet 127.0.0.1 11212
  Trying 127.0.0.1…
  Connected to 127.0.0.1.
  Escape character is ‘^]’.
  get key1
  VALUE key1 0 8
  zhangyan
  END
  get key2
  END
  quit
  Connection closed by foreign host.
  [root@centos52 ~]# telnet 127.0.0.1 11213
  Trying 127.0.0.1…
  Connected to 127.0.0.1.
  Escape character is ‘^]’.
  get key1
  VALUE key1 0 8
  zhangyan
  END
  get key2
  VALUE key2 0 8
  zhangyan
  END
  quit
  Connection closed by foreign host.
  模拟11211、11212端口的Memcached死掉
  [root@centos52 ~]# ps -ef | grep memcached
  root      6589     1  0 01:25 ?        00:00:00 memcached -m 1 -u root -d -l 127.0.0.1 -p 11211
  root      6591     1  0 01:25 ?        00:00:00 memcached -m 1 -u root -d -l 127.0.0.1 -p 11212
  root      6593     1  0 01:25 ?        00:00:00 memcached -m 1 -u root -d -l 127.0.0.1 -p 11213
  root      6609  6509  0 01:44 pts/0    00:00:00 grep memcached
  [root@centos52 ~]# kill -9 6589
  [root@centos52 ~]# kill -9 6591
  [root@centos52 ~]# telnet 127.0.0.1 12000
  Trying 127.0.0.1…
  Connected to 127.0.0.1.
  Escape character is ‘^]’.
  get key1
  VALUE key1 0 8
  zhangyan
  END
  get key2
  VALUE key2 0 8
  zhangyan
  END
  quit
  Connection closed by foreign host.
  模拟11211、11212端口的Memcached重启复活
  [root@centos52 ~]# memcached -m 1 -u root -d -l 127.0.0.1 -p 11211
  [root@centos52 ~]# memcached -m 1 -u root -d -l 127.0.0.1 -p 11212
  [root@centos52 ~]# telnet 127.0.0.1 12000
  Trying 127.0.0.1…
  Connected to 127.0.0.1.
  Escape character is ‘^]’.
  get key1
  END
  get key2
  END
  quit
  Connection closed by foreign host.
  优点:
  可以做多主或多从
  缺点:
  当master宕掉又恢复后,取不到数据。
三.Repcached和Magent结合
  安装memcached 1.2.8、repcached 2.2.1、magent 0.5
  大体架构:
  测试流程:

  •   启动memcached和magent
  开启代理,代理端口为12000,设置127.0.0.1:11211为主,127.0.0.1:11212为从。
  magent -u root -p 12000 -s 127.0.0.1:11211 -b 127.0.0.1:11212
  启动两个memcached进程,做数据同步,同步端口为11111。
  ./memcached -u root -d -l 127.0.0.1 -p 11211 -x 127.0.0.1 -X 11111
  ./memcached -u root -d -l 127.0.0.1 -p 11212 -x 127.0.0.1 -X 11111

  •   从代理写入数据,在两台memcached上查看。

  2. 模拟主或从memcached宕机后,数据是否存在。

  3. 模拟主或从memcached恢复后,数据是否存在/同步。

  优点:
  数据冗余
  两台memcached都可进行读写操作
  可以做多主或多从(未测试)
  缺点:
  只支持memcached 1.2.x版本
  http://haiker.iteye.com/blog/1754031


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-655740-1-1.html 上篇帖子: linux下memcached安装以及启动 下篇帖子: memcached.c 源码分析
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表