领会Memcached高可用群集(Memcached主主复制+Keepalived)

栏目: 数据库 · 发布时间: 6年前

内容简介:通过上图来说明一下原理:1、magent在启动时会指定主的memcached节点与备份的memcached节点,假设我们指定了两个主的缓存节点,一个备份节点,当客户端写入时会通过算法写在其中一个指定的主缓存节点中,并把数据备份到memcached备份节点中,当主节点重启后或者宕机恢复后会从备份节点中恢复丢失的缓存数据。

10月3号我写了高性能内存缓存对象缓存 Memcached 原理 (Memcached核心概念,部署),本片将Memcached高可用群集(Memcached主主复制+Keepalived)掌握一下。

memcached高可用集群原理及介绍:

  1. memcached在实现分布式群集部署时,memcached服务之间是不能进行通讯的,分布式也是通过客户端的算法吧数据保存在不同的memcached中,所以当我们做完群集客户端往一个memcached节点写入数据后,另外两个节点是查询不到的。
  2. 那么如何结局额这个问题,就是接下来要做的了。
    memcached这种群集之间不能相互通讯导致了这种情况,这在访问量很大的web网站中是不允许的。所以我们就要使用到一个magent开源软件来解决这个问题。
    magent是一款开源的代理服务软件,我们可以通过他来实现缓存数据的同步,当然这里说的同步不是说memcached之间就能互相通讯了,而是magent可以备份数据,而magent可以同时连接多个memcached节点,当memcached重启或者宕机恢复后可以从magent指定的memcached的备份节点中恢复丢失的缓存数据。

领会Memcached高可用群集(Memcached主主复制+Keepalived)

通过上图来说明一下原理:

1、magent在启动时会指定主的memcached节点与备份的memcached节点,假设我们指定了两个主的缓存节点,一个备份节点,当客户端写入时会通过算法写在其中一个指定的主缓存节点中,并把数据备份到memcached备份节点中,当主节点重启后或者宕机恢复后会从备份节点中恢复丢失的缓存数据。

2、同时magent还可以使用keepalived来实现高可用。具体案例配置步骤如下所示:

案例说明:

* 为解决memcached单点故障,需要实现memcached缓存的高可用。
* 首先,需要实现Memcached的主主复制,指任意一台memcached服务器修改数据都会被同步到另外一台,但是memcached API无法判断连接哪一台服务器,因此需要VIP。
* 其次,通过Keepalived产生的VIP连接memcached服务器,提供高可用架构。

案例拓扑图如下所示:

领会Memcached高可用群集(Memcached主主复制+Keepalived)

案例环境准备:

主机 操作系统 IP地址 主要软件
Memcached 1 Centos7 192.168.72.128 libevent;memcached;keepalived;magent;telnet
Memcached 2 Centos7 192.168.72.129 libevent;memcached;keepalived;telnet
客户端 Centos7 192.168.72.130 telnet

百度网盘免密提供软件包:

https://pan.baidu.com/s/1aEM27okhC2DK00EhFC9LBw

案例实施过程:

1.首先给两个服务器安装Memcached

* 安装环境包(两台服务器同装):
* systemctl stop firewalld.service      #关闭防火墙
* setenforce 0                                  #关闭增强性安全功能
* yum install gcc gcc-c++ make -y    #安装锁需要的环境包

领会Memcached高可用群集(Memcached主主复制+Keepalived)

* 解压下载好的libevent、memecached包到/opt下:
* tar zxvf libevent-2.1.8-stable.tar.gz -C /opt 
* tar zxvf memcached-1.5.6.tar.gz -C /opt

领会Memcached高可用群集(Memcached主主复制+Keepalived)

* 接下来手工编译安装(注意:libevent在先 memcached在后)
* cd /opt/libevent-2.1.8-stable/      #手工编译安装libevent
     ./configure --prefix=/usr
* make && make install
* cd /opt/memcached-1.5.6/              #手工编译安装memcached
    ./configure --with-libevent=/usr   
* make && make install

领会Memcached高可用群集(Memcached主主复制+Keepalived) 领会Memcached高可用群集(Memcached主主复制+Keepalived)

2.在主服务器上安装magent

* 解压下载好的magent包到/opt/magent/下
* tar zxvf magent-0.5.tar.gz -C /opt/magent/

领会Memcached高可用群集(Memcached主主复制+Keepalived)

* 编辑配置文件:
* cd /opt/magent
* vim ketama.h                 #文件开头修改
   #ifndef SSIZE_MAX
   #define SSIZE_MAX 32767
   #endif                          #删除最后那个endif

* vim Makefile 
   LIBS = -levent -lm         #注意空格 

* make                             #安装magent
* ls                                    #查看magent可执行程序

领会Memcached高可用群集(Memcached主主复制+Keepalived) 领会Memcached高可用群集(Memcached主主复制+Keepalived) 领会Memcached高可用群集(Memcached主主复制+Keepalived)

