memcahced高可用群集


     memcached群集作用主要解决服务器单点故障。不做群集部署,服务器之间不会复制

同步数据,一旦宕机数据就会丢失,无法有效的为后台web服务器等减轻并发连接压力。所以,

我们采用群集服务去解决这个问题,使用多台memcached做群集部署,即时有一两台服务器宕机,

也不会影响用户正常体验,同时也减少后台服务的并发连接压力。

            memcached高可用群集部署(keepalive+magent)_群集

实验环境

本文采用magent+keepalived实现memcached的群集部署

角色类型操作系统IP地址服务类型
主服务器Centos7192.168.60.144/24

libevent、memcached、

magent、keepalived

从服务器Centos7192.168.60.143/24

libevent、memcached、

keepalived

客户测试端Centos7192.168.60.140/24telnet


软件包地址

链接: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

memcached高可用群集部署(keepalive+magent)_memcached_02

vim ketama.h          #修改开头两行

#ifndef SSIZE_MAX

#define SSIZE_MAX 32767

vim Makefile          #修改第一行

LIBS = -levent -lm

make                      #生成magent脚本

memcached高可用群集部署(keepalive+magent)_高可用_03


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

memcached高可用群集部署(keepalive+magent)_高可用_04

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

memcached高可用群集部署(keepalive+magent)_memcached_05

cat /var/log/messages                      #查看日志,验证主从关系

VRRP_Instance(VI_1) Transition to MASTER STATE

memcached高可用群集部署(keepalive+magent)_memcached_06


五、主从服务器启动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、在客户端写入数据,在主从上分别查看。

memcached高可用群集部署(keepalive+magent)_高可用_07

memcached高可用群集部署(keepalive+magent)_memcached_08

memcached高可用群集部署(keepalive+magent)_高可用_09

5、关闭其中一台keepalived依旧不影响客户端操作

完成以上测试magent+keepalived实现memcached高可用群集实验就算好了~