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

栏目: 数据库 · Memcache · 发布时间: 5年前

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

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 root@192.168.217.129:/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 关闭 ,在进入数据库 ,实现故障切换 。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

一路编程

一路编程

史蒂夫·富特 (Steven Foote) / 佟达 / 电子工业出版社 / 2017-1-1 / CNY 65.00

《一路编程》是一本编程入门书籍,然而,如果以书中所讲内容作为入门标准,估计十有八九的在职程序员都不能算已入门。现代软件开发,已经不仅仅是写出正确的代码这么简单,环境、依赖、构建、版本、测试及文档,每一项都对软件是否成功交付起到至关重要的作用,这些都是每一个程序员在开发软件过程中必备的技能。《一路编程》对于上述的每一种技能都做了简洁而精练的介绍,以满足最基本的日常软件开发。换句话说,《一路编程》实际......一起来看看 《一路编程》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换