memcache高集群搭建----主从同步实验

一、环境部署

centos7 主服务器 IP地址:20.0.0.15 memcached,libevent,keepalived,magent
centos7 从服务器 IP地址:20.0.0.16 memcached,libevent,keepalived
centos7 客户端 IP地址:20.0.0.17
漂移IP地址:20.0.0.200,是客户端登陆的IP地址
关闭防火墙、关闭核心防护。

【试验目的】
通过搭建memcache高可用群集,实现主从同步,群集高可用功能

【magent概述】
Magent是一款开源的Memcached代理服务器软件,采用的是:Consistent Hashing原理,可以通过它来实现缓存数据的同步

二、主从服务器搭建

2.1 修改主机名

主:
hostnamectl set-hostname master
su

从:
hostnamectl set-hostname slave
su

2.2 上传软件包并解压

yum -y install gcc gcc-c++ make
cd /opt
tar zxvf libevent-2.1.8-stable.tar.gz
//解压事件库
tar zxvf memcached-1.5.6.tar.gz
//解压源码包

mkdir /opt/magent
tar zxvf magent-0.5.tar.gz -C /opt/magent/

cd libevent-2.1.8-stable/
./configure --prefix=/usr
//指定libevent目录
make && make install

cd …/memcached-1.5.6/
./configure --with-libevent=/usr
make && make install

2.3 主服务器上安装magent代理

cd /opt/magent
vim ketama.h

#ifndef SSIZE_MAX
#define SSIZE_MAX 32767
//前两行修改如上

vim Makefile
LIBS = -levent -lm
//首行后面添加-lm

make
//编译后会产生一个magent可执行程序

yum -y install openssh-clients
cp magent /usr/bin/
//将magent可执行程序复制到/usr/bin中
scp magent root@20.0.0.16:/usr/bin
//将magent可执行程序复制到从服务器的/usr/bin中
//此命令需要输入yes,输入从服务器的密码才能将文件拷贝过去,根据提示操作即可

2.4 主从服务器搭建keepalived

[root@master ~]# yum install keepalived -y
//主从服务器都要安装keepalived

2.5 主服务器中keepalived.conf配置文件修改

vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
vrrp_script magent {
script “/opt/shell/magent.sh”
interval 2
}

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
}

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 {
20.0.0.200
}
}

#############################################################
解释:
! Configuration File for keepalived
//此段落为:定义一个函数脚本,稍后我们需要创建它
vrrp_script magent {
script “/opt/shell/magent.sh”
interval 2
}
//全局配置
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 //router_id自定义,不可与从服务器相同
}
//实例区域
vrrp_instance VI_1 {
state MASTER //主服务器为MASTER,从服务器要改为BACKUP
interface ens33 //网卡改为本机网卡ens33
virtual_router_id 51 //主从不可相同,从服务器需要修改
priority 100 //优先级要高于从服务器
advert_int 1

authentication {
    auth_type PASS
    auth_pass 1111
}
    track_script {	//此三行为调用函数的段落,配置文件开头已经添加了函数,此处需要调用
            magent
}
virtual_ipaddress {
    20.0.0.200	//定义漂移地址
}

}
#############################################################

2.6 从服务器中keepalived.conf配置文件修改

cd /etc/keepalived/
mv keepalived.conf keepalived.conf.bak
yum -y install openssh-clients

//回到主服务器,将配置文件复制到从服务器
[root@master ~]# scp /etc/keepalived/keepalived.conf root@20.0.0.16:/etc/keepalived

[root@slave keepalived]# vim keepalived.conf
//其他配置都相同,只需要修改如下几个配置
router_id MAGENT_HB //id名和第一台要不一样,从服务器改为MAGENT_HB
state BACKUP //从服务器为BACKUP
virtual_router_id 52 //id号和第一台不一样即可
priority 90 //优先级低与主服务器

2.7 在主从服务器创建magent脚本

mkdir /opt/shell
cd /opt/shell/
vim 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 20.0.0.200 -p 12000 -s 20.0.0.15:11211 -b 20.0.0.16:11211
else
pkill -9 magent
fi

#######################解释################################
-n 51200 //定义用户最大连接数
-l 20.0.0.200 //指定虚拟IP
-p 12000 //指定端口号
-s //指定主缓存服务器20.0.0.15:11211
-b //指定从缓存服务器20.0.0.16:11211
11211 //端口号
###########################################################

2.8 主从服务器启动服务

chmod +x magent.sh
systemctl start keepalived
netstat -ntap |grep 12000

tcp 0 0 20.0.0.200:12000 0.0.0.0:* LISTEN 60150/magent

2.9 验证主从

[root@master shell]# vim /var/log/messages
搜索Transition to MASTER STATE,有即成功

[root@master shell]# ip addr
//查看漂移地址是否绑定成功

。。。。。。。。。。。。。。。。。。。。
inet 20.0.0.200/32 scope global ens33 //绑定成功
。。。。。。。。。。。。。。。。。。。。
[root@slave keepalived]# vim /var/log/messages
搜索Entering BACKUP STATE,有即成功

[root@slave keepalived]# ip addr
//查看漂移地址是否绑定成功

。。。。。。。。。。。。。。。。。。。。。
inet 20.0.0.200/32 scope global ens33 //绑定成功
。。。。。。。。。。。。。。。。。。。。。

2.10 主从服务器开启memcache并测试本地连接

2.10.1 主从服务器开启memcache

[root@master ~]# memcached -m 512k -u root -d -l 20.0.0.15 -p 11211
[root@master ~]# netstat -ntap |grep 11211

tcp 0 0 20.0.0.15:11211 0.0.0.0:* LISTEN 61111/memcached

2.10.2 从服务器开启memcache

[root@slave keepalived]# memcached -m 512k -u root -d -l 20.0.0.16 -p 11211
[root@slave keepalived]# netstat -ntap |grep 11211

2.11 测试本地能否连接memcache

2.11.1 主服务器测试

yum install telnet -y
telnet 20.0.0.15 11211

2.11.2 从服务器测试

yum install telnet -y
telnet 20.0.0.16 11211

三、客户端测试

3.1 修改主机名

hostnamectl set-hostname client
su

3.2 客户端登陆memcache

yum install telnet -y
telnet 20.0.0.200 12000
//使用漂移地址登陆

3.3 测试主从同步

[root@client ~]# telnet 20.0.0.200 12000
add username 0 0 5
//客户端连接并新建一个数据

12345
STORED

//返回主服务器查看是否同步生成数据
telnet 20.0.0.15 11211
get username

VALUE username 0 5
12345
//主服务器成功生成
END

//返回从服务器查看是否同步生成数据
telnet 20.0.0.16 11211
get username

VALUE username 0 5
12345
//从服务器成功生成
END
//测试成功,主从都成功生成数据

3.4 测试高可用群集

//宕机主服务器,看从服务器是否正常使用
[root@master ~]# systemctl stop keepalived
//关闭主服务器keepalived服务
[root@client ~]# telnet 20.0.0.200 12000
//客户端登陆成功

set username 0 0 4 //修改一下数据
1234

STORED

//从服务器查看数据是否同步
get username

VALUE username 0 4
1234
//成功同步
END

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值