Linux Centos 7.2 安装memcache集群配置

memcached + keepalived 高可用群集

memcached介绍

Memcached是一套开源的高性能分布式内存对象缓存系统,它将所有的数据都存储在内存中,因为在内存中会统一维护一张巨大的Hash表,所以支持任意存储类型的数据。很多网站通过使用 Memcached提高网站的访问速度,尤其是对于大型的需要频繁访问的网站。Memcached是典型的C/S架构,因此需要安装 Memcached服务端与 Memcached API客户端。 Memcached服务端是用C语言编写的,而 Memcached API客户端可以用任何语言来编写,如PHP、 Python、Perl等,并通过 Memcached协议与 Memcached服务端进行通信。

memcached主从复制+keepalived高可用框架介绍

Memcached服务器修改数据都会被同步到另外一台,但是 Memcached API客户端是无法判断连接到哪一台 Memcached服务器的,所以需要设置VP地址,提供给 Memcached Apl客户端进行连接。可以使用keepalived产生的VP地址连接主 Memcached服务器,并且提供高可用架构。

因为 Memcached主从复制这种架构,在程序连接主服务器,在前端加VP地址,实现高可用架构。这里用 Keepalived实现,因而
Keepalived的作用是用来检测 Memcached服务器的状态是否正常。Keepalived不断检测 Memcached主服务器的11211端口,如果检测到 Memcached服务发生宕机或者死机等情况,就会将VP从主服务器移至从服务器,从而实现Memcached的高可用性。

实验准备

一台主服务器
需要安装 magent    memcached   libevent    keepalived
一台从服务器
需要安装 memcached   libevent   keepalived

实验步骤

在主服务器和从服务器上安装memcached 和 libevent

libecent官网:http://libevent.org/   下载最新版的

Linux Centos 7.2 安装memcache集群配置

tar xzvf libevent-2.1.8-stable.tar.gz

Linux Centos 7.2 安装memcache集群配置

进入安装目录  cd libevent-2.1.8-stable/
指定安装路径   ./configure --prefix=/usr

执行   make && make install  

检查是否安装成功:输入ls -al /usr/lib | grep libevent 

Linux Centos 7.2 安装memcache集群配置

安装memcache

官网http://memcached.org/downloads

Linux Centos 7.2 安装memcache集群配置

tar xzvf memcached-1.5.12.tar.gz

cd memcached-1.5.12
./configure --with-libevent=/usr

make && make install

ln -s /usr/lib/libevent-2.1.so.6 /usr/lib64/libevent-2.1.so.6    ##主服务器上magent服务需要这个模块;将libevent的函数模块建立软链接到系统可以识别的目录下

测试Memcached是否安装成功  ls -al /usr/local/bin/memcached

Linux Centos 7.2 安装memcache集群配置

以上软件都需要在主从服务器上安装

在主服务器上安装magent

官网https://code.google.com/archive/p/memagent/downloads下载最新版本压缩包解压

mkdir magent

cd magent/

wget http://memagent.googlecode.com/files/magent-0.5.tar.gz

tar zxvf magent-0.5.tar.gz

Linux Centos 7.2 安装memcache集群配置

mkdir /magent
tar xzvf magent-0.5.tar.gz

cd /magent
vim ketama.h
修改
#ifndef SSIZE_MAX
#define SSIZE_MAX 32767

vim Makefile
LIBS = -levent -lm

make

cp magent /usr/bin   ##方便系统识别命令

在主服务器上把magent 复制到从服务器上

 

yum install openssh-clients
scp -r  magent [email protected]:/usr/bin

 

在主服务器上安装keepalived

yum install keepalived

vim /etc/keepalived/keepalived.conf
router_id MAGENT_HA
删除
   vrrp_skip_check_adv_addr
   vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0

定义新函数
vrrp_script magent{
script"/opt/shell/magent.sh"
 interval 2       ##时间间隔
}

修改vrrp_instance下面
INTERFACE ens33
添加
track_script {
    magent
}        ## 使用新函数

定义一个虚拟IP
virtual_ipaddress {
    192.168.x.x
    }

下面多余的部分可以全部删除

 

在从服务器上安装keepalived

 

yum install keepalived

从主服务器上把配置脚本复制到从服务器上
scp /etc/keepalived/keepalived.conf [email protected]:/etc/keepalived/keepalived.conf

vim /etc/keepalived/keepalived.conf
router_id MAGENT_HB
state BACKUP     ##从服务器
virtual_router_id 52    ##ID不同
priortity 90     ##优先级

在主服务器上配置 magent脚本

 

mkdir /opt/shell
 vim /opt/shell/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.x.x -p 12000 -s 192.168.x.x:11211 -b 192.168.x.x:11211
else
pkill -9 magent
fi

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

chmod +x magent.sh

mkdir /opt/shell
 vim /opt/shell/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.x.x -p 12000 -s 192.168.x.x:11211 -b 192.168.x.x:11211
else
pkill -9 magent
fi

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

chmod +x magent.sh

在从服务器上配置 magent脚本

mkdir /opt/shell
 vim /opt/shell/magent.sh
 #!/bin/bash
 K=`ip addr | grep 192.168.x.x(虚拟IP) | grep -v grep | wc -l`
if [ $K -gt 0 ]; then
        magent -u root -n 51200 -l 192.168.x.x -p 12000 -s 192.168.x.x:11211 -b 192.168.x.x:11211
else
pkill -9 magent
fi  

chmod +x magent.sh

主从服务器开启keepalived服务

systemctl start keepalived.service

netstat -ntap |grep 12000

如果有12000端口表示服务开启成功

登录memcached服务器

memcached -m 512k -u root -d -l 192.168.xx 主 -p  11211
memcached -m 512k -u root -d -l 192.168.x.x 从 -p  11211

netstat -ntap |grep 11211

有11211端口表示服务开启成功

测试

在第三台服务器上安装 telnet
yum install telnet -y

telnet 192.168.x.x(虚拟IP) 12000
add username 0 0 7
1234567
Stored 
quit
## 通过虚拟IP登录 并创建一个用户

telnet 192.168.x.x(主/从服务器) 11211
get username
VALUE username 0 7
1234567
END
quit
##  在主从服务器上都能得到这个数据

在主服务器上关掉 memcached
pkill -9 memcached

192.168.x.x(虚拟IP) 12000
add username 0 0 7
1234567
Stored 
quit
## 通过虚拟IP 写入数据

telnet 192.168.x.x(从服务器) 11211
get username
VALUE username 0 7
1234567
END
quit
## 从服务器依然能读取到

至此 memcached+keepalived 高可用群集完成