设为首页 收藏本站
查看: 855|回复: 0

[经验分享] memcached实现主主复制和keepalive高可用方式

[复制链接]

尚未签到

发表于 2018-12-25 09:02:25 | 显示全部楼层 |阅读模式
实验拓扑


实验环境


服务器
IP地址
操作系统
主要软件




memcached1
192.168.144.122
centos7.3
libevent2.1.8、memcached1.5.6、keepalive、telnet、magent0.5


memcached2
192.168.144.129
centos7.3
libevent、memcached、keepalive、telnet


客户端
192.168.144.141
centos7.3
LAMP架构或telnet

memcached1的配置

  tar zvxf memcached-1.5.6.tar.gz -C /opt/         
tar zvxf libevent-2.1.8-stable.tar.gz -C /opt/



  • 1、首先安装libevent,指定安装路径即可,memcached2上相同操作

  cd /opt/libevent-2.1.8-stable            
./configure --prefix=/usr/local/libevent                  
make && make install



  • 2、安装memcached,memcached2上相同操作

  cd /opt/memcached-1.5.6           
./configure \           
--prefix=/usr/local/memcached \         
--with-libevent=/usr/local/libevent/          #需要跟上事件通知库模块
  make && make install



  • 3、让memcached命令可以让系统识别,memcached2上相同操作

  ln -s /usr/local/memcached/bin/* /usr/local/bin/



  • 4、将编译安装的libevent-2.1.so.6模块复制到/usr/lib64,否则在启动带有复制功能的memcached服务时会报错。
  • memcached2上相同操作。

  ln -s /usr/local/libevent/lib/libevent-2.1.so.6 /usr/lib64/libevent-2.1.so.6



  • 5、memcached1安装magent,并且将生成的命令发送给memcached2,并在每一台服务器上该命令可以被系统识别。

  tar magent-0.5.tar.gz -C /opt/            
cd /opt      
vi ketama.h


#ifndef SSIZE_MAX
#define SSIZE_MAX 32767  //前两行带#的改成这样
#endif    //位置上调
  systemctl stop firewalld.service            
setenforce 0         
vi Makefile


LIBS = -levent -lm -L/usr/local/libevent/lib   //注意libevent的安装路径,否则make会报错
INCLUDE = -I/usr/local/libevent/include


  • 6、生成magent程序
  • 此处需要注意,在magent生成可执行程序之前需要关闭防火墙,不然无法make。

  make



  • 7、让magent程序为系统识别

  cp magent /usr/local/bin/



  • 8、将magent程序发送给memcached2,让其系统识别

  scp magent root@192.168.144.129:/usr/bin/


两台服务器安装keepalived


  • m1与m2两台服务器keepalive配置文件不同地方已经注明。

  yum install keepalved -y      
vim /etc/keepalived/keepalived.conf


! Configuration File for keepalived
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id 001    //两台服务器不同
}
vrrp_script magent {                    //添加主主数据复制实例,函数名为magent,只要keepalive启动就可启动复制
script "/opt/shell/magent.sh"   //设置magent启动脚本,注意后面脚本位置要与之相同
interval 2
}
vrrp_instance VI_1 {
state MASTER   //从为BACKUP
interface ens33    //网卡为ens33
virtual_router_id 51   //与从服务器需要区别开
priority 100       //从服务器优先级应当比主的低
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {              //调用函数执行
magent
}
virtual_ipaddress {
192.168.144.188    //设置虚拟IP
}
}
memcached1创建主主复制监控脚本

  cd /opt/shell   #没有该目录,需要创建      
vim 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.144.188 -p 12000 -s 192.168.144.122:11211 -b 192.168.144.129:11211
else
pkill -9 magent
fi
  -n 51200 //定义用户最大连接数         
-l 192.168.175.188 //指定虚拟IP      
-p 12000  //指定端口号            
-s //指定主缓存服务器     
-b //指定从缓存服务器



  • 增加执行权限。

  chmod +x /opt/shell/magent.sh



  • memcached1上开启keepalive服务,以及memcache服务

  memcached -d -m 32m -p 11211 -u root      
systemctl start keepalived.service


memcached2创建主主复制监控脚本

  vi magent.sh   #注意脚本位置要跟配置文件中对应,不然调用执行


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

  • 增加执行权限。

  chmod +x /opt/shell/magent.sh



  • memcached2上开启keepalive服务,以及memcache服务

  memcached -d -m 32m -p 11211 -u root      
systemctl start keepalived.service


在客户端测试


  • 在客户端访问虚拟IP及虚拟端口

  telnet 192.168.144.188 12000



  • 在客户端写入数据
  • 在两台服务器上进入本身数据库,数据被自动同步复制

  add username 0 0 7               
1234567



  • 模拟故障,关闭m1的keepalive,客户端无感知,虚拟IP仍可登陆,且读写数据

  systemctl stop keepalived.service





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-655513-1-1.html 上篇帖子: 构建高性能分布式搜索引擎(Memcached 下篇帖子: memcached全面剖析–memcached的删除机制和发展方向
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表