memcahced高可用群集
memcached群集作用主要解决服务器单点故障。不做群集部署,服务器之间不会复制
同步数据,一旦宕机数据就会丢失,无法有效的为后台web服务器等减轻并发连接压力。所以,
我们采用群集服务去解决这个问题,使用多台memcached做群集部署,即时有一两台服务器宕机,
也不会影响用户正常体验,同时也减少后台服务的并发连接压力。
实验环境
本文采用magent+keepalived实现memcached的群集部署
角色类型 | 操作系统 | IP地址 | 服务类型 |
主服务器 | Centos7 | 192.168.60.144/24 | libevent、memcached、 magent、keepalived |
从服务器 | Centos7 | 192.168.60.143/24 | libevent、memcached、 keepalived |
客户测试端 | Centos7 | 192.168.60.140/24 | telnet |
软件包地址
链接:https://pan.baidu.com/s/1tHnxoldZoX7U0aHnx6GlRg 密码:vl6l
部署服务
一、主从服务器安装memcached
1、安装环境包
yum install gcc gcc-c++ -y
2、解压缩
tar zxf libevent-2.1.8-stable.tar.gz -C /opt/ #解压libevent事件库包
tar zxf memcached-1.5.6.tar.gz -C /opt/ #解压memcached包
mkdir /opt/magent #创建magent解压目录
tar zxf magent-0.5.tar.gz -C /opt/magent #解压magent包
3、编译libevent和memcached
cd /opt/libevent-2.1.8-stable #编译libevent
./configure --prefix=/usr
make && make install
ln -s /usr/lib/libevent-2.1.so.6 /usr/lib64/libevent-2.1.so.6
cd /opt/memcached-1.5.6/ #编译memcached
./configure --with-libevent=/usr
make && make intall
二、主服务器上配置magent(从服务器无需配置magent)
1、直接修改magent中的文件
cd /opt/magent
vim ketama.h #修改开头两行
#ifndef SSIZE_MAX
#define SSIZE_MAX 32767
vim Makefile #修改第一行
LIBS = -levent -lm
make #生成magent脚本
2、主服务器推送将生成从magent推送给从服务器
yum install openssh-clients -y #安装推送插件
scp magent root@192.168.60.143:/usr/bin/ #推送到从服务器/usr/bin目录下
三、主从服务器都安装keepalived,并修改配置文件
1、安装keepalived
yum install keepalived -y
2、修改配置文件
vim /etc/keepalived/keepalived.conf
3、从服务器复制主服务器上的配置文件
cd /etc/keepalived/
mv keepalived.conf keepalived.conf.bk #将原本的配置文件改名
yum install openssh-clients -y #安装推送插件
scp root@192.168.60.144:/etc/keepalived/keepalived.conf /etc/keepalived/ #复制配置文件
4、从服务器修改配置文件
● state BACKUP
● virtual_router_id 52
● priority 100
就以上三处需要修改,其他内容与主服务器相同。
四、主从服务器写入keepalived配置文件加载的脚本
1、创建目录
mkdir /opt/shell
2、写入如下脚本
vim magent.sh
#!/bin/bash
k=`ps -ef | grep keepalived | grep -v grep | wc -l`
if [ $k -ge 0 ];then
magent -u root -n 51200 -l 192.168.60.180 -p 12000 -s 192.168.60.144:11211 -b 192.168.60.143:11211
else
pkill -9 magent
fi
3、主从都启动keepalived服务
systemctl start keepalived.service #启动keepalived
netstat -ntap | grep 12000 #查看端口号12000
ip add #查看虚拟ip
cat /var/log/messages #查看日志,验证主从关系
VRRP_Instance(VI_1) Transition to MASTER STATE
五、主从服务器启动memcached,客户端验证
1、启动memcached
memcached -m 512k -u root -d -l 192.168.60.144 -p 11211
memcached -m 512k -u root -d -l 192.168.60.143 -p 11211
2、先本地自测,看能否登陆memcached
yum install telnet -y
telnet 192.168.60.144 11211
telnet 192.168.60.143 11211
3、客户端使用虚拟ip登陆memcached
yum install telnet -y
telnet 192.168.60.180 12000 #端口为12000
4、在客户端写入数据,在主从上分别查看。
5、关闭其中一台keepalived依旧不影响客户端操作
完成以上测试magent+keepalived实现memcached高可用群集实验就算好了~