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

目录:

1·Memcached 主主复制概念
2·Memcached 高可用的实现
3·案例部署
4·总结


Memcached 主主复制概念

(1)主主复制概念:

Memcached 主主复制是指在任意一台 Memcached 服务器修改数据都会被同步到另外一台,但是 Memcached API 客户端无法判断连接到那一台 Memcached 服务器,所有需要设置 VIP 地址,提供给 Memcached API 客户端进行连接。



(2)文章推荐:

知道了主主复制,那么需要了解 Memcached 是什么,还有一些最基本的情况,比如:
1) Memcached 功能
2)Memcached 特征
3)Memcached 储存方式
可以看看上篇文章Memcached 高性能缓存对象


Memcached 高可用的实现

(1)怎么实现 Memcached 的高可用

1)这里就需要牵扯到主主复制的概念了,因为Memcached 主主复制这种架构,在程序连接的时候不会知道应该连接哪一个主服务器,所以需要在前端加上 VIP 地址,实现高可用架构。这里可以用 Keepalived 实现,所以说,Keepalived 的作用就是来检测 Memcached 服务器的状态是否正常。


2)Keepalived 会不断的检测 Memcached 主服务器的 11211端口,如果检测到 Memcached 服务发生故障或宕机等情况,就会将 VIP 从主服务器上转移到从服务器,从而实现 Memcached 的高可用性。



3)Memcached 高可用架构图


案例部署说明

(1)部署环境文字说明:

1)因为这篇文章是演示 Memcached 的主主复制+ Keepalived 的高可用架构,所以这里不需要安装 Memcached API 。请提前安装编译环境:gcc 、gcc-c++ 、 make ,文章中不会提示安装!


2)整个环境部署所需要的源码包将会无偿提供,需要的请点击:Memcached 高可用源码包,密码:sxsr



(2)部署环境表格说明:

名称 IP 地址 操作系统 主要软件包
Memcached 主1 192.168.154.128 CenOS 7.4 libevent-2.1.8-stable.tar.gz 、memcached-1.5.6.tar.gz 、 magent-0.5.tar.gz
Memcached 主2 192.168.154.129 CenOS 7.4 libevent-2.1.8-stable.tar.gz 、memcached-1.5.6.tar.gz
Linux 系统 192.168.154.130 CenOS 7.4 telnet 用于测试

开始部署

(1)在 Memcached 主1解压、安装 所需要的源码包
1)关闭防火墙

[[email protected] memcached]# systemctl stop firewalld.service
[[email protected] memcached]# setenforce 0

2)解压、安装源码包 libevent-2.1.8-stable.tar.gz

[[email protected] memcached]# tar zxvf libevent-2.1.8-stable.tar.gz -C /opt/
[[email protected] memcached]# cd /opt/libevent-2.1.8-stable
[[email protected] libevent-2.1.8-stable]# ./configure --prefix=/usr ---(指定安装路径)
[[email protected] libevent-2.1.8-stable]# make && make install
[[email protected] libevent-2.1.8-stable]# ln -s /usr/lib/libevent-2.1.so.6  /usr/lib64/libevent-2.1.so.6 --(这里必须将模块做一个软连接,因为启动 Memcached 时需要在/usr/lib64下寻找libevent-2.1.so.6模块)


3)解压、安装源码包 memcached-1.5.6.tar.gz

[[email protected] memcached]# tar zxvf memcached-1.5.6.tar.gz -C /opt
[[email protected] memcached]# cd /opt/memcached-1.5.6
[[email protected] memcached-1.5.6]# ./configure --with-libevent=/usr ---(这里安装需要指定 libevent 的安装路径)
[[email protected] memcached-1.5.6]# make && make install


4)安装、解压软件包 magent-0.5.tar.gz

[[email protected] ~]# mkdir /opt/magent
[[email protected] memcached]# tar xvf magent-0.5.tar.gz -C /opt/magent
将会得出以下文件:
ketama.c
magent.c
ketama.h
Makefile
[[email protected] memcached]# cd /opt/magent
[[email protected] magent]# vim ketama.h  ---(现在没有 make 文件,需要修改才能得出 make 执行文件)
修改如下:
#ifndef SSIZE_MAX
#define SSIZE_MAX 32767

[[email protected] magent]# vim Makefile ---(继续修改文件)
修改内容:
LIBS = -levent -lm

[[email protected] magent]# make ----(文件修改完成后就可以 make)
[[email protected] magent]# cp magent /usr/bin


