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

Memcached的安装和基本操作 博客

在这个博客里面的一个测试网页源码里面的IP地址要改为这次Keepalived的VIP地址,来测试高可用性。最末尾的一个网页验证。

简介

Memcached主主复制是指在一台Memcached服务器修改数据都会被同步到另外一台,但是Memcached API客户端是无法判断连接到哪一台Memcached服务器的,所以需要设置VIP地址,提供给Memcached API客户端进行连接,可以使用keepalived产生的VIP地址连接主Memcached服务器,并且提供高可用架构。

案例环境

名称IP地址操作系统主要软件包
Memcached1192.168.10.101CentOS Linux release 7.3.1611 (Core)memcached-1.2.8-repcached-2.2.tar libevent-2.1.8-stable.tar.gz keepalived.x86_64
Memcached2192.168.10.102CentOS Linux release 7.3.1611 (Core)memcached-1.2.8-repcached-2.2.tar libevent-2.1.8-stable.tar.gz keepalived.x86_64

Memcached主主复制架构

Memcached的复制功能支持多个memcached之间进行相互复制(双向复制,主备都是可读可写的),可以解决Memcached的容灾问题。
要使用Memcached复制架构,需要重新下载支持复制功能的Memcached安装包,https://sourceforge.net/repcached/memcached-1.2.8-repcached-2.2.tar.gz
注意:如果使用其他版本的安装包不支持复制功能。比如memcached-1.5.1.tar等。

1.安装带有复制功能的Memcached
安装完成Libevent之后,将下载的memcached-1.2.8-repcached-2.2.tar进行解压,然后完成编译安装。

[root@Memcached1 src]# tar zxvf memcached-1.2.8-repcached-2.2.tar.gz
[root@Memcached1 memcached-1.2.8-repcached-2.2]# ./configure --prefix=/usr/local/memcached_replication --enable-replication --with-libevent=/usr/local/libevent

注意:在make编译安装的时候如果报错:

memcached.c: 在函数‘add_iov’中:
memcached.c:696:30: 错误:‘IOV_MAX’未声明(在此函数内第一次使用)
if (m->msg_iovlen == IOV_MAX ||
^
memcached.c:696:30: 附注:每个未声明的标识符在其出现的函数内只报告一次
make[2]: *** [memcached-memcached.o] 错误 1
make[2]: 离开目录“/usr/src/memcached-1.2.8-repcached-2.2”
make[1]: *** [all-recursive] 错误 1
make[1]: 离开目录“/usr/src/memcached-1.2.8-repcached-2.2”
make: *** [all] 错误 2

解决办法:

[root@Memcached1 memcached-1.2.8-repcached-2.2]# vim memcached.c

将有红色标记的行给删除掉。
红色标记的意思是不支持Centos操作系统需要删掉。
 
[root@Memcached1 memcached-1.2.8-repcached-2.2]# make && make install

2.启动Memcached服务。
支持复制功能的Memcached安装完成之后,需要将编译安装的libevent-1.4.so.2模块复制到/usr/lib64目录下,否则在启动带有复制功能的Memcached服务时会报错。

[root@Memcached1 /]# ln -s /usr/local/libevent/lib/libevent-2.1.so.6 /usr/lib64/

启动服务时,使用-x选项指向对端

[root@Memcached1 /]# /usr/local/memcached_replication/bin/memcached -d -u root -m 128 -x 192.168.10.102 在第一台上面操作
[root@Memcached2 /]# /usr/local/memcached_replication/bin/memcached -d -uroot -m 128 -x 192.168.10.101 在第二台上面操作

在两台上面都要安装。

3.使用telnet进行验证复制功能
1.在第一台上面插入一条键值,2.在第二条上面可以查看到这对键值。这就是主主复制。

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

因为Memcachedx主主复制这种架构,程序连接时不知道应该连接那个主服务器,所以需要在前面加VIP地址,实现高可用架构,这里用Keepalived实现,因而Keepalived的作用是用来检查Memcached服务器的状态是否正常。

Keepalived不断检查Memcached主服务器11211端口,如果检查到Memcached服务器发生宕机或者死机等情况,就会将VIP从主服务器一直从服务器,从而实现Memcached的高可用性
在这里插入图片描述

1.安装配置Keepalived

yum -y install keepalived.x86_64

2.配置主Keepalived

! Configuration File for keepalived

global_defs {
   notification_email {
	2229088784@qq.com
   }
   notification_email_from keepalived@localhost
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 10
    priority 100
    advert_int 1
    nopreempt
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.10.66 dev eth0 label eth0:1
    }
}

virtual_server 192.168.10.66 11211 {
    delay_loop 6
    lb_algo rr
    lb_kind NAT
    persistence_timeout 50
    protocol TCP
    sorry_server 192.168.10.102 11211
    real_server 192.168.10.101 11211 {
        weight 1
	notify_down /etc/keepalived/memcached.sh
        TCP_CHECK {
           connect_timeout 3
           nb_get_retry 3
           delay_before_retry 3
	   connect_port 11211
        }
    }
}

两台都需要设置执行脚本

[root@Memcached1 keepalived]# echo “/usr/bin/systemctl stop keepalived” > memcached.sh
[root@Memcached1 keepalived]# chmod +x memcached.sh

3.在另一台服务器上面配置从的Keepalived

! Configuration File for keepalived

global_defs {
   notification_email {
	2229088784@qq.com
   }
   notification_email_from keepalived@localhost
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 10
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.10.66 dev eth0 label eth0:1
    }
}

virtual_server 192.168.10.66 11211 {
    delay_loop 6
    lb_algo rr
    lb_kind NAT
    persistence_timeout 50
    protocol TCP
    sorry_server 192.168.10.101 11211
    real_server 192.168.10.102 11211 {
        weight 1
	notify_down /etc/keepalived/memcached.sh
        TCP_CHECK {
           connect_timeout 3
           nb_get_retry 3
           delay_before_retry 3
	   connect_port 11211
        }
    }
}

4.重启Keepalived

[root@Memcached2 keepalived]# systemctl restart keepalived

验证是否高可用Memcached

1.首先查看主服务器的VIP地址
在这里插入图片描述
2.杀死主上面的Memcached,看VIP是否已经漂移到从的服务器上面。并访问网页查看是否可以继续访问

[root@Memcached1 keepalived]# killall memcached

在这里插入图片描述
3.查看网页是否可以访问
在这里插入图片描述

到这里,Memcached的双主复制和Keepalived高可用已经完成了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值