Memcached群集

实验环境

主机名 系统 IP 主要软件包
Memcached1 CentOS 7 192.168.27.160 Magent、libevent、memcached、keepalived
Memcached2 CentOS 7 192.168.27.163 libevent、memcached、keepalived
client CentOS 7 192.168.27.164 telent

实验过程

1、配置memcached主缓存节点和从缓存节点

  • 两台缓存节点配置相同;

yum install gcc gcc-c++ make #安装环境包

tar xf memcached-1.5.6.tar.gz -C /opt/

tar xf libevent-2.1.8-stable.tar.gz -C /opt/

cd /opt/libevent-2.1.8-stable #安装lib插件

./configure --prefix=/usr/

make && make install #编译安装

cd ../memcached-1.5.6 #安装memcached

./configure --with-libevent=/usr

make && make install #编译安装

mkdir /opt/magent

tar xf magent-0.5.tar.gz -C /opt/magent

cd /opt/magent/

vi ketama.h

#ifndef SSIZE_MAX               #在内容开头添加
#define SSIZE_MAX 32767
#endif

vi Makefile

LIBS = -levent -lm

make #编译

cp magent /usr/bin/ #把生成的mgent程序让系统识别

scp magent [email protected]:/usr/bin/ #把产生的magent命令执行文件直接复制到从服务器,从服务器无需再次进行配置了。

2、配置keepalived

  • 两台服务器都需配置,配置不同之处将会标出;

yum install keepalived -y

vi /etc/keepalived/keepalived.conf

router_id test01                #两台服务器不同,从为test02

vrrp_script magent {            
        script "/opt/shell/magent.sh"       #脚本目录,需要创建
        interval 2              #检测脚本时间间隔
}

vrrp_instance VI_1 {
    state MASTER                #从服务器为BACKUP
    interface ens33
    virtual_router_id 51        #两台服务器不同,从服务器为52
    priority 100                #从服务器小,从服务器为90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }

    track_script {      #调用脚本
        magent
    }
    virtual_ipaddress {     #虚拟IP
        192.168.27.111
    }
}

3、设置magent管理脚本

  • 两台服务器的magent管理脚本不同
  • 1)、主服务器上设置magent管理脚本;

cd /opt

cd /opt

mkdir shell

cd shell

vi magent.sh

#!/bin/bash
K=`ps -ef | grep keepalived | grep -v grep | wc -l`
if [ $K -gt 0 ]; then
        magent -u root -n 51200 -l 192.168.27.111 -p 12000 -s 192.168.27.160:11211 -b 192.168.27.163:11211
else
pkill -9 magent
fi

#-n 51200 //定义用户最大连接数
#-l 192.168.175.188 //指定虚拟IP
#-p 12000  //指定端口号
#-s //指定主缓存服务器
#-b //指定从缓存服务器

chmod +x magent.sh #赋予执行权限

systemctl start keepalived.service #开启服务

  • 2)、从服务器上设置magent管理脚本;

cd /opt

mkdir shell

cd shell

vi magent.sh

#!/bin/bash
K=`ip addr | grep 192.168.27.111 | grep -v grep | wc -l`
if [ $K -gt 0 ]; then
        magent -u root -n 51200 -l 192.168.27.11 -p 12000 -s 192.168.27.160:11211 -b 192.168.27.163:11211
else
pkill -9 magent
fi  

chmod +x magent.sh #赋予执行权限

systemctl start keepalived.service #开启服务

4、启动memcached服务

memcached -m 512k -u root -d -l 192.168.27.160 -p 11211 #启动主

memcached -m 512k -u root -d -l 192.168.27.163 -p 11211 #启动从

5、验证

  • 1)、在客户机上登录并插入内容,在两台主从服务器上都可查看到内容;

Memcached群集_第1张图片Memcached群集_第2张图片Memcached群集_第3张图片

  • 2)、将主服务器关掉,在客服机上插入新的内容,从服务器上仍能查看到内容;

Memcached群集_第4张图片Memcached群集_第5张图片