(2)在 Memcached 主2 解压、安装 所需要的源码包
1)关闭防火墙

[[email protected] memcached]# systemctl stop firewalld.service
[[email protected] memcached]# setenforce 0

2)解压、安装源码包 libevent-2.1.8-stable.tar.gz

[[email protected] memcached]# tar zxvf libevent-2.1.8-stable.tar.gz -C /opt/
[[email protected] memcached]# cd /opt/libevent-2.1.8-stable
[[email protected] libevent-2.1.8-stable]# ./configure --prefix=/usr ---(指定安装路径)
[[email protected] libevent-2.1.8-stable]# make && make install
[[email protected] libevent-2.1.8-stable]# ln -s /usr/lib/libevent-2.1.so.6  /usr/lib64/libevent-2.1.so.6 --(这里必须将模块做一个软连接,因为启动 Memcached 时需要在/usr/lib64下寻找libevent-2.1.so.6模块)


3)解压、安装源码包 memcached-1.5.6.tar.gz

[[email protected] memcached]# tar zxvf memcached-1.5.6.tar.gz -C /opt
[[email protected] memcached]# cd /opt/memcached-1.5.6
[[email protected] memcached-1.5.6]# ./configure --with-libevent=/usr ---(这里安装需要指定 libevent 的安装路径)
[[email protected] memcached-1.5.6]# make && make install


4)把 主1 的 magent 文件,远程拷贝一份到 主 2 ,这里需要在 主1 上操作

[[email protected] magent]# yum install telnet -y ----(安装远程连接工具)
[[email protected] magent]# scp magent [email protected]:/usr/bin ---(发送给主 2 一份 )


(3)在 主 1 、主 2 上同时安装 Keepalived 软件
1)安装 Keepalived 、修改 Keepalived 配置文件

[[email protected] ~]# yum install keepalived -y
[[email protected] ~]# vim /etc/keepalived/keepalived.conf  ---(修改Keepalived主配置文件)
! Configuration File for keepalived

vrrp_script magent {                              #定义函数
        script "/opt/shell/magent.sh"           #临时定义的路径,所以还需要手动创建
        interval 2                                        #每隔两秒检测
}
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 Master_A         #定义id名称,主 2  可以任意修改
     以下几行需要删除
}   

vrrp_instance VI_1 {
        state MASTER                                 #定义状态,主 2  定义为 BANKUP
        interface ens33                                #WANG
    virtual_router_id 51
    priority 100                                      #优先级,主 2 要低于 主 1
    advert_int 1
    authentication {
        auth_type PASS                          #身份验证,这里需要和 主2 一致
        auth_pass 1111
    }

track_script {                                          #开始调用函数
        magent
}

    virtual_ipaddress {                            #定义VIP 漂移地址
        192.168.154.188
    }
}
以下所有配置删除


2)编写触发式脚本

[[email protected] ~]# mkdir /opt/shell   ----(这里路径需要和 Keepalived 主配置文件里路径一致)

[[email protected] ~]# vim /opt/shell/magent.sh
内容如下:
K=$(ps -ef | grep keepalived | grep -v grep | wc -l)
if [ $K -gt 0 ];then
magent -u root -n 51200 -l 192.168.154.188 -p 12000 -s  192.168.154.128:11211 -b 192.168.154.129:11211
else
pkill -9 magent
fi

对以上参数说明:
-n 51200 //定义用户最大连接数
-l 192.168.154.188 //指定虚拟ip
-p 12000 //指定端口号
-s //指定主缓存服务器
-b //指定从缓存服务器

[[email protected] shell]# scp magent.sh [email protected]:/opt/shell ----(发送给 主 2 一份,就不用在 主2 上写了)



3)给与脚本执行权限、并启动 Keepalived 服务

[[email protected] ~]# chmod +x /opt/shell/magent.sh
[[email protected] keepalived]# scp keepalived.conf [email protected]:/etc/keepalived  ----(发送配置文件给 主 2)
[[email protected] keepalived]# systemctl start keepalived.service  ---(启动 keepalived 服务)
[[email protected] keepalived]# netstat -antp | grep 12000 ----(查看启动端口)
tcp        0      0 192.168.154.188:12000   0.0.0.0:*               LISTEN      51911/magent 


4)启动 memcached 服务

[[email protected] ~]# memcached -m 512k -u root -d -l 192.168.154.128 -p 11211
[[email protected] ~]# netstat -antp | grep 11211 -----(查看端口)
tcp        0      0 192.168.154.128:11211   0.0.0.0:*               LISTEN      53856/memcached


