Memcached+keepalived+magent实现主从复制和高可用

栏目: 数据库 · 发布时间: 6年前

内容简介:memcached之前并不能直接通信,所以memcached本身并不能完整备份所有的数据。这时候我么可以使用magent代理memcached实现主从备份,从而来保证缓存数据的完整性。这中间的工作原理如下:Memcache主从复制指在主Memcached服务器上修改数据都会被同步到从服务器上,但是Memcached API客户端是无法判断连接到哪一台Memcached服务器的,所以需要通过keepalived设置VIP地址,提供给Memcached API客户端以及magent连接访问。

Memcached+keepalived+magent实现主从复制和高可用

实验介绍

memcached之前并不能直接通信,所以 memcached 本身并不能完整备份所有的数据。这时候我么可以使用magent代理memcached实现主从备份,从而来保证缓存数据的完整性。

这中间的工作原理如下:

  • 数据在到达memcached服务器前会经过magent,每次写数据到主memcached服务器,magent会同时写到从服务器上,并且主从服务器写的算法一样。
  • 当主memcached服务器宕掉之后,magent会向从memcached服务器中读取数据
  • 当memcached恢复后,magent将重新从主memcached中读取数据,此时由于主memcached刚恢复正常,所以在宕掉期间的数据是无法获取的,这也是magent的缺点。

Memcache主从复制指在主Memcached服务器上修改数据都会被同步到从服务器上,但是Memcached API客户端是无法判断连接到哪一台Memcached服务器的,所以需要通过keepalived设置VIP地址,提供给Memcached API客户端以及magent连接访问。

实验环境

名称 IP地址
memcached主服务器 192.168.58.135
memcached从服务器 192.168.58.132

实验实施

配置memcached主从服务器节点(主从服务器上都要做的)

安装memcached需要libevent的支持,所以需要先安装libevent。先解压libevent值指定目录:

[root@localhost mnt]# tar xf libevent-2.1.8-stable.tar.gz -C /opt/
[root@localhost mnt]# cd /opt/libevent-2.1.8-stable/
[root@localhost libevent-2.1.8-stable]# ./configure --prefix=/usr
#进行配置
[root@localhost libevent-2.1.8-stable]# make && make install
#进行编译和安装

安装memcached:

[root@localhost mnt]# tar xf memcached-1.5.6.tar.gz -C /opt/
#将软件包解压到指定目录中
[root@localhost memcached-1.5.6]# ./configure --with-libevent=/usr
#配置,开启libevent功能,后面加上上面安装的路径
[root@localhost memcached-1.5.6]# make && make install
#编译和安装

将libevent的函数模块建立软链接到系统可以识别的目录下

[root@localhost lib64]# ln -s /usr/lib/libevent-2.1.so.6 /usr/lib64/libevent-2.1.so.6

以上是主从服务器都需要安装的软件,magent只需要在主服务器上安装,生成一个可执行文件,将这个文件复制到从服务器上即可。

[root@localhost mnt]# tar xf magent-0.5.tar.gz -C /opt/
#将magent解压到指定目录下
[root@localhost opt]# vim ketama.h
#修改这个文件
#ifndef SSIZE_MAX
#define SSIZE_MAX 32767
#endif
#修改文件最大值,将最后一行的#endif移动到头两行下面

Memcached+keepalived+magent实现主从复制和高可用

[root@localhost opt]# vim Makefile 
#修改Makefile
LIBS = -levent -lm
#这句话是连接函数库,Linux的库命名是一致的,一般为libxxx.so,或libxxx.a,libxxx.la,那么你要链接某个库就用-lxxx,去掉头lib及"."后面的so,la,a等即可。
#因为数学函数位于libm.so库文件中(通常在/lib目录下),-lm选项告诉编译器,我们程序中用到的数学函数要到这个库文件里找.
CFLAGS = -Wall -O2 -g
CC = gcc

Memcached+keepalived+magent实现主从复制和高可用

[root@localhost opt]# make
#生成一个可执行文件
[root@localhost opt]# ln -s /opt/magent /usr/bin
#把生成的mgent程序让系统识别,加入到环境变量中,方便系统识别,记得建立软链接一定要用绝对路径
[root@localhost opt]# scp magent root@192.168.58.132:/usr/bin/
#使用scp将生成的magent文件复制到从服务器/usr/bin目录下

Memcached+keepalived+magent实现主从复制和高可用

部署keepalived

[root@localhost opt]# yum install keepalived -y
#通过yum仓库安装keepalived
[root@localhost opt]# vim /etc/keepalived/keepalived.conf 
#修改keepalived.conf配置文件
Memcached+keepalived+magent实现主从复制和高可用

其他多余的配置直接删除,从服务器的keepalived配置文件也要修改。

Memcached+keepalived+magent实现主从复制和高可用

编写主服务器magent脚本

[root@localhost ~]# mkdir -p /opt/shell
[root@localhost ~]# 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.58.100 -p 12000 -s 192.168.58.135:11211 -b 192.168.58.132:11211
else
pkill -9 magent
fi

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

#这个脚本意思就是一旦检测出系统进程中有keepalived进程,就执行magent这条命令,如果没有,则将magent进程杀死。总得来说就是,加入主服务器上没有keepslived进程,magent就会和从服务器连接。
[root@localhost ~]# chmod +x /opt/shell/magent.sh 
#给脚本添加执行权限

编写从服务器magent脚本

[root@localhost ~]# mkdir -p /opt/shell
[root@localhost ~]# vim /opt/shell/magent.sh

#!/bin/bash
K=`ip addr | grep 192.168.58.100 | grep -v grep | wc -l`
if [ $K -gt 0 ]; then
        magent -u root -n 51200 -l 192.168.58.100 -p 12000 -s 192.168.58.135:11211 -b 192.168.58.132:11211
else
pkill -9 magent
fi  
#从服务器的脚本意思就是一旦检测到虚拟ip漂移到自己身上,就会执行magent这条命令,目的就是在主服务器宕掉的时候,从服务器能够正常启动。
~

启动主从服务器的keepalived和memcached服务,查看主服务器状态。

Memcached+keepalived+magent实现主从复制和高可用 Memcached+keepalived+magent实现主从复制和高可用

查看从服务器状态。

模拟宕机

这时候大家一定疑惑为什么主服务器的12000端口还是开启的呢,我认为由于我们模拟宕机的方法是停止keepalived服务,所以keepalived中的检测脚本不会再执行,所以里面的pkill -9 magent这条命令不会再执行了。

Memcached+keepalived+magent实现主从复制和高可用 Memcached+keepalived+magent实现主从复制和高可用

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Build Your Own Web Site the Right Way Using HTML & CSS

Build Your Own Web Site the Right Way Using HTML & CSS

Ian Lloyd / SitePoint / 2006-05-02 / USD 29.95

Build Your Own Website The Right Way Using HTML & CSS teaches web development from scratch, without assuming any previous knowledge of HTML, CSS or web development techniques. This book introduces you......一起来看看 《Build Your Own Web Site the Right Way Using HTML & CSS》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

随机密码生成器
随机密码生成器

多种字符组合密码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码