Memcached+magent实现主从同步 +keepalived高可用群集

Memcached+magent实现主从同步 +keepalived高可用群集

简介

Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。

实验部署

主机名称 IP地址 主要服务软件
memcached主服务器 172.16.10.138 memcached,libevent,magent,keepalived
memcached从服务器 172.16.10.137 memcached,libevent,keepalived
客户端 172.16.10.134 telnet测试
  • 配置memcached主缓存节点服务器
    tar xf libevent-2.1.8-stable.tar.gz -C /opt
    tar xf memcached-1.5.6.tar.gz -C /opt
    tar xf magent-0.5.tar.gz -C /opt

    cd /opt/libevent-2.1.8
    ./configure --prefix=/usr #指定安装路径
    make && make install #编译安装

    cd /opt/memcached-1.5.6
    ./configure --with-libevent=/usr #指定安装路径
    make && make install #编译安装

    ln -s /usr/lib/libevent-2.1.so.6 /usr/lib64/libevent-2.1.so.6 #主服务器上magent服务需要这个模块

    cd /opt/magent
    vim ketama.h

    #ifndef SSIZE_MAX #修改
    #define SSIZE_MAX 32767 #修改
    #endif

    vim Makefile
    LIBS = -levent -lm #修改,添加-lm

    make

    cp mgent /usr/bin #把生成的mgent程序让系统识别

  • 配置memcached从缓存节点服务器

    tar xzvf memcached-1.5.6.tar.gz -C /opt
    tar xzvf libevent-2.1.8-stable.tar.gz -C /opt

    cd /opt/libevent-2.1.8
    ./configure --prefix=/usr
    make && make install

    cd /opt/memcached-1.5.6
    ./configure --with-libevent=/usr
    make && make i nstall

    ln -s /usr/lib/libevent-2.1.so.6 /usr/lib64/libevent-2.1.so.6 #主服务器上magent服务需要这个模块

  • 主服务器将magent文件复制到从服务器

    yum install openssh-clients

    scp magent [email protected]:/usr/bin/ //把产生的magent文件直接复制到从服务器。

  • 主服务器安装keepalived服务,修改配置文件

    yum -y install keepalived

    vim /etc/keepalived/keepalived.conf

    router_id MAGENT_HA                                #router_id主从不能相同,要修改

    vrrp_script magent {
    script "/opt/shell/magent.sh"
    interval 2
    } #定义一个新函数,每2s自动执行这个脚本

    vrrp_instance VI_1 {
    state MASTER #这边是主服务器,从服务器是BACKUP
    interface ens33 #网卡接口是ens33
    virtual_router_id 51
    priority 100 #优先级,从服务器小于主服务器
    advert_int 1
    authentication {
    auth_type PASS
    auth_pass 1111
    }

    track_script {
    magent #出发执行magent脚本
    }

    virtual_ipaddress {
    172.16.10.200 #虚拟IP(vip)
    }
    }

        将下面多余的配置全部删除
  • 主服务器安装keepalived服务,修改配置文件

    yum -y install keepalived

    vim /etc/keepalived/keepalived.conf

    router_id MAGENT_HB                                #router_id主从不相同

    vrrp_script magent {
    script "/opt/shell/magent.sh"
    interval 2
    } #定义一个新函数,每2s自动执行这个脚本

    vrrp_instance VI_1 {
    state MASTER #这边是从服务器,是BACKUP
    interface ens33 #网卡接口是ens33
    virtual_router_id 51
    priority 90 #优先级,从服务器小于主服务器
    advert_int 1
    authentication {
    auth_type PASS
    auth_pass 1111
    }

    track_script {
    magent #出发执行magent脚本
    }

    virtual_ipaddress {
    172.16.10.200 #虚拟IP(vip)
    }
    }
    将下面多余的配置全部删除

  • 主服务器编写magnet脚本

    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.58.100 -p 12000 -s 192.168.58.135:11211 -b 192.168.58.132:11211
    else
    pkill -9 magent
    fi

    -n 51200 #定义用户最大连接数
    -l 192.168.58.100 #指定虚拟IP
    -p 12000 #指定端口号
    -s #指定主缓存服务器
    -b #指定从缓存服务器

    #这个脚本意思就是一旦检测到系统进程中有keepalived进程,就执行magent这条命令,如果没有,则将magent进程杀死。总得来说就是,主服务器上没有keepslived进程,magent就会和从服务器连接。

        chmod +x /opt/shell/magent.sh 

    #给脚本添加执行权限

  • 从服务器编写magent脚本

    mkdir -p /opt/shell
    vim /opt/shell/magent.sh

    #!/bin/bash
    K=ip addr | grep 192.168.58.100 | grep -v grep | wc -l
    if [ $K -gt 0 ]; then
    magent -u root -n 51200 -l 192.168.58.100 -p 12000 -s 192.168.58.135:11211 -b 192.168.58.132:11211
    else
    pkill -9 magent
    fi
    #从服务器的脚本意思就是检测到虚拟ip漂移是否到自己身上,如果VIP进行漂移到从服务器之后,就会执行magent这条命令,目的就是在主服务器宕掉的时候,从服务器能够正常启动。

  • 实验验证

首先使用客户机安装telnet,远程连接VIP节点,写入用户之后,主从缓存服务器会自动获取下载该用户。

Memcached+magent实现主从同步 +keepalived高可用群集

Memcached+magent实现主从同步 +keepalived高可用群集

Memcached+magent实现主从同步 +keepalived高可用群集

Memcached+magent实现主从同步 +keepalived高可用群集

Memcached+magent实现主从同步 +keepalived高可用群集

猜你喜欢

转载自blog.51cto.com/13659301/2153315