Memcached集群:Magent缓存代理使用
小结:
memcached -d -p 11211 -u memcached -m 64 -c 5120
memcached -d -p 11212 -u memcached -m 64 -c 5120
magent -u root -n 5120 -l 182.92.162.254 -p 12000 -s 182.92.162.254:11211 -b 182.92.162.254:11212
magent -u root -n 5120 -l 182.92.162.254 -p 12001 -s 182.92.162.254:11212 -b 182.92.162.254:11211
安装依赖库
yum install libevent-devel libevent
magent安装参见Memcached代理软件magent安装小结
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;
防止单点现象,对缓存代理也可以做备份,客户端连接到缓存代理服务器,缓存代理服务器连接多个缓存服务器,如:
- Magent代理服务器:2台,分别为 192.168.1.2:12000、192.168.1.3:12000
- Memcached主服务器:3台,分别为 192.168.1.4:11211、192.168.1.5:11211、192.168.1.6:11211
- Memcached备服务器:2台,分别为 192.168.1.7:11211、192.168.1.8:11211
在 192.168.1.4-8 上分别编译安装并运行Memcached
在 192.168.1.2-3 上分别 编译安装 magent
magent命令
-h this message -u uid -g gid -p port, default is 11211. (0 to disable tcp support)-s ip:port, set memcached server ip and port -b ip:port, set backup memcached server ip and port -lip, localbindip address, default is 0.0.0.0 -n number, set max connections, default is 4096最大连接数 -Ddo not go to background -k use ketama key allocation algorithm -ffile, unix socket path to listen on. default is off -i number, max keep alive connections for one memcached server, default is 20-v verbose
在 192.168.1.2、192.168.1.3 上分别运行 magent(注意修改-l后的IP):
magent -u root -n 51200 -l 192.168.1.2 -p 12000 -s 192.168.1.4:11211 -s 192.168.1.5:11211 -s
192.168.1.6:11211 -b 192.168.1.7:11211 -b 192.168.1.8:11211
以前,我们用PHP连接多台Memcached服务器,做分布式缓存时,参考代码如下:
$memcache=new Memcache; $memcache->addServer('localhost',11211); $memcache->addServer('localhost',11212); $memcache->addServer('localhost',11213); for($i=0;$i<1000;$i++) { $memcache->set($i,$i,0,1000); }
现在,连接的主机不是Memcached服务器了,而是 Magent代理服务器,给 addServer()方法传参时,传入的是Magent主机IP
与端口!测试代码如下:
$mem=new \Memcache(); $host='192.168.1.2'; $port='12000 '; $mem->connect($host,$port); $key1='elesos1'; $value1='1'; $mem->add($key1,$value1); $key2='elesos2'; $value2='2'; $mem->add($key2,$value2);
如果出现连接不上,请检查IP是否正确!
说明:
- 1、PHP连接magent,把缓存key1交给magent,magent根据自身的配置参数,再加上一定的哈希算法,会计算出key1存在3台主Memcached服务器的某一台上,然后以同样的算法,将key1也在2台备用的Memcached服务器中的某一台上,再存一份数据。
即,主服务器是分布式存储的,同时,从服务器也是分布式存储的;
- 2、在PHP获取缓存数据key1时,magent一旦得知数据所存的那台主Memcached服务器挂掉了,它就会转向从备用的Memcached服务器中获取数据。注意:服务器的定位选择算法跟存的时候是一样的。
- 3、有个缺陷,当 down 掉的那台主Memcached服务器重新恢复正常后,Memcahed里是没有数据的,即数据全部丢失,但此时备用的Memcached服务器又不会将数据同步到主服务器。
- 4、可通过Memcached管理软件MemAdmin查看数据分布情况。
magent与memcached 是可以混搭的,不必死板的一个magent s-memcached s-memcached b-memcached
magent也可以连magent的。
Memcached重启复活后无数据,因此magent取得的将是空值,尽管备份Memcached还有数据。可采用定时维护服务器,恢复memcached。
[编辑]艺搜参考
http://blog.snsgou.com/post-800.html
http://www.cnblogs.com/happyday56/p/3461113.html
Memcached集群:Magent缓存代理使用的更多相关文章
- CentOS6.3编译安装Memcached集群分布式缓存代理Magent-0.6出错汇总
参考文章:Memcached集群/分布式/高可用 及 Magent缓存代理搭建过程 详解,搭建Magent,在编译的过程中会出现很多错误: #编译安装安装magent到 /usr/local/mage ...
- Memcached集群/分布式/高可用 及 Magent缓存代理搭建过程 详解
当网站访问量达到一定时,如何做Memcached集群,又如何高可用,是接下来要讨论的问题. 有这么一段文字来描述“Memcached集群” Memcached如何处理容错的? 不处理!:) 在memc ...
- Magent搭建Memcached集群
原文地址:http://ultrasql.blog.51cto.com/9591438/1636374 Memcached集群介绍 由于Memcached服务器与服务器之间没有任何通讯,并且不进行任何 ...
- memcached+magent实现memcached集群
首先说明下memcached存在如下问题 本身没有内置分布式功能,无法实现使用多台Memcache服务器来存储不同的数据,最大程度的使用相同的资源:无法同步数据,容易造成单点故障.(memagent代 ...
- [转]memcached+magent实现memcached集群
From : http://www.cnblogs.com/happyday56/p/3461113.html 首先说明下memcached存在如下问题 本身没有内置分布式功能,无法实现使用多台Mem ...
- Ubuntu 16.04通过Magent搭建Memcached集群(转)
一.下载Magent 官网:https://code.google.com/archive/p/memagent/downloads 离线版本:(链接: https://pan.baidu.com/s ...
- Mcrouter-基于Memcached协议的缓存层流量管理工具(Memcached集群的另一个选择)(转)
Mcrouter 是一个基于Memcached协议的路由器,它是 Facebook缓存架构的核心组件,在峰值的时候,它能够处理每秒50亿次的请求.近日,Facebook开放了Mcrouter的源代码, ...
- memcached集群
借鉴:http://www.cnblogs.com/happyday56/p/3461113.html 首先说明下memcached存在如下问题 本身没有内置分布式功能,无法实现使用多台Memcach ...
- Nginx+Tomcat+MemCached 集群配置手册
系统实施文档 Nginx+Tomcat+MemCached 集群配置手册 目 录 第1章 概述 1.1 目标 互联网的快速发展带来了互联网系统的高负载和高可用性, 这要求我们在设计系统架 ...
- Memcached 集群架构与memcached-session-manager
Memcached 集群架构方面的问题_知识库_博客园https://kb.cnblogs.com/page/69074/ memcached-session-manager配置 - 学习中间件调优管 ...
随机推荐
- 用sencha touch的Cmd创建的MVC工程需要注意的问题
用ST的cmd创建的js文件都是ANSI编码格式的,所以导致无法正常显示中文.例如传输的参数为中文时就为乱码,导致各种问题... 解决办法:将js文件用记事本打开,另存为,选择编码为UTF-8,覆盖原 ...
- Spring框架学习(5)spring整合struts2
内容源自:spring整合struts2 一.spring框架对struts等表现层框架的整合原理 : 使用spring的ioc容器管理struts中用于处理请求的Action 将Action配置成i ...
- shorthand trick with boolean expressions
https://stackoverflow.com/questions/2802055/what-does-the-construct-x-x-y-mean --------------------- ...
- PHP图像操作:3D图、缩放、旋转、裁剪、加入水印(一)
来源:http://www.ido321.com/875.html 1.利用php gd库的函数绘制3D扇形统计图 1: <?php 2: header("content-type&q ...
- 集合系列之fail-fast 与fail-safe 区别
一:快速失败(fail—fast) 在用迭代器遍历一个集合对象时,如果遍历过程中对集合对象的内容进行了修改(增加.删除.修改),则会抛出Concurrent Modification Exceptio ...
- MPlayer源代码分析
http://blog.csdn.net/leixiaohua1020/article/details/11885509 一.Mplayer支持的格式 MPlayer是一个LINUX下的视频播放器,它 ...
- android adb 权限改动
1. 改动 ADB ROOT权限: system/core$ git diff adb/adb.c diff --git a/adb/adb.c b/adb/adb.c index 99bea0f.. ...
- Unity3D系列教程--使用免费工具在Unity3D中开发2D游戏 第一节
声明: 本博客文章翻译类别的均为个人翻译,版权全部.出处: http://blog.csdn.net/ml3947,个人博客:http://www.wjfxgame.com. 译者说明:这是一个系 ...
- Webbrowser控件判断网页加载完毕的简单方法
一般情况下,当ReadyState属性变成READYSTATE_COMPLETE时,Webbrowser控件会通过触发DocumentCompleted事件来指示网页加载完毕.但当加载的网页包含fra ...
- CSS3使用Animation为同一个元素添加多个动画效果
本篇文章由:http://xinpure.com/css3-animation-for-the-same-element-multiple-animation-effects/ CSS3 Animat ...