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

[经验分享] Memcached主主复制+Keepalived高可用架构(内含所有源码包)

[复制链接]
累计签到:4 天
连续签到:1 天
发表于 2018-12-25 11:15:33 | 显示全部楼层 |阅读模式
  初步了解memcached主主复制:
  Memcached主主复制是指在任意一台memcached服务器修改数据都会被同步到另外一台,但是memcached API客户端是无法判断连接到哪一台memcached服务器的,所以需要设置VIP地址,提供给memcached API客户端进行连接。可以使用keepalived产生的VIP地址连接主memcached服务器,并且提供高可用架构。
Memcached的复制功能支持多个memcached之间进行相互复制(双向复制,主备都是可读可写的),可以解决memcached的容灾问题。
  Memcached主主复制+Keepalived高可用架构
  因为memcached主主复制这种架构,在程序连接时不知道应该连接哪个主服务器,所以需要在前端加上VIP地址,实现高可用架构。这里用Keepalived实现,因而Keepalived作用是用来检测memcached服务器的状态是否正常。
Keepalived不断检测memcached主服务器的11211端口,如果检测到memcached服务器发生故障,就会将VIP从主服务器移至从服务器,从而实现memcached的高可用性。
  下面为memcached高可用结构图

  下面我通过实验进行说明
实验环境:

  软件包链接:https://pan.baidu.com/s/1fBNcsyrqNxxlORg8TyJk1g
提取码:hx7g
一、在主节点上进行配置
关闭防火墙
  systemctl stop firewalld.service
setenforce 0
  安装编译环境
  yum install gcc gcc-c++ -y
  解压所需安装包
  tar zxvf libevent-2.1.8-stable.tar.gz -C /opt
tar zxvf memcached-1.5.6.tar.gz -C /opt
  因为magenta下的文件需要进行更改,所以单独建一个目录用来解压
  tar zxvf magent-0.5.tar.gz -C /opt/magent/    #解压过后便会出现以下四个文件
ketama.c
magent.c
ketama.h
Makefile
  编译并且安装libevent
  cd /opt/libevent-2.1.8-stable/
./configure --prefix=/usr
make && make install
  编译并且安装memcached,需要指明libevent安装路径
  cd ../memcached-1.5.6/
./configure --with-libevent=/usr
make && make install
  对magent目录下的ketama.h进行配置
  cd ../magent/
vim ketama.h
#ifndef SSIZE_MAX
#define SSIZE_MAX 32767    #将开头两句进行更改
  对magent目录下的Makefile进行配置
  vim Makefile
LIBS = -levent -lm     #在开头这句话的后面加上-lm
  文件配置完成后执行make
  make
gcc -Wall -O2 -g  -c -o magent.o magent.c
gcc -Wall -O2 -g  -c -o ketama.o ketama.c
gcc -Wall -O2 -g -o magent magent.o ketama.o -levent -lm
  将magent目录下配置好的文件复制到从服务器上的/usr/bin目录下,同时主服务器也要把该目录放到/usr/bin目录下,好让系统识别。接着安装openssh-clients这个工具,不然无法使用scp命令
  yum install openssh-clients -y
cp magent /usr/bin/
scp magent root@192.168.199.128:/usr/bin/

  安装keepalived软件并编辑主服务器的keepalived配置文件
  yum install keepalived -y   
vim /etc/keepalived/keepalived.conf
  在该配置文件中,除了保留第一个实例外,余下的122行可以全部删除


  创建脚本
  mkdir /opt/shell  #注意这个路径,要和keepalived配置文件中指明的路径一致
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.199.188 -p 12000 -s 192.168.199.129:11211 -b 192.168.199.128:11211
else
pkill -9 magent
fi
  赋予脚本执行权限
  chmod +x /opt/shell/magent.sh
  开启keepalived服务
  systemctl start keepalived.service
  查看12000这个端口,这个端口启动时间会稍微慢一些,如果成功开启这个虚拟端口说明服务启动成功
  netstat -ntap | grep 12000

  查看虚拟端口
  ip addr

  二、在从节点上进行安装,注意从节点是不需要安装magent
关闭防火墙
  systemctl stop firewalld.service
setenforce 0
  安装编译环境
  yum install gcc gcc-c++ -y
  解压软件包
  tar zxvf libevent-2.1.8-stable.tar.gz -C /opt
tar zxvf memcached-1.5.6.tar.gz -C /opt
  编译并且安装libevent
  cd /opt/libevent-2.1.8-stable/
./configure --prefix=/usr
make && make install
  编译并且安装memcached
  cd ../memcached-1.5.6/
./configure --with-libevent=/usr
make && make install
  安装keepalived工具
  yum install keepalived -y
  因为在主节点上已经对keepalived配置文件进行了配置,所以这里只需要将主服务器上的配置文件复制过来稍作修改,在这之前需要先将从服务器的配置文件重命名,不然会有冲突
  cd /etc/keepalived/
mv keepalived.conf keepalived.conf.bk
scp root@192.168.199.129:/etc/keepalived/keepalived.conf ./
vim keepalived.conf

  创建脚本,同样这里要注意路径
  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.199.188 -p 12000 -s 192.168.199.129:11211 -b 192.168.199.128:11211
else
pkill -9 magent
fi
  赋予脚本执行权限
  chmod +x /opt/shell/magent.sh
  开启服务
  systemctl start keepalived.service
  查看端口
  netstat -ntap | grep 12000

  查看虚拟IP
  ip addr

  在主从服务器上分别开启memcached服务
  memcached -m 512k -u root -d -l 192.168.199.129 -p 11211   #先在主服务器上开启
netstat -ntap | grep 11211   #查看端口
  memcached -m 512k -u root -d -l 192.168.199.128 -p 11211   #在从服务器上开启
netstat -ntap | grep 11211   #查看端口
  三、测试
客户端:
  yum install telnet -y
telnet 192.168.199.188 12000

  主节点:
  yum install telnet -y
telnet 192.168.199.129 11211
  在主节点上可以看到刚刚所创建的数据

  从节点:
  yum install telnet -y
telnet 192.168.199.128 11211
  在从服务器上同样可以看到这条数据,说明两台服务器之间已经实现了主主复制

  关闭主节点的keepalived
  systemctl stop keepalived.service
  可以看到,关闭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-655638-1-1.html 上篇帖子: 1.6 下篇帖子: NoSQL数据库介绍、memcached安装
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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