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

[经验分享] Memcached+magent实现主从同步 +keepalived高可用群集

[复制链接]

尚未签到

发表于 2018-12-25 09:16:43 | 显示全部楼层 |阅读模式
Memcached+magent实现主从同步 +keepalived高可用群集

简介
  Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。

实验部署


主机名称
IP地址
主要服务软件




memcached主服务器
172.16.10.138
memcached,libevent,magent,keepalived


memcached从服务器
172.16.10.137
memcached,libevent,keepalived


客户端
172.16.10.134
telnet测试


  • 配置memcached主缓存节点服务器

tar xf libevent-2.1.8-stable.tar.gz -C /opt
tar xf memcached-1.5.6.tar.gz -C /opt
tar xf magent-0.5.tar.gz -C /opt
cd /opt/libevent-2.1.8
./configure --prefix=/usr   #指定安装路径
make && make install    #编译安装
cd /opt/memcached-1.5.6
./configure --with-libevent=/usr      #指定安装路径
make && make install               #编译安装
ln -s /usr/lib/libevent-2.1.so.6 /usr/lib64/libevent-2.1.so.6     #主服务器上magent服务需要这个模块
  cd /opt/magent


vim ketama.h
#ifndef SSIZE_MAX                        #修改
#define SSIZE_MAX 32767             #修改   
#endif
vim Makefile
LIBS = -levent -lm                      #修改,添加-lm
make
  cp mgent /usr/bin    #把生成的mgent程序让系统识别


  • 配置memcached从缓存节点服务器


tar xzvf memcached-1.5.6.tar.gz -C /opt
tar xzvf libevent-2.1.8-stable.tar.gz -C /opt
cd /opt/libevent-2.1.8
./configure --prefix=/usr
make && make install
cd /opt/memcached-1.5.6
./configure --with-libevent=/usr
make && make i nstall
ln -s /usr/lib/libevent-2.1.so.6 /usr/lib64/libevent-2.1.so.6    #主服务器上magent服务需要这个模块

  • 主服务器将magent文件复制到从服务器

  yum install openssh-clients
  scp magent root@172.16.10.137:/usr/bin/  //把产生的magent文件直接复制到从服务器。



  • 主服务器安装keepalived服务,修改配置文件

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


router_id MAGENT_HA                                #router_id主从不能相同,要修改
vrrp_script magent {
script "/opt/shell/magent.sh"
interval 2   
}        #定义一个新函数,每2s自动执行这个脚本                        
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      #触发执行magent脚本           
}
virtual_ipaddress {
172.16.10.200    #虚拟IP(vip)
}
}
将下面多余的配置全部删除

  • 主服务器安装keepalived服务,修改配置文件

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


router_id MAGENT_HB    #router_id主从不相同         
vrrp_script magent {
script "/opt/shell/magent.sh"
interval 2   
}    #定义一个新函数,每2s自动执行这个脚本  
vrrp_instance VI_1 {
state MASTER   #这边是从服务器,是BACKUP  
interface ens33    #网卡接口是ens33
virtual_router_id 51                       
priority 90   #优先级,从服务器小于主服务器   
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
magent     #触发执行magent脚本
}
virtual_ipaddress {
172.16.10.200                                               #虚拟IP(vip)
}
}
将下面多余的配置全部删除

  • 主服务器编写magnet脚本

  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.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就会和从服务器连接。
chmod +x /opt/shell/magent.sh
#给脚本添加执行权限

  • 从服务器编写magent脚本

  mkdir -p /opt/shell


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漂移是否到自己身上,如果VIP进行漂移到从服务器之后,就会执行magent这条命令,目的就是在主服务器宕掉的时候,从服务器能够正常启动。

  • 实验验证
  首先使用客户机安装telnet,远程连接VIP节点,写入用户之后,主从缓存服务器会自动获取下载该用户。









运维网声明 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-655526-1-1.html 上篇帖子: Memcached的预定义常量,而不是memcache 下篇帖子: Memcached主从复制+keepalived架构
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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