Memcached主主复制+Keepalived高可用群集

Memcached 主主案例 :

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

实验环境 :

主机 IP地址 操作系统 主要软件包
Memcached 1 192.18.217.128 CentOS 7.3 x86_64 memcached libevent magent
Memcached 2 192.18.217.129 CentOS 7.3 x86_64 memcached libevent
客户端 192.18.217.130 CentOS 7.3 x86_64 Telnet

案例实施 :

在两台服务器上安装 :

systemctl stop firewalld.service
setenforce 0

tar xf memcached-1.5.6.tar.gz -C /opt/        #缓存服务

tar xf 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    #指定工作目录

make && make install  

cd /opt/memcached-1.5.6

./configure \
--with-libevent=/usr      #指定libevent的安装路径

make && make install

ln -s /usr/local/memcached/bin/* /usr/local/bin/  #让系统识别命令

memcached -d -m 32m -p 11211 -u root    #启动 memcached

netstat -anpt | grep 11211  #查看 memcached 端口

yum install telnet -y

[root@localhost memcached-1.5.6]# telnet 127.0.0.1 11211   #进入缓存数据库
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.

在主缓存服务器配置 :

mkdir /opt/magent
tar zxvf magent-0.5.tar.gz -C /opt/magent/
ketama.c
magent.c
ketama.h
Makefile

cd /opt/magent/
vim ketama.h    #编辑配置文件

#ifndef SSIZE_MAX
#define SSIZE_MAX 32767
#endif

vim Makefile   
LIBS = -levent -lm

make   #生成的mgent程序让系统识别

cp magent /usr/bin/  #将magent可执行文件加入usr可执行命令中 

scp magent [email protected]:/usr/bin/   #发送到从缓存服务器上

在主缓存服务器配置 :

1.配置 keepalived :

yum install keepalived -y          #两台服务器安装 keepalived 

vim /etc/keepalived/keepalived.conf 

! Configuration File for keepalived

vrrp_script magent {               #添加脚本路径
        script "/opt/shell/magent.sh"
        interval 2
......
   router_id 0001     #删除以下4行              
}

vrrp_instance VI_1 {
    state MASTER
    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.217.100     #虚拟IP
    }
}
以下内容可以删除

2.编写 magent 脚本 :

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.217.100 -p 12000 -s 192.168.217.128:11211 -b 192.168.217.129:11211
else
pkill -9 magent
fi

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

chmod +x magent.sh        #添加执行权限
systemctl start keepalived.service
netstat -antp | grep magent   #查看12000端口是否开启  

配置从缓存服务器 :

1.配置从缓存服务器 keepalived :

yum install keepalived -y        

vim /etc/keepalived/keepalived.conf
......
    priority 90             #修改优先级 辨别活跃和备份  其它一样
    ......

2.编写从缓存服务器 magent 脚本 :

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.217.100 -p 12000 -s 192.168.217.128:11211 -b 192.168.217.129:11211
else
pkill -9 magent
fi

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

chmod +x magent.sh        #添加执行权限
systemctl start keepalived.service
netstat -antp | grep magent   #查看12000端口是否开启 

客户端测试 :

1.数据测试 ,添加数据。在主从缓存服务查看是否有 :

yum install telnet -y
telnet 192.168.217.100 12000   #进入缓存数据库
Trying 192.168.217.100...
Connected to 192.168.217.100.
Escape character is '^]'.
add username 0 0 7  #添加键值数据
1234567
STORED

2.故障测试 :

退出缓存数据库,把活跃 keepalived 关闭 ,在进入数据库 ,实现故障切换 。

猜你喜欢

转载自blog.51cto.com/13640803/2151608