Memcached主从复制+keepalived高可用架构

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

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 [email protected]:/usr/bin/     //发送到从服务器上

主从服务器安装keepalived

yum -y install keepalived

修改主从服务器配置文件

! Configuration File for keepalived
global_defs {
   notification_email {
     [email protected]
     [email protected]
     [email protected]
   }
   notification_email_from [email protected]
   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/magent
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
cd /opt/magent
vim  /opt/magent/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写入数据,查看两台服务器上是否都已经有了数据

[[email protected]]# 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
[[email protected]]# 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是否漂移到从服务器上

原文地址:http://blog.51cto.com/13643643/2150152

时间: 2024-08-28 11:34:45

Memcached主从复制+keepalived高可用架构的相关文章

CentOS 7 上部署Memcached 主主复制 + keepalived 高可用架构

实验环境 Memcached主主复制是指在任意一台Memcached服务器修改数据都会被同步到另外一台,但是Memcached API客户端是无法判断连接到哪一台Memcached服务器的,所以需要设置VIP地址,提供给Memcached API客户端进行连接.可以使用kcepalived产生的VIP地址连接主Memceached服务器,并且提供高可用架构.本案例使用两台Memcahed服务器和一台测试主机来完成. 主Memcahed服务器IP:192.168.10.161 备Memcahed服

Memcached主主复制+Keepalived高可用架构(内含所有源码包)

初步了解memcached主主复制: Memcached主主复制是指在任意一台memcached服务器修改数据都会被同步到另外一台,但是memcached API客户端是无法判断连接到哪一台memcached服务器的,所以需要设置VIP地址,提供给memcached API客户端进行连接.可以使用keepalived产生的VIP地址连接主memcached服务器,并且提供高可用架构.Memcached的复制功能支持多个memcached之间进行相互复制(双向复制,主备都是可读可写的),可以解决m

Oracle Compute云快速搭建MySQL Keepalived高可用架构

最近有个客户在测试Oracle Compute云,他们的应用需要使用MySQL数据库,由于是企业级应用一定要考虑高可用架构,因此有需求要在Oracle Compute云上搭建MySQL高可用集群.客户根据自身的技术储备想要使用Keepalived组件来配合MySQL实现.今天结合Oracle Compute刚刚宣布terraform支持的架构即代码方式,交付给客户一个快速搭建MySQL+Keepalived高可用架构,来帮助他们快速搭建测试环境甚至将来使用到正式环境. MySQL主主复制模式 M

部署Memcached+magent+keepalived高可用集群

Memcached+magent+keepalived高可用集群 magent是一款开源的代理服务软件,我们可以通过他来实现缓存数据的同步,当然这里说的同步不是说memcached之间就能互相通讯了, 而magent可以同时连接多个memcached节点, 通过magent绑定的VIP从客户端登录memcached写入数据,其他节点的memcached数据也会同步.? 案例环境 主机名称 IP 主要软件 memcached主 192.168.200.128 Magent.memcached.li

Memcached 主主复制 + Keepalived 高可用架构【附上原理】

目录: 1·Memcached 主主复制概念2·Memcached 高可用的实现3·案例部署4·总结 Memcached 主主复制概念 (1)主主复制概念: Memcached 主主复制是指在任意一台 Memcached 服务器修改数据都会被同步到另外一台,但是 Memcached API 客户端无法判断连接到那一台 Memcached 服务器,所有需要设置 VIP 地址,提供给 Memcached API 客户端进行连接. (2)文章推荐: 知道了主主复制,那么需要了解 Memcached 是

超详细搭建Memcached主主复制+Keepalived高可用架构

简介 Memcached本身是基于内存的缓存,它的设计本身没有冗余机制.如果一个Memcached节点失去了所有的数据,应用程序可以从数据源中再次获取到数据,可以使用开源软件Magent实现Memcached集群,通过Magen缓存代理,防止单点现象.缓存代理也可以做备份,可以用keepalived软件实现高可用 实验环境 主机名 操作系统 IP地址 相关软件 master CentOS_7.4_x86_64 192.168.100.71 libevent-2.1.8-stable.tar.gz

mysql-双主+keepalived高可用架构

在生产环境中,任何架构的建立,必须拥有防止单点故障的存在.mysql可以拥有主从,或者双主,加上keepalived的VRRP热备切换功能可以实现还有其他的,MHA,PXC,MMM,heartbeat+DRBD等----------------------------------------------------------------------------------- 搭建思路,首先两台mysql互为主从复制关系,通过keepalived的虚拟IP来提供mysql服务centos7+双m

Memcached + Magent + keepalived高可用集群

一.前言 magent是一款开源的代理服务软件,我们可以通过它来实现缓存数据的同步,当然这里说的同步不是说memcached之间就能互相通讯了, 而magent可以同时连接多个memcached节点, 通过magent绑定的VIP从客户端登录memcached写入数据,其他节点的memcached数据也会同步. 二.架构部署 环境说明:1.配置 memcache 主缓存节点和从缓存节点(两台服务器配置相同) yum install gcc gcc-c++ make -y 1.tar zxvf m

Memcached 主主复制+ Keepalived 实现 Memcached 高可用架构集群

Memcached +keepalived 高可用集群 Memcached 主主复制这种架构,在程序连接时不知道应该连接哪个主服务器,所以需要在前端增加 VIP 地址,实现高可用架构.这里用 Keepalived 实现,因而 Keepalived 的作用就是用来检测 Memcached 服务器的状态是否正常. Keepalived 不断检测 Memcached 主服务器的11211端口,如果检测到 Memcached 服务发生宕机或者死机等情况,就会将 VIP 从主服务器移至从服务器,从而实现