Memcached HA架构探索
magent是一款开源的Memcached代理服务器软件,可以用它做一些高可用架构尝试。目前magent已更新到0.6,我在centos 6.0 64bit机器上面未编译通过,所以我在这里用0.5的源码来测试;google项目地址:http://code.google.com/p/memagent/
一、安装步骤:
1、编译安装libevent:
[*]wget https://github.com/downloads/libevent/libevent/libevent-2.0.16-stable.tar.gz
[*]tar zxvf libevent-2.0.16-stable.tar.gz
[*]cd libevent-2.0.16-stable/
[*]./configure --prefix=/usr
[*]make && make install
[*]cd ../
2、编译安装Memcached:
[*]wget http://memcached.googlecode.com/files/memcached-1.4.14.tar.gz
[*]tar zxvf memcached-1.4.14.tar.gz
[*]cd memcached-1.4.14/
[*]./configure --prefix=/usr --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
[*]vim Makefile
[*]CFLAGS = -Wall -O2 -g
[*]改为:
[*]CFLAGS = -lrt -Wall -O2 -g
[*]sed -i "s#LIBS = -levent#LIBS = -levent -lm#g" Makefile
[*]vim ketama.h
[*]加入
[*]#ifndef SSIZE_MAX
[*]#define SSIZE_MAX 32767
[*]#endif
[*]make
[*]cp magent /usr/bin/magent
[*]cd ../
安装中常遇到的问题
[*]gcc -lrt -Wall -g -O2 -I/usr/local/include -m64 -c -o magent.o magent.c
[*]
[*]magent.c: In function ‘writev_list’:
[*]
[*]magent.c:729: error: ‘SSIZE_MAX’ undeclared (first use in this function)
[*]
[*]magent.c:729: error: (Each undeclared identifier is reported only once
[*]
[*]magent.c:729: error: for each function it appears in.)
[*]
[*]make: *** Error 1
解决办法:
[*]vim ketama.h
[*]
[*]加入
[*]
[*]#ifndef SSIZE_MAX
[*]#define SSIZE_MAX 32767
[*]#endif
二、高可用网络架构
此架构生产环境需要负载均衡器做负载,具体使用什么软件或硬件就要看你的具体情况来定了。
生产环境每台服务器分别启动一个memcached进程和magen进程做冗余
[*]memcached -d -m 256 -l 192.168.10.11 -p 11211 -u www -c 10240 -P /tmp/memcached.pid-vv >/home/logs/memcached.txt 2>&1
[*]memcached -d -m 128 -l 192.168.10.12 -p 11211 -u www -c 10240 -P /tmp/memcached.pid-vv >/home/logs/memcached.txt 2>&1
[*]memcached -d -m 128 -l 192.168.10.13 -p 11211 -u www -c 10240 -P /tmp/memcached.pid-vv >/home/logs/memcached.txt 2>&1
[*]
[*]magent -u www -n 51200 -l 192.168.10.11 -p 12000 -s 192.168.10.12:11211 -s 192.168.10.13:11211 -b 192.168.10.11:11211
[*]magent -u www -n 51200 -l 192.168.10.12 -p 12000 -s 192.168.10.12:11211 -s 192.168.10.13:11211 -b 192.168.10.11:11211
[*]magent -u www -n 51200 -l 192.168.10.13 -p 12000 -s 192.168.10.12:11211 -s 192.168.10.13:11211 -b 192.168.10.11:11211
参数说明:
-s 为要写入的memcached,
-b 为备份用的memcached。
说明:测试环境用magent和memached的不同端口来实现,在生产环境中可以将magent和memached作为一组放到多台服务器上。
看到了吧这样的架构最好做负载了,用一个VIP分别映射三台magent的12000端口即可。
#实验环境测试过程:
[*]# telnet 127.0.0.1 12000
[*]Trying 127.0.0.1…
[*]Connected to localhost.localdomain (127.0.0.1).
[*]Escape character is ‘^]’.
[*]set key 0 0 8
页:
[1]