`

magent解决memcached集群问题

阅读更多

 

magent解决memcached集群问题

 

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 ../

 

测试libevent库是否安装成功:

ls -al /usr/lib |grep libevent

显示如下:

 

lrwxrwxrwx  1 root root     21 Dec 12 20:28 libevent-2.0.so.5 -> libevent-2.0.so.5.1.4

-rwxr-xr-x  1 root root 762242 Dec 12 20:28 libevent-2.0.so.5.1.4

 


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 ../

 

 

测试memcached服务端是否安装成功:

ls -al /usr/local/bin/memcached

显示如下:

-rwxr-xr-x 1 root root 222925 Dec 12 20:39 /usr/local/bin/memcached

这样就OK了,memcached服务端就安装成功了

 

Memcached服务加载到Linux的启动项中.万一机器断电系统重启.那么Memcached就会自动启动了.

假如启动Memcache的服务器端的命令为:
# /usr/local/bin/memcached -d -m 10 -u root -l 192.168.141.64 -p 12000 -c 256 -P /tmp/memcached.pid容来自17jquery

想开机自动启动的话,只需在/etc/rc.d/rc.local中加入一行,下面命令
/usr/local/memcached/bin/memcached -d -m 10 -p 12000 -u apache -c 256
上面有些东西可以参考一下:即,ip不指定时,默认是本机,用户:最好选择是:apache 或 deamon
这样,也就是属于哪个用户的服务,由哪个用户启动。


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 size 0

matrix 2 -> 127.0.0.1:11212, pool size 0

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

注意: 服务器上的GCC是否安装

rpm -q gcc

分享到:
评论

相关推荐

    memcached集群linux搭建

    **Memcached集群Linux搭建** Memcached是一款高性能的分布式内存缓存系统,用于减轻数据库的负载,提高Web应用的响应速度。在Linux环境下搭建Memcached集群是优化服务性能的关键步骤,尤其是对于那些处理大量数据和...

    Memcached集群搭建

    **Memcached集群搭建** Memcached是一款高性能、分布式内存对象缓存系统,用于减轻数据库负载,提高Web应用性能。本文将详细介绍如何在多个服务器上搭建一个Memcached集群,以实现数据的高可用性和负载均衡。 ### ...

    tomcat + apache + memcached 集群jar包

    标题中的“tomcat + apache + memcached 集群jar包”揭示了这是一个关于构建分布式系统的技术组合,其中涉及到三个核心组件:Tomcat(一个流行的Java应用服务器)、Apache(一个广泛应用的HTTP服务器)和Memcached...

    memcache集群搭建.txt

    这个是Linux系统memcached集群的搭建方法,需要用到magnet包,libevent和memcached

    tomcat与memcached集群jar

    标题中的“tomcat与memcached集群jar”指的是在Apache Tomcat服务器上集成Memcached缓存技术所需的Java档案(JAR)文件。Tomcat是流行的开源Java应用服务器,用于部署和运行Java Servlet和JavaServer Pages(JSP)。...

    tomcat6 Memcached集群

    总结来说,整合Tomcat6与Memcached集群实现了跨服务器的Session共享,解决了分布式环境下的会话一致性问题,提升了系统的可扩展性和可用性。同时,这种方案也有助于减少对单个服务器的依赖,提高整体系统的容错能力...

    Nginx+Tomcat+Memcached集群Session共享实例

    Nginx+Tomcat+Memcached集群Session共享实例,Nginx 1.81 + tomcat1 + tomcat2 + Memcached 完整可运行 访问根目录下 test.jsp 可看效果

    Tomcat7-Memcached集群Session所需jar包

    Tomcat7-Memcached集群Session解决方案就是为了解决这个问题。它利用Memcached这个高性能、分布式的内存对象缓存系统来存储和管理用户的Session数据,从而实现Session在不同服务器之间的共享。以下是关于这个主题的...

    Nginx+Tomcat+Memcached集群 所需jar包集合

    couchbase-client-1.2.2.jar ...memcached-session-manager-1.6.5.jar memcached-session-manager-tc6-1.6.5.jar minlog-1.2.jar msm-kryo-serializer-1.6.5.jar reflectasm-0.9.jar spymemcached-2.10.2.jar

    memcached集群安装教程

    挺实用的memcached集群安装教程

    tomcat7 memcached集群

    标题中的“tomcat7 memcached集群”指的是在Tomcat 7这个流行的Java应用服务器中,利用memcached构建的分布式缓存系统,以实现session共享。Session共享是Web应用程序中的一个关键概念,它允许用户在不同服务器之间...

    memcached单机到集群完整搭建过程.zip

    memcached单机到集群完整搭建过程

    Nginx+Tomcat+Memcached集群

    在构建高性能、高可用性的Web服务时,"Nginx+...总之,"Nginx+Tomcat+Memcached集群"的架构为Web应用提供了高可用性和高性能的解决方案,通过合理配置和优化,可以有效地处理大规模用户请求,保证服务的稳定运行。

    nginx tomcat memcached 集群 session共享

    这里我们讨论的主题是如何通过Nginx、Tomcat和Memcached来实现集群环境下的session共享。Nginx作为反向代理服务器,负责负载均衡,Tomcat作为应用服务器运行Java Web应用程序,而Memcached则作为分布式内存缓存系统...

    nginx+tomcat+memcached集群和负载均衡所有资源包

    nginx+tomcat+memcached集群和负载均衡所有资源包,具体集群方法请参见博文:http://blog.csdn.net/l1028386804/article/details/48289765

    Nginx+Tomcat+Memcached集群Session共享

    为了解决这个问题,引入了Memcached,这是一个高性能的分布式内存对象缓存系统。在Nginx+Tomcat集群中,Memcached作为集中式的Session存储。当一个用户在任一Tomcat服务器上创建Session时,Session数据会被存储到...

    tomcat使用memcached集群session共享(转载并修改)

    标题 "Tomcat 使用 Memcached 集群进行 Session 共享" 描述了一种在分布式环境中解决 Web 应用程序 Session 共享问题的技术。在传统的 Web 服务器中,Session 数据通常存储在单个服务器的内存中,这限制了可扩展性。...

    apache+tomcat+memcached集群

    apache 集群tomcat,session管理使用memcached,可部署javaweb,javaee的项目. 压缩包包含安装配置文档,apache no ssl 32bit 64bit,memcached 32bit 64bit安装文件以及tomcat所需要的jar,以及主要apache的配置文件. ...

    memcached实现集群的session共享问题

    memcached实现集群的session共享问题,处理集群服务器情况下,memcached的session共享解决方案

    Memcached 内存分析、调优、集群

    Memcached作为一款成熟的分布式内存缓存解决方案,已经被广泛应用于各种高性能Web应用场景中。通过对内存分配机制、性能优化技巧以及集群部署策略的理解,可以有效地提升Web应用的整体性能。未来随着技术的发展,...

Global site tag (gtag.js) - Google Analytics