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

初步了解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 [email protected]:/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 [email protected]:/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服务后,虚拟端口也就消失了

再次在客户端上对数据进行查看,可以发现并没有什么影响,所以这也体现了该架构的高可用性

原文地址:http://blog.51cto.com/13706760/2287359

时间: 2024-10-08 01:21:03

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 高可用架构【附上原理】

目录: 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

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

在LAMP架构中安装Memcached高性能内存对象缓存应用(内含所有源码包)

初识memcached: Memcached是一套开源的高性能分布式内存对象缓存系统,它将所有的数据都存储在内存中,因为在内存中会统一维护一张巨大的hash表,所以支持任意存储类型的数据.很多网站通过使用memcached提高网站的访问速度,尤其是对于大型的需要频繁访问数据的网站. Memcached是典型的C/S结构,因此需要安装memcached服务端和memcached API客户端.Memcached服务端是用C语言编写的,而memcached API客户端可以用任何语言来编写,如PHP