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

[经验分享] memcached+magent+keepalived实现高可用群集

[复制链接]

尚未签到

发表于 2018-12-25 09:17:55 | 显示全部楼层 |阅读模式
magent代理的用途:

  如果memcached其中一个缓存节点的机器down机,那么客户端存入的缓存数据将会丢失一部分,我们可以采用 Magent 缓存代理,防止单点现象,缓存代理也可以做备份,通过客户端连接到缓存代理服务器,缓存代理服务器连接缓存服务器,缓存代理服务器可以连接多台Memcached机器,这样就能实现实现高可用以及防止单点故障。


keepalived的用途:

  但是如果magent代理服务器宕机了,就不能继续提供服务,所以就用到了keepalived,通过keepalived配置文件设置优先级来决定谁做主magent或者从magent,当主magent正常运行时vip在主magent,当主magent宕机vip自动换到从magent,主magent恢复后vip自动回到主magent上。


实验准备
  magent代理与memcached服务装在同一台主机上,仅做实验参考。


主机
系统
IP
角色
软件




memcached 1
CentOS 7
192.168.100.130
主节点
memcached-1.5.6.tar.gz、libevent-2.1.8-stable.tar.gz


magent 1
CentOS 7
192.168.100.130
主代理服务器
magent-0.5.tar.gz


memcached 2
CentOS 7
192.168.100.131
从节点
memcached-1.5.6.tar.gz、libevent-2.1.8-stable.tar.gz


magent 2
CentOS 7
192.168.100.131
从代理服务器
magent-0.5.tar.gz


client
CentOS 7
192.168.100.132
测试主机
telnet
  VIP 192.168.100.100

实验步骤如下:

1.yum 安装软件支持包

yum install gcc gcc-c++ -y
2.所有主机关闭防火墙

systemctl stop firewalld.service
setenforce 0
  3.client主机安装Telnet软件

yum install telnet -y
3.在memcached 1 和memcached 2 安装memcached 和 libevent软件包

(1)解压软件至opt目录下。

tar xzvf memcached-1.5.6.tar.gz -C /opt/
tar xzvf libevent-2.1.8-stable.tar.gz -C /opt/
(2)编译安装libevent

cd /opt/libevent-2.1.8-stable
./configure --prefix=/usr/local/libevent   #指定安装路径
make && make install   
(3)编译安装memcached

cd memcached-1.5.6
./configure --with-libevent=/usr/local/libevent
make && make install
(4)libevent-2.1.so.6模块需要复制到/usr/lib64目录下,否则会报错。

ln -s /usr/lib/libevent-2.1.so.6 /usr/lib64/libevent-2.1.so.6   
4.在memcached 1上安装magent

(1)在opt目录下创建magent目录,存放magent包解压后的文件。

mkdir /opt/magent
tar xzvf magent-0.5.tar.gz -C /opt/magent
(2)修改ketama.h配置文件。

cd /opt/magent
vim ketama.h     #修改头部文件
#ifndef SSIZE_MAX
#define SSIZE_MAX 32767
(3)修改Makefile配置文件

vim Makefile
LIBS = -levent -lm -L /usr/local/libevent/lib  #修改
INCLUDE=-I /usr/local/libevent/include        #添加
(4)编译magent

make
(5)编译后生成的magent命令文件复制到/usr/bin,以便系统识别magent命令。

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


5.启动memcached服务

memcached -m 512k -u root -d -l 192.168.100.130 -p  11211
memcached -m 512k -u root -d -l 192.168.100.131 -p  11211
netstat -ntap |grep 11211
有11211端口表示服务开启成功



6.client客户端测试magent解决单点故障问题

(1)只启动memcached 1上的magent服务

magent -u root -n 51200 -l 192.168.100.130 -p 12000 -s 192.168.100.130:11211 -b 192.168.100.131:11211


(2)在client主机上测试


(3)停掉主节点的服务,在client主机上测试

pkill -9 memcached


实验步骤如下:

1.接着上面的操作继续往下做,主从节点都要安装keepalived 软件

yum install keepalived -y
2.从magent不需要安装magent软件,只需把memcached 上1主节点生成的magent命令文件 复制到主magent的/usr/bin目录下

scp /opt/magent/magent root@192.168.100.131:/usr/bin
3.在主magent上编辑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
#定义新函数magent
vrrp_script magent{
script"/opt/shell/magent.sh"
interval 2       ##时间间隔
}
#修改vrrp_instance实例
INTERFACE ens33
#添加
track_script {
magent
}        # 使用新函数magent
#定义一个虚拟IP
virtual_ipaddress {
192.168.100.100
}
#下面多余的部分可以全部删除

4.在从magent上编辑keepalived配置文件

#从主magent上把配置脚本复制到从magent上
scp /etc/keepalived/keepalived.conf root@192.168.100.131:/etc/keepalived/keepalived.conf
vim /etc/keepalived
router_id MAGENT_HB  #修改为MAGENT_HB
state BACKUP     #修改为BACKUP
virtual_router_id 52   #ID不同
priortity 90     #优先级比主magent低

5.在主magent上配置 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.100.100 -p 12000 -s 192.168.100.130:11211 -b 192.168。100.131:11211
else
pkill -9 magent
fi
-n 51200 //定义用户最大连接数
-l 192.168.100.100 //指定虚拟IP
-p 12000  //指定端口号
-s //指定主缓存服务器
-b //指定从缓存服务器
chmod +x magent.sh
6.在从magent上配置 magent脚本

mkdir /opt/shell
vim /opt/shell/magent.sh
#!/bin/bash
K=`ip addr | grep 192.168.100.100 | grep -v grep | wc -l`
if [ $K -gt 0 ]; then
magent -u root -n 51200 -l 192.168.100.100 -p 12000 -s 192.168.100.130:11211 -b 192.168.100.131:11211
else
pkill -9 magent
fi  
chmod +x magent.sh
7.主从magent服务器开启keepalived服务

systemctl start keepalived.service
netstat -ntap |grep 12000
如果有12000端口表示服务开启成功


8.在client主机上测试keepalived高可用

(1)关掉主magent上的keepalived服务,虚拟ip地址漂移到从magent上。


(2)停掉主magent服务,client主机仍然可以进入代理服务端口12000.


(3)查看从magent日志,可以看到从magent服务器切换成master状态


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




运维网声明 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-655528-1-1.html 上篇帖子: Memcached主从复制+keepalived架构 下篇帖子: Memcached主从复制+keepalived高可用架构
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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