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

[经验分享] Memcached主从复制+keepalived高可用架构

[复制链接]

尚未签到

发表于 2018-12-25 09:17:58 | 显示全部楼层 |阅读模式
实现主从复制和高可用的方式
  Memcached主从复制是指在主Mencached服务器上修改数据都会被同步到其他服务器上,MemcachedAPI客户端是无法判断连接到那一台Memcached服务器,所以需要VIP地址,提供给MemcachedAPI客户端进行连接。可以使用keepaived产生的VIP地址连接主Memcached服务器来完成,并且提供高可用架构。

环境准备


  • 系统版本:Centos7
  • 服务器规划


服务器
IP地址
主要软件




主Memcached
172.16.10.24
libevent、memcached、magent、keepalived


从Memcached
172.16.10.22
libevent、memcached、keepalived


Client
172.16.10.21
telnet
  项目所用源码包可自行到官方网站下载,或者使用我下载好的项目用安装包

搭建Memcached服务器
  Memcached服务器在两台服务器上都需要搭建,方式完全相同,在安装memcached服务器是需先安装libevent,然后再安装memcached。

安装环境包

yum -y install gcc gcc-c++ make
解压软件包

tar zxf memcached-1.5.9.tar.gz -C /opt/
tar zxf libevent-2.1.8-stable.tar.gz -C /opt/
编译安装libevent

cd libevent-2.1.8-stable/
./configure --prefix=/usr/
make && make install
编译安装memcached

cd memcached-1.5.9/
./configure --with-libevent=/usr
make && make install
优化启动

ln -s /usr/lib/libevent-2.1.so.6 /usr/lib64/libevent-2.1.so.6
//memcached自带有复制功能,如果不建立软连接,则启动会失败
在主服务器上安装magent
  magent是一个memcached代理软件,防止单点故障,缓存代理也可以着备份,通过客户端连接缓存代理服务器,缓存代理服务器连接缓存服务器。

解压软件包

mkdir /opt/magent
tar zxf magent-0.5.tar.gz -C /opt/magent
编译安装magent

cd /opt/magent
vim ketama.h                                    //修改文件
#ifndef SSIZE_MAX                         //修改
#define SSIZE_MAX 32767            //修改
#endif                                              //末行也有一行#ndif,删除
vi Makefile                                     //修改文件
LIBS = -levent -lm                         //此处为lm,不是一
make                                            //编译完成之后会生成一个magent可执行文件


让服务便于系统识别

cp /opt/magent/magent /usr/bin/
scp /opt/magent/magent root@172.16.10.22:/usr/bin/     //发送到从服务器上

主从服务器安装keepalived

yum -y install keepalived
修改主从服务器配置文件

! 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 MAGENT_HA     //router_id自定义,但是要确保主从一致
}
vrrp_script magent {
script "/opt/shell/magent.sh"
interval 2                //定义一个函数,此时该脚本还未创建,要在实例外面定义
}
vrrp_instance VI_1 {
state MASTER           //从为BACKUP
interface ens33
virtual_router_id 51   //此处id也相同
priority 100           //从的优先级低于主
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
magent             //应用函数
}
virtual_ipaddress {
172.16.10.188       //定义vtp自定义,只要不是在使用中的地址即可
}
}                           //配置文件下面还有多余的内容此时就可以直接删除
//从配置文件与主不相同的地方我已经指出来了,其他的都一样
写主服务器shell脚本

mkdir /opt/shell
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 172.16.10.188 -p 12000 -s 172.16.10.24:11211 -b 172.16.10.22:11211
else
pkill -9 magent
fi
##参数解释
-n 51200                                   //定义用户最大连接数
-l 192.168.175.188                    //指定虚拟IP
-p 12000                                 //指定端口号
-s                                             //指定主缓存服务器
-b                                           //指定从缓存服务器
chmod +x magent.sh            //增加可执行权限
写从服务器shell脚本

mkdir /opt/shell
vim  /opt/shell/magent.sh
#!/bin/bash
K=`ip addr | grep 172.16.10.188 | grep -v grep | wc -l`
if [ $K -gt 0 ]; then
magent -u root -n 51200 -l 172.16.10.188 -p 12000 -s 172.16.10.24:11211 -b 172.16.10.22:11211
else
pkill -9 magent
fi
关闭主从服务器防火墙及selinux

systemctl stop firewalld.service
setenforce 0
开启主从服务器上keepalived

systemctl start keepalived.service
netstat -ntap | grep 12000        //端口开启可能有点延迟,稍作等待
ipa ddr                           //查看主服务器上是否绑定VIP



在主从服务器上开启memcached

memcached -m 512k -u root -d -l 172.16.10.24 -p 11211    //主服务器
memcached -m 512k -u root -d -l 172.16.10.22 -p 11211    //从服务器
netstat -ntap | grep 11211


客户端测试

测试连通性

yum -y install telnet
telnet 172.16.10.188 12000   //采用VIP连接
测试主从复制
  连接VIP写入数据,查看两台服务器上是否都已经有了数据

[root@centos]# telnet 172.16.10.188 12000
Trying 172.16.10.24...
Connected to 172.16.10.24.
Escape character is '^]'.
set qwe 0 0 3
123
STORED
连接主从服务器
telnet 172.16.10.24 11211
telnet 172.16.10.22 11211
[root@centos]# telnet 172.16.10.24 11211
Trying 172.16.10.24...
Connected to 172.16.10.24.
Escape character is '^]'.
get user
VALUE user 0 3
123
END
测试单点故障

systemctl stop keepalived.service  //关闭主服务器keepalived服务
ipaddr   //查看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-655529-1-1.html 上篇帖子: memcached+magent+keepalived实现高可用群集 下篇帖子: memcached + keepavlied + magent 实现高可用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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