实现主从复制和高可用的方式

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.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 192.168.200.1smtp_connect_timeout 30router_id MAGENT_HA     //router_id自定义,但是要确保主从一致
}
vrrp_script magent {script "/opt/shell/magent.sh"interval 2                //定义一个函数,此时该脚本还未创建,要在实例外面定义
}
vrrp_instance VI_1 {state MASTER           //从为BACKUPinterface ens33virtual_router_id 51   //此处id也相同priority 100           //从的优先级低于主advert_int 1authentication {auth_type PASSauth_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 ]; thenmagent -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 ]; thenmagent -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是否漂移到从服务器上

转载于:https://blog.51cto.com/13643643/2150152

Memcached主从复制+keepalived高可用架构相关推荐

  1. linux 双mysql_MySQL双主互备+Keepalived高可用架构实现案例

    一.环境介绍 1.1.规划 序号 类别 版本 主机名 IP 端口 备注 1 OS CentOS release 6.9 (Final) (minimal) my1 172.16.210.180 830 ...

  2. Memcached主主复制+Keepalived高可用架构

    实验报告 第一.实验环境: 第二.实验步骤: 配置memcached主缓存节点和从缓存节点-----两台配置相同 解包: tar xf memcached-1.5.6.tar.gz -C /opt/ ...

  3. MySQL——Keepalived+Mysql高可用架构实战

    摘要 在生产环境中mysql的高可用的对于整个项目而言有着至关重要的作用.因此需要将mysql设计成为高可用的架构.本博文将详细介绍的mysql+keepalived构建的mysql互为主从的架构实战 ...

  4. haproxy负载均衡_Haproxy+keepalived高可用集群实战

    随着互联网火热的发展,开源负载均衡器的大量的应用,企业主流软件负载均衡如LVS.Haproxy.Nginx等,各方面性能不亚于硬件负载均衡F5,Haproxy提供高可用性.负载均衡以及基于TCP和HT ...

  5. Haproxy+keepalived高可用集群实战

    前言 随着互联网火热的发展,开源负载均衡器的大量的应用,企业主流软件负载均衡如LVS.Haproxy.Nginx等,各方面性能不亚于硬件负载均衡F5,Haproxy提供高可用性.负载均衡以及基于TCP ...

  6. nginx+keepalived高可用web架构

    nginx+keepalived高可用web架构 1.下载所需的软件包 (1).keepalived软件包keepalived-1.1.20.tar.gz (2).nginx软件包nginx-1.1. ...

  7. MySQL 5.6通过Keepalived+互为主从实现高可用架构

    本文将介绍两台Mysql如何实现高可用架构.通常我们会配置主从同步,但这样若主的Mysql挂掉,还需要手动干预,例如把指向主库的IP地址修改为指向从库的IP,为了实现自动切换到从数据库,我们可以使用K ...

  8. 高可用架构-- MySQL主从复制的配置

    环境 操作系统:CentOS-6.6-x86_64-bin-DVD1.iso MySQL版本:mysql-5.6.26.tar.gz 主节点IP:192.168.1.205 主机名:edu-mysql ...

  9. mysql有没有实现高可用_MySQL高可用架构:mysql+keepalived实现

    系统环境及架构 #主机名 系统版本 mysql版本 ip地址 mysqlMaster centos7.4 mysql5.7 192.168.1.42 mysqlSlave centos7.4 mysq ...

最新文章

  1. mysql 函数rep_Mysql之各种各样的函数啦
  2. 给列名称命名_批量提取文件名,然后换上新名称
  3. web安全---浏览器解析提交数据的过程
  4. 大数据技术周报第 002 期
  5. python字符串_Python字符串格式化%s%d%f详解
  6. Java的jdk在win10安装配置环境变量
  7. 电改:国内电网的账单也与时俱进了
  8. python后端数据发送到前端_python后端开发使用flask接收前端数据,处理后返回结果...
  9. stolz定理考研能用吗_这些高数定理,2021二战考研租房的你千万别记混
  10. SpringBoot项目文件上传
  11. 提取地图中道路_准确度93%!人工智能如何完成高精度的地图特征推测?丨城市数据派...
  12. php的垃圾回收机制
  13. OAI SDR LTE 基站部署
  14. 信息化15年规划推动中国信息化步入深水区
  15. 什么情况下你会毫不犹豫地辞职?
  16. 无人机作战效能评估系统
  17. 服务器版本的ansys证书错误,关于ANSYS Workbench 出现证书错误的解决办法
  18. WinBUGS对多元随机波动率模型:贝叶斯估计 模型比较
  19. 图片+文案(在图片上)
  20. 虚拟屏幕与云计算————微软亚洲研究院

热门文章

  1. 你真的会玩SQL吗?内连接、外连接
  2. javascript时间格式format函数,js日期格式化函数
  3. 【java开发系列】—— 嵌套类与内部类
  4. 一些C语言学习的国外资源
  5. 鸟哥的Linux私房菜(基础篇)- 鸟哥的第一本书的主要内容,以 Mandrake 9.0 为例
  6. 信息系统项目管理师:论项目的质量管理
  7. webpack打包html里的img图片
  8. 使用Formik轻松开发更高质量的React表单(二)使用指南
  9. CentOS 7.0卸载自带的mariadb
  10. spice server dpkg-buildpackage 打包编译备忘