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配置 - 学习中间件调优管 ...
随机推荐
- 北邮连接bupt-mobile
内容源自:[伪攻略]电脑(win10)连接BUPT-mobile教程 1.控制面板:控制面板\网络和 Internet\网络连接 右键——属性,记住网络配置器的名字(划线部分) 点击配置——高级——网 ...
- Maven Dependencies 不见了
解决办法: 1. 选中项目 --> 右键 --> Maven --> Disable Maven Nature 此时,右键菜单中将隐藏[Maven]菜单选项 2. 选中项目 --&g ...
- DataGridView绑定泛型List时,利用BindingList来实现增删查改
DataGridView绑定泛型List时,利用BindingList来实现增删查改 一. DataGridView绑定泛型List的种种 1.DataGridView数据绑定对比(DataTa ...
- jenkins+testNG
1.项目的pom.xml要配置插件,同时指定testng.xml文件的位置.就被这个卡了好久 <properties> <maven-surefire-plugin.version& ...
- 帮助自定义选择框样式的Javascript - DropKick.js
来源:GBin1.com 在线演示 在线下载 当你想要设计一个页面样式时,没有什么比表单更让人头疼了.而当你设计一个表单的样式时,最让你头疼的就应该非下拉框<select>莫属了. 我们 ...
- ActiveRecord::StatementInvalid (Mysql2::Error: Incorrect string value:
今天碰到一个相当棘手的问题,那就是ActiveRecord::StatementInvalid (Mysql2::Error: Incorrect string value . 本来在本地测试是没有任 ...
- Solidworks如何等比例缩小放大模型
比如初始化的模型,笔记本长度只有120mm,实际上应该是3倍左右 右击特征,勾选模具工具,然后可以发现多出来一个页面 点击比例缩放,选中要缩放的特征,设置比例,然后打钩 可以发现已经缩放到 ...
- oc和swift混编 使用use_frameworks!后编译出错
Swift项目中同时使用OC的库和Swift的库时,用CocoaPods导入时添加use_frameworks! 如果在cocoapods 里面不使用use_frameworks!,则是通过stati ...
- .Net Framemwork 之 值类型和引用类型的存储
C#把数据类型分为两种:值类型 和 引用类型.值类型存储在堆栈中,而引用类型存储在托管堆上. 一.值类型和引用类型变量的存储 首先,变量是存储信息的基本单元,而对于计算机内部来说,变量就相当于一块内存 ...
- Vue 组件与复用
(1)全局注册 <!DOCTYPE html> <html lang="zh"> <head> <meta charset="U ...