现在的位置: 首页 > 综合 > 正文

Centos6.4 memcached+libevent+magent集群部署

2019年06月21日 ⁄ 综合 ⁄ 共 3434字 ⁄ 字号 评论关闭

最近2天都在学习memcached分布式集群部署,发现在windows下还是不行,所以对于我这个linux小白来说比较吃力,废话不多说直接开始步骤,根据步骤来肯定可以成功的。

good luck!!!

1、安装了gcc环境

由于memcached和libevent是由C编写的,所以首先确保你的系统安装了gcc,如果没有安装,使用yum安装即可命令:     

<span style="font-size:12px;">1、yum -y install gcc   
2、yum -y install gcc-c++ </span>

2、编译安装libevent:

 如果你选择用linux指令下载压缩包,请按照下面方式进行,如果你自己在电脑中直接下载可以省略第1步

<span style="font-size:12px;">wget <a target=_blank href="http://monkey.org/~provos/libevent-1.4.9-stable.tar.gz" target="_blank"><span style="color: rgb(79, 99, 113);" color="#4f6371">http://monkey.org/~provos/libevent</span></a><a target=_blank href="http://monkey.org/~provos/libevent-2.0.21-stable.tar.gz">-2.0.21-stable.tar.gz</a>
tar zxvf libevent-2.0.21-stable.tar.gz  ##解压
cd libevent-2.0.21-stable/   
./configure --prefix=/usr
make 
make install</span>
<span style="font-size:12px;">测试是否安装成功: 查看下/usr/lib是否有libevent等文件(ls -al /usr/lib | grep libevent)     
</span>

3、编译安装Memcached:

 如果你选择用linux指令下载压缩包,请按照下面方式进行,如果你自己在电脑中直接下载可以省略第1步

<span style="font-size:12px;">wget <a target=_blank href="http://danga.com/memcached/dist/memcached-1.4.15.tar.gz">http://danga.com/memcached/dist/memcached-1.4.15.tar.gz</a>
tar zxvf memcached-1.4.15.tar.gz
cd memcached-1.4.15/
./configure --with-libevent=/usr
make
make install</span>
<span style="font-size:12px;">测试是否安装成功:(ls -al /usr/local/bin/memcached)</span>

<span style="font-size:12px;">以下是memcache的命令参数解释: 
-p <num>          监听的端口 
-l <ip_addr>      连接的IP地址, 默认是本机 
-d start          启动memcached 服务 
-d restart        重起memcached 服务 
-d stop|shutdown  关闭正在运行的memcached 服务 
-d install        安装memcached 服务 
-d uninstall      卸载memcached 服务 
-u <username>     以<username>的身份运行 (仅在以root运行的时候有效) 
-m <num>          最大内存使用,单位MB。默认64MB 
-M                内存耗尽时返回错误,而不是删除项 
-c <num>          最大同时连接数,默认是1024 
 -f <factor>       块大小增长因子,默认是1.25 
 -n <bytes>        最小分配空间,key+value+flags默认是48 
-h                显示帮助          </span>
<span style="font-size:12px;">接下来我给自己开了3个memcached 端口:
memcached -m 1 -u root -d -l 192.168.1.177 -p 11211
memcached -m 1 -u root -d -l 192.168.1.177 -p 11212
memcached -m 1 -u root -d -l 192.168.1.177 -p 11213</span>
<span style="font-size:12px;">使用ps aux|grep memcached可以查看端口详细情况。</span>

4、编译安装magent:

如果你选择用linux指令下载压缩包,请按照下面方式进行,如果你自己在电脑中直接下载可以省略第3步,这里之所以和前面不一样是因为解压的时候不会像上面2种创建文件夹,所以要手动自己创建文件夹。

mkdir magent
cd magent/
wget <a target=_blank href="http://memagent.googlecode.com/files/magent-0.6.tar.gz">http://memagent.googlecode.com/files/magent-0.6.tar.gz</a>
tar zxvf magent-0.6.tar.gz
/sbin/ldconfig
sed -i "s#LIBS = -levent#LIBS = -levent -lm#g" Makefile
make
cp magent /usr/bin/magent
cd ../

如果在第7不make的时候出现如下错误:

gcc -lrt -Wall -g -O2 -I/usr/local/include -m64 -c -o magent.o magent.c  
02.magent.c: In function ‘writev_list’:  
03.magent.c:729: error: ‘SSIZE_MAX’ undeclared (first use in this function)  
04.magent.c:729: error: (Each undeclared identifier is reported only once  
05.magent.c:729: error: for each function it appears in.)  
06.make: *** [magent.o] Error 1  

解决办法如下:

vi ketama.h

在开头加入

01.#ifndef SSIZE_MAX  
02.# define SSIZE_MAX      32767  
03.#endif
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

a、分别在11211,、11212、11213端口启动memcached实例,在12000端口开启magent代理实例

b、11211、11212端口为主memcached,11213为备份memcached。

c、客户端连接12000端口,连接magent,进行memcached操作,相应的值会写到11211,、11212、11213三个端口的实例。

d、当11211、11212端口的Memcached死掉,连接到12000端口的magent取数据,数据会从11213端口的Memcached取出;当11211和11212重启之后,连接到12000端口的magent取数据,数据会丢失。

e、当11211端口的Memcached死掉,magent会从11212端口的memcached取值,重启11211端口的memcached实例,连接12000端口的magent取值,不会发生错误,但11211的memcached实例的数据已经丢失。

5、安装telnet

查看telnet是否安装 
查看telnet客户端是否安装:

# rpm -q telnet


若无安装,则执行:

# yum -y install telnet 


查看telnet服务端是否安装:

# rpm -q telnet-server

若无安装,则执行:

# yum -y install telnet-server

安装完成后你就可以在linux指令栏中直接使用 telnet 192.168.1.177 11211 直接连接系统的memcached端口。



































抱歉!评论已关闭.