内容简介: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移动到头两行下面
[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
[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目录下
部署keepalived
[root@localhost opt]# yum install keepalived -y #通过yum仓库安装keepalived [root@localhost opt]# vim /etc/keepalived/keepalived.conf #修改keepalived.conf配置文件
其他多余的配置直接删除,从服务器的keepalived配置文件也要修改。
编写主服务器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服务,查看主服务器状态。
查看从服务器状态。
模拟宕机
这时候大家一定疑惑为什么主服务器的12000端口还是开启的呢,我认为由于我们模拟宕机的方法是停止keepalived服务,所以keepalived中的检测脚本不会再执行,所以里面的pkill -9 magent这条命令不会再执行了。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 深入剖析Redis高可用系列:主从复制
- Redis 主从配置心得及其高可用方案
- 高可用数据库主从复制延时的解决
- MySQL -- 主从复制的可靠性与可用性
- Keepalived+expect方式实现Redis主从高可用实际操作
- 老司机带你玩转面试(3):Redis 高可用之主从模式
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
计算机程序设计艺术卷1:基本算法(英文版.第3版)
Donald E.Knuth / 人民邮电出版社 / 2010-10 / 119.00元
《计算机程序设计艺术》系列著作对计算机领域产生了深远的影响。这一系列堪称一项浩大的工程,自1962年开始编写,计划出版7卷,目前已经出版了4卷。《美国科学家》杂志曾将这套书与爱因斯坦的《相对论》等书并列称为20世纪最重要的12本物理学著作。目前Knuth正将毕生精力投入到这部史诗性著作的撰写中。想了解本书最新信息,请访http://www-cs-faculty.stanford.edu/~knut......一起来看看 《计算机程序设计艺术卷1:基本算法(英文版.第3版)》 这本书的介绍吧!