Memcached 服务器集群安装配置和高可用测试

Memcached 服务器集群安装配置和高可用测试

1.在所有的节点上服务器上安装配置相应的软件包;

 

本文测试环境ip

10.0.0.2

10.0.0.4

一、安装步骤:
1、编译安装libevent

tar zxvf  libevent-1.4.11-stable.tar.gzble.tar.gz
cd  libevent-1.4.11-stable.tar.gzble/
./configure --prefix=/usr/
make && make install
cd ../

2、编译安装Memcached

tar zxvf memcached-1.2.8.tar.gzr.gz
cd memcached-1.2.6/
./configure --with-libevent=/usr
make && make install
cd ../

3、编译安装magent
mkdir magent
cd magent/

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

 

-----------------安装magent如果出现如下错误

gcc -Wall -O2 -g  -c -o magent.o magent.c
magent.c: 在函数‘writev_list’中:
magent.c:623: 错误:‘SSIZE_MAX’未声明(在此函数内第一次使用)
magent.c:623: 错误:(即使在一个函数内多次出现,每个未声明的标识符在其
magent.c:623: 错误:所在的函数内也只报告一次。)
make: *** [magent.o] 错误 1

ketama.h中加入

#ifndef SSIZE_MAX
#define SSIZE_MAX 32767
#endif

 

一、打开防火墙端口

在所有安装memcache的节点服务器上

打开防火墙的对外端口11211

/sbin/iptables -I INPUT -p tcp --dport 11211 -j ACCEPT #开启8011端口 

/etc/rc.d/init.d/iptables save #保存配置 

 iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]

/etc/rc.d/init.d/iptables restart #重启服务  


iptables: Flushing firewall rules:                         [  OK  ]
iptables: Setting chains to policy ACCEPT: filter          [  OK  ]
iptables: Unloading modules:                               [  OK  ]
iptables: Applying firewall rules:                         [  OK  ]

查看端口是否已经开放

/etc/init.d/iptables status 

结果如下 

 

[root@root ~]# /etc/init.d/iptables status
Table: filter
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination
1    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:11211
2    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
3    ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0
4    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
5    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22
6    REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited


Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination
1    REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited


Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination


以上表示11211端口都已经开放,并可以被其他局域网服务访问。

 

 

二、启动memcache服务和magent代理服务

也就是说通过magent能够写入两个memcached

在节点服务器10.0.0.2 的操作步骤是

启动memcached

memcached -m 1 -u root -d -l 10.0.0.2 -p 11211

代理10.0.0.2 10.0.0.4 memcached节点,并做互备;
magent -u root -n 51200 -l 10.0.0.2 -p 12000  -s 10.0.0.4:11211 -b 10.0.0.2:11211  -s 10.0.0.2:11211 -b 10.0.0.4:11211 

 

 

在节点服务器10.0.0.4的操作步骤是

启动memcached

memcached -m 1 -u root -d -l 10.0.0.4 -p 11211

代理10.0.0.2 10.0.0.4 memcached节点,并做互备;
magent -u root -n 51200 -l 10.0.0.4 -p 12000  -s 10.0.0.4:11211 -b 10.0.0.2:11211  -s 10.0.0.2:11211 -b 10.0.0.4:11211 

 

三、环境验证

在节点服务器10.0.0.2 的操作步骤是

验证是否memcached启动成功

#telnet 10.0.0.2 11211 

如显示如下信息:

Trying 10.0.0.2...

Connected to 10.0.0.2 (10.0.0.2).

Escape character is '^]'.

说明连接10.0.0.2机器的memcached的11211成功,否则连接不成功。

 

验证是否代理是否启动成功

 

[root@root ~]# telnet 10.0.0.2 12000

Trying 10.0.0.2...

Connected to 10.0.0.2.

Escape character is '^]'.

stats测试代理2个节点成功

stats

memcached agent v0.4

matrix 1 -> 10.0.0.4:11211, pool size 0

matrix 2 -> 10.0.0.2:11211, pool size 1

END

说明连接10.0.0.4magen代理成功,否则连接不成功。


#quit (退出telnet

 

 

在节点服务器10.0.0.4的操作步骤是

验证是否memcached启动成功

#telnet 10.0.0.4 11211 

如显示如下信息:

Trying 10.0.0.4...

Connected to 10.0.0.4 (10.0.0.4).

Escape character is '^]'.

说明连接10.0.0.4机器的memcached的11211成功,否则连接不成功。

 

验证是否代理是否启动成功

[root@root ~]# telnet 10.0.0.4 12000

Trying 10.0.0.4...

Connected to 10.0.0.4.

Escape character is '^]'.

stats测试代理2个节点成功

stats

memcached agent v0.4

matrix 1 -> 10.0.0.4:11211, pool size 0

matrix 2 -> 10.0.0.2:11211, pool size 1

END

说明连接10.0.0.4magen代理成功,否则连接不成功。


#quit (退出telnet

四、高可用验证

1. 集群读写测试

在节点服务器10.0.0.4 magent代理写入数据

[root@root ~]# telnet 10.0.0.4 12000

Trying 10.0.0.4...

Connected to 10.0.0.4.

Escape character is '^]'.

set userId 0 0 5

zhang

STORED

成功写入数据

 

quit

退出

在节点服务器10.0.0.4 memcached读取数据

[root@root ~]# telnet 10.0.0.4 11211

Trying 10.0.0.4...

Connected to 10.0.0.4.

Escape character is '^]'.

get userId

VALUE userId 0 5

zhang

END

以上信息证明10.0.0.4 memcache保存了正确的数据了

 

在节点服务器10.0.0.2 magent代理 读取数据

[root@root ~]# telnet 10.0.0.2 12000

Trying 10.0.0.2...

Connected to 10.0.0.2.

Escape character is '^]'.

stats

memcached agent v0.4

matrix 1 -> 10.0.0.4:11211, pool size 0

matrix 2 -> 10.0.0.2:11211, pool size 1

END

get userId

VALUE userId 0 5

zhang

END

以上信息证明10.0.0.2中的magent可以得到10.0.0.4magent写入的争取数据了;

在节点服务器10.0.0.2 memcached读取数据

 

[root@root ~]# telnet 10.0.0.2 11211

Trying 10.0.0.2...

Connected to 10.0.0.2.

Escape character is '^]'.

get userId

VALUE userId 0 5

zhang

END

以上信息证明10.0.0.4 memcache保存了正确的数据了

 

 

2. 集群读写测试

先把10.0.0.2magent down掉;

 

 

[root@root ~]# ps aux|grep mag

root      2995  0.0  0.0  17360   576 ?        Ss   Jan14   0:00 magent -u root -n 51200 -l 10.0.0.2 -p 12000 -s 10    .0.4:11211 -b 10.0.0.2:11211 -s 10.0.0.2:11211 -b 10.0.0.4:11211

root      3219  0.0  0.0   6384   656 pts/1    S+   00:14   0:00 grep mag

[root@root ~]# kill 2995

[root@root ~]# ps aux|grep mag

root      3221  0.0  0.0   6384   660 pts/1    S+   00:15   0:00 grep mag

[root@root ~]#

 

在另一台节点服务器10.0.0.4上测试数据userId是否存在

[root@root ~]# telnet 10.0.0.4 11211

Trying 10.0.0.4...

Connected to 10.0.0.4.

Escape character is '^]'.

get userId

VALUE userId 0 5

zhang

END

以上信息表示信息没有丢,这样就保证了memcache的高可用性了;

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值