* 将magent程序复制到memcached从服务器上:
* scp magent 192.168.72.129:/usr/bin

领会Memcached高可用群集(Memcached主主复制+Keepalived) 3.接下来主服务器上安装keepalived

* yum install keepalived -y     #yum安装
* 安装完成修改配置文件:
* vim /etc/keepalived/keepalived.conf 
//12行
router_id MAGENT_HA
删除13-16 (vrrp)
//在global_defs下添加
vrrp_script magent {
     script "/opt/shell/magent.sh"
     interval 2                   #时间间隔2s
}
vrrp_instance VI_1 {    
......
interface ens33             #修改
......
track_script {                 #调用-添加 ;注意括号
       magent
}
virtual_ipaddress          #修改
           192.168.72.100
     }                                #定义虚拟地址
}                                     #剩余全删除

领会Memcached高可用群集(Memcached主主复制+Keepalived) 领会Memcached高可用群集(Memcached主主复制+Keepalived) 4.接下来从服务器上安装keepalived

* yum install keepalived -y                       #yum安装keepalived
* cd /etc/keepalived/
* mv keepalived.conf keepalived.conf.bk           #修改配置文件名
* scp keepalived.conf root@192.168.72.129:/etc/keepalived/    #主服务器上推送keepalived已经修改好的配置文件
* vi keepalived.conf
  router_id MAGENT_HB
  state BACKUP
  virtual_router_id 52
  priority 90

领会Memcached高可用群集(Memcached主主复制+Keepalived) 领会Memcached高可用群集(Memcached主主复制+Keepalived) 领会Memcached高可用群集(Memcached主主复制+Keepalived) 5.到此主从两台服务器上keepalived已经安装配置完成,接下来在主和从服务器写入keepalived配置文件加载的脚本

* 建一个脚本存放目录:
* 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 ]; then
       magent -u root -n 51200 -l 192.168.72.100 -p 12000 -s 192.168.37.128:11211 -b 192.168.37.130:11211
else
pkill -9 magent
fi 

-n 51200                      #定义用户最大连接数
-l 192.168.37.188        #指定虚拟IP
-p 12000                     #指定端口号
-s                                #指定主缓存服务器
-b                                  #指定从缓存服务器
chmod +x magent.sh                #添加执行权限

领会Memcached高可用群集(Memcached主主复制+Keepalived)

* 主从服务器开启keepalived服务:
* systemctl start keepalived.service
* netstat -ntap | grep 12000               #开启较慢,确认magent运行

领会Memcached高可用群集(Memcached主主复制+Keepalived)

  • 确认主从服务器漂移地址生效
  • 主服务器:
    领会Memcached高可用群集(Memcached主主复制+Keepalived)
  • 从服务器:
    领会Memcached高可用群集(Memcached主主复制+Keepalived) 6.主从服务器开启memecached
  • 主服务器:
  • memcached -m 512k -u root -d -l 192.168.72.128 -p 11211
  • netstat -ntap | grep 11211
  • yum install telnet -y #安装远程登录工具
  • telnet 192.168.72.128 11211 #本地登录
    ![](http://i2.51cto.com/images/blog/201810/19/adf324951eef2e8963624f10ada3cf40.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
* 从服务器:
* memcached -m 512k -u root -d -l 192.168.72.129 -p 11211
* netstat -ntap | grep 11211
* yum install telnet -y
* telnet 192.168.72.129 11211

领会Memcached高可用群集(Memcached主主复制+Keepalived)

7.客户端测试

* 安装telnet工具,连接VIP,写入数据:
* yum install telnet -y
* telnet 192.168.72.100 12000
   add username 0 0 4
   1234

领会Memcached高可用群集(Memcached主主复制+Keepalived)

  • 主服务器可以看到写入的内容:
    领会Memcached高可用群集(Memcached主主复制+Keepalived)
  • 从服务器可以看到写入的内容:
    领会Memcached高可用群集(Memcached主主复制+Keepalived)
  • 如果断掉一台memcached,再次访问,客户端仍然可以连接:
    领会Memcached高可用群集(Memcached主主复制+Keepalived) 领会Memcached高可用群集(Memcached主主复制+Keepalived) 仍然可以看到!

    本篇总结:

  • Memcached是分布式内存对象缓存系统,因为所有数据都存储在内存中,从而常用于网站加速;
  • Memcached分布式实现不是在服务端实现的而是在客户端实现;

以上所述就是小编给大家介绍的《领会Memcached高可用群集(Memcached主主复制+Keepalived)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

High Performance JavaScript

High Performance JavaScript

Nicholas C. Zakas / O'Reilly Media / 2010-4-2 / USD 34.99

If you're like most developers, you rely heavily on JavaScript to build interactive and quick-responding web applications. The problem is that all of those lines of JavaScript code can slow down your ......一起来看看 《High Performance JavaScript》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具