Memcached主从复制+keepalived架构

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

Memcached主从复制是指在主Mencached服务器上修改数据都会被同步到其余服务器上,MemcachedAPI客户端是没法判断链接到那一台Memcached服务器,因此须要VIP地址,提供给MemcachedAPI客户端进行链接。能够使用keepaived产生的VIP地址链接主Memcached服务器来完成,而且提供高可用架构。linux

环境准备
服务器 IP地址的 主要软件
主Memcached 192.168.100.21 libevent、memcached、magent、keepalived
从Memcached 192.168.100.22 libevent、memcached、magent
Client 192.168.100.23 telnet

安装环境包c++

yum -y install gcc gcc-c++ make

解压软件包shell

tar zxf memcached-1.5.9.tar.gz -C /opt/
tar zxf libevent-2.1.8-stable.tar.gz -C /opt/

编译安装libeventvim

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

编译安装memcached缓存

cd memcached-1.5.9/
./configure --with-libevent=/usr
make && make install
优化启动
ln -s /usr/lib/libevent-2.1.so.6 /usr/lib64/libevent-2.1.so.6
//memcached自带有复制功能,若是不创建软链接,则启动会失败

在主服务器上安装magentbash

magent是一个memcached代理软件,防止单点故障,缓存代理也能够着备份服务器

cd /opt/magent
vim ketama.h                                    //修改文件
#ifndef SSIZE_MAX                         //修改
#define SSIZE_MAX 32767            //修改
#endif                                              //末行也有一行#ndif,删除
vi Makefile                                     //修改文件
LIBS = -levent -lm                         //此处为lm,不是一
make                                            //编译完成以后会生成一个magent可执行文件

让服务便于系统识别架构

cp /opt/magent/magent /usr/bin/
scp /opt/magent/magent root@192.168.100.22:/usr/bin/     //发送到从服务器上
主从服务器安装keepalived
yum -y install keepalived

修改主从服务器配置文件ide

vim/etc/keepalived/keepalived.cof
! Configuration File for keepalived

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id MAGENT_HA  //自定义不要和从服务器同样就OK
}
vrrp_script magent {
        script "/opt/shell/magent.sh" //定义一个函数,此时该脚本还未建立,要在实例外面定义
        interval 2                
}   
vrrp_instance VI_1 {
    state MASTER     //MASTER (主)BACKUP(从)
    interface ens33 //网卡
    virtual_router_id 51 //组号
    priority 100       //优先级
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
 track_script {
         magent   //应用函数
}       
    virtual_ipaddress {
        192.168.100.100   #虚拟出来了VIP
    }
}

写主服务器shell脚本memcached

#!/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.100 -p 12000 -s 192.186.100.21:11211 -b 192.168.100.22:11211
else
pkill -9 magent
fi
##参数解释
-n 51200                                   #定义用户最大链接数
-l 192.168.175.188                    #指定虚拟IP
-p 12000                                 #指定端口号
-s                                             #指定主缓存服务器
-b                                           #指定从缓存服务器
chmod +x magent.sh            #增长可执行权限

写从服务器脚本

make /opt/shell
vim magent.sh

#!/bin/bash
K=`ip addr | grep 192.168.100.100 | grep -v grep | wc -l`
if [ $K -gt 0 ]; then
        magent -u root -n 51200 -l 192.168.100.100  -p 12000 -s 192.168.100.21:11211 -b 192.168.100.22:11211
else
pkill -9 magent
fi
chmod +x magent.sh            //增长可执行权限

关闭主从服务器防火墙及selinux

systemctl stop firewalld.service
setenforce 0

开启主从服务器上keepalived

systemctl start keepalived.service
netstat -ntap | grep 12000        //端口开启可能有点延迟,稍做等待
ipa ddr                           //查看主服务器上是否绑定VIP

Memcached主从复制+keepalived架构
Memcached主从复制+keepalived架构
主从服务器上开启memcached

memcached -m 512k -u root -d -l 192.168.100.21 -p 11211    //主服务器
memcached -m 512k -u root -d -l 192.168.100.22 -p 11211    //从服务器
netstat -ntap | grep 11211

客户端测试

测试连通性
yum -y install telnet
telnet 192.168.100.100 12000   //采用VIP链接

Memcached主从复制+keepalived架构

测试单点故障

systemctl stop keepalived.service  //关闭主服务器keepalived服务
ipaddr   //查看VIP是否漂移到从服务器上

Memcached主从复制+keepalived架构

相关文章
相关标签/搜索