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

Memcached +keepalived 高可用集群

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

系统环境

主机名操作系统IP地址软件包VIP地址
Memcached1服务器CentOS 7.4 x86_64192.168.100.201libevent-2.1.8-stable.tar.gz、memcached-1.5.9.tar.gz、magent-0.5.tar.gz、keepalived192.168.100.200
Memcached2服务器CentOS 7.4 x86_64192.168.100.202libevent-2.1.8-stable.tar.gz、memcached-1.5.9.tar.gz、keepalived192.168.100.200
Client客户端CentOS 7.4 x86_64192.168.100.203Telnet 

部署服务

 

配置memcached主缓存节点和从缓存节点-----两台配置相同

 

# tar zxvf memcached-1.5.6.tar.gz -C /opt/
# tar zxvf libevent-2.1.8-stable.tar.gz -C /opt/
# yum install gcc gcc-c++ make -y
 
# cd /opt/libevent-2.1.8-stable
# ./configure --prefix=/usr/local/libevent
# make && make install
 
# cd /opt/memcached-1.5.6
# ./configure \
--prefix=/usr/local/memcached \
--with-libevent=/usr/local/libevent/
# make && make install
 
# ln -s /usr/local/memcached/bin/* /usr/local/bin/

 

  • 将安装的libevent-2.1.so.6模块建立软链接到/usr/lib64目录下,否则在启动Magent时会出错

    # ln -s /usr/local/libevent/lib/libevent-2.1.so.6 /usr/lib64/libevent-2.1.so.6

     

    在主服务器上安装 Magent

     

    Magent 是一款开源的 Memcached 代理软件,使用它可以搭建高可用性的集群应用的 Memcached 服务 ,备份 Memcached 数据,尽管 Memcached 服务挂掉,前端也能获取到数据,客户端先连到 Magent 代理服务器 ,然后Magent 代理服务器 在可以连接多台 Memcached 服务器,然后可以进行数据的保存和备份数据。这样数据就不会丢失,保存了数据完整性。
     

  • 主服务器
    # wget http://memagent.googlecode.com/files/magent-0.5.tar.gz
    # mkdir /opt/magent
    # tar zxvf magent-0.5.tar.gz -C /opt/magent
    # cd /opt/magent
  • 编译安装前需要先修改文件,否则会报错
    # vim ketama.h   //修改下面的行
    #ifndef SSIZE_MAX
    #define SSIZE_MAX 32767
    #endif
     
    # vim Makefile  //添加路径
    LIBS = -levent -lm -L/usr/local/libevent/lib 
    INCLUDE=-I/usr/local/libevent/include
     
    # make 
  • 编译后会生成一个可执行的文件,我们把生成的magent命令让系统识别,并发送到Memcached2服务器
    # cp magent /usr/bin/      //把生成的magent命令让系统识别
    # scp /opt/magent/magent root@192.168.100.202:/usr/bin    //把生成的magent命令复制到memcached2服务器

     

在两台memcached服务器上安装配置Keepalived

  • memcached两台服务器的配置不同处已经标注
    # yum install keepalived -y
    # vim /etc/keepalived/keepalived.conf 
    router_id MAGENT_HA               //主从不同 自定义
    下面删除4行
    }
     
    //调用这个脚本每2秒检查一次magent状态
    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 {                       //定义VIP地址
    192.168.100.200
    }
    }
  • 在两台服务器上创建magent.sh脚本便于keepalived调用
  • memcached1服务器
    # mkdir -p /opt/shell/
    # cd /opt/shell/
    # vi 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.100.200 -p 12000 -s 192.168.100.201:11211 -b 192.168.100.202:11211
    else
    pkill -9 magent
    fi
  • 脚本添加执行权限,并开启keepalived服务

    # chmod +x magent.sh
    # systemctl start keepalived.service
    # ip addr    //查看VIP的IP地址
  • 脚本选项解释
    -n 51200 //定义用户最大连接数
    -l    //指定虚拟IP
    -p 12000  //指定端口号
    -s //指定主缓存服务器
    -b //指定从缓存服务器
  • memcached2服务器
    # mkdir -p /opt/shell/
    # cd /opt/shell/
    # vi magent.sh
     
    #!/bin/bash
    K=`ip addr | grep 192.168.100.200 | grep -v grep | wc -l`
    if [ $K -gt 0 ]; then
        magent -u root -n 51200 -l 192.168.100.200 -p 12000 -s 192.168.100.201:11211 -b 192.168.100.202:11211
    else
    pkill -9 magent
    fi
  • 脚本添加执行权限,并开启keepalived服务
    # chmod +x magent.sh
    # systemctl start keepalived.service

     
     

    在客户端上测试

  • 测试主主复制

    我们在客户端上使用Telnet登录VIP地址并写入数据,在两台memcached缓存服务器上可以看到数据都已经同步

  • 测试高可用性

    将memcached1服务器宕机,登录memcached2服务器,查看IP地址,此时VIP已经漂移到memcached2服务器上

转载于:https://blog.51cto.com/13625676/2159997

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值