5)在 主 2 上启动 Keepalived 与 Memcached 服务、创建目录

[[email protected] ~]# mkdir /opt/shell
[[email protected] shell]# systemctl start keepalived.service
[[email protected] shell]# netstat -antp | grep 12000
tcp        0      0 192.168.154.188:12000   0.0.0.0:*               LISTEN      50521/magent
[[email protected] ~]# memcached -m 512k -u root -d -l 192.168.154.129 -p 11211
[[email protected] ~]# netstat -antp | grep 11211


(4)服务搭建完成,开始在客户端测试主主复制:
1)客户端连接漂移地址写入数据

[[email protected] ~]# yum install telnet -y
[[email protected] ~]# telnet 192.168.154.188 12000 -----(远程连接VIP 地址 端口号 为 12000)
开始写入数据:
add username 0 0 6
123456
STORED


2)客户端连接 主1 的 真实 IP 地址 端口 11211 ,查看数据

[[email protected] ~]# telnet 192.168.154.128 12000
get username  -----(查看数据)
VALUE username 0 6   ----(写入的数据存在)
123456
END


如下图:



3)客户端连接 主 2 的真实 IP 地址 端口 11211, 查看数据

[[email protected] ~]# telnet 192.168.154.129 11211
get username
VALUE username 0 6
123456
END


如下图:



(5)开始验证,Keepalived 的高可用:
[[email protected] shell]# systemctl stop keepalived.service ------(停止主1 keepalived 服务)
[[email protected] ~]# telnet 192.168.154.188 12000 ----(客户端再次连接漂移地址,如果能连接成功,高可用成功)
[[email protected] ~]# ip addr ----(在 主 2 上查看漂移地址)
如下图:

结论:

1·Memcached 是分布式内存对象缓存系统,因为所有数据都存储在内存中,从而常用于网站加速
2·Memcached 分布式实现不是在服务端实现而是在客户端实现的
3·Memcached 可以通过 Keepalived 实现 Memcached 服务的高可用性。

原文地址:http://blog.51cto.com/13746824/2286806

时间: 2024-10-09 19:51:31

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

超详细搭建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

Memcached主主复制+Keepalived高可用群集

Memcached 主主案例 : Memcached 主主复制是指在任意一台 Memcached 服务器修改数据都会被同步到另外一台,但是Memcached API 客户端是无法判断链接到那一台服务器的,所以需要设置 VIP 地址,提供给 Memcached API 客户端进行链接.可以使用keepalived 产生的 VIP 地址链接主 Memcached 服务器,并且提供高可用架构. 实验环境 : 主机 IP地址 操作系统 主要软件包 Memcached 1 192.18.217.128 C

MariaDB-5.5.56 主主复制+keepalived高可用

mariadb主主复制+keepalived高可用 主机1:192.168.1.22 主机2:  192.168.1.23 VIP1:192.168.1.233 VIP2:  192.168.1.234 主机1设置: 安装需要用到的rpm包 yum -y install ipvsadm keepalived mariadb mariadb-server 启动mariadb并设置为开机启动 systemctl start mariadb systemctl enable mariadb 设置密码

Mysql双主互备+keeplived高可用架构(部分)

一.Mysql双主互备+keeplived高可用架构介绍 Mysql主从复制架构可以在很大程度保证Mysql的高可用,在一主多从的架构中还可以利用读写分离将读操作分配到从库中,减轻主库压力.但是在这种架构中,主库出现故障时需要手动将一台从库提升为主库.在对写操作要求较高的环境中,主库故障在主从架构中会成为单点故障.因此需要主主互备架构,避免主节点故障造成写操作失效. 在双主互备的架构中,每台Mysql都充当主服务器,同时充当对方的从服务器.在任意一台服务器上的写操作都会被复制到另一台服务器上,从

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

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

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

实现主从复制和高可用的方式 Memcached主从复制是指在主Mencached服务器上修改数据都会被同步到其他服务器上,MemcachedAPI客户端是无法判断连接到那一台Memcached服务器,所以需要VIP地址,提供给MemcachedAPI客户端进行连接.可以使用keepaived产生的VIP地址连接主Memcached服务器来完成,并且提供高可用架构. 环境准备 系统版本:Centos7 服务器规划 服务器 IP地址 主要软件 主Memcached 172.16.10.24 libe

mysql-双主+keepalived高可用架构

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