memcached集群分析
- 由于memcached在实现分布式集群部署时,memcached服务之间是不能进行通讯的,分布式也是通过客户端的算法,把数据保存在不同的memcached中,所以当昨晚群集客户端往里面写入数据时,会出现客户端往一个memcached节点写入数据后,另外两个节点是查询不到的
- 因此,我们使用magent开源软件来对memcached服务器之间进行缓存数据同步
- magent工作原理是magent可以备份数据,而且magent可以同时连接多个memcached节点,当memcached重启或者宕机恢复后可以从magent指定的memcached的备份节点中恢复丢失的缓存数据
实验环境:
角色 | IP地址 | 系统 | 软件包 |
主服务 | 192.168.179.237 | centos7 | libevent-2.1.8-stable.tar.gz memcached-1.5.6.tar.gz keepalived-1.3.5-16.el7.x86_64 magent-0.5.tar.gz |
从服务 | 192.168.179.236 | centos7 | libevent-2.1.8-stable.tar.gz memcached-1.5.6.tar.gz keepalived-1.3.5-16.el7.x86_64 magent-0.5.tar.gz |
客户端 | 192.168.179.234 | centos7 |
主服务器配置安装libevent
tar zxvf libevent-2.1.8-stable.tar.gz -C /opt/
//安装环境依赖包
yum install gcc gcc-c++ make -y
//配置安装libevent
cd /opt/libevent-2.1.8-stable/
./configure --prefix=/usr/
make && make install
主服务器配置安装memcached
tar zxvf memcached-1.5.6.tar.gz -C /opt/
//配置安装memcached
cd /opt/memcached-1.5.6
./configure --with-libevent=/usr/
主服务器配置安装magent插件
//创建magent插件目录
mkdir /opt/magent
//解压缩包
tar zxvf magent-0.5.tar.gz -C /opt/magent/
cd /opt/magent
vim ketama.h
#ifndef SSIZE_MAX
#define SSIZE_MAX 32767
#endif
删除末尾#endif
vim Makefile
/第一行 LIBS = -levent -lm
//配置安装
make
//复制脚本文件到系统识别的目录中
cp magent /usr/bin/
主服务器配置安装keepalived服务
//安装keepalived服务
yum install keepalived -y
vim /etc/keepalived/keepalived.conf
- 修改主配置文件
! Configuration File for keepalived
vrrp_script magent {
script "/opt/shell/magent.sh"
interval 2
}
global_defs {
notification_email {
[email protected]
[email protected]
[email protected]
}
notification_email_from [email protected]
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 {
192.168.179.188
}
}
从服务器配置安装libevent
tar zxvf 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
从服务器配置安装memcached
tar zxvf memcached-1.5.6.tar.gz -C /opt/
cd /opt/memcached-1.5.6
./configure --with-libevent=/usr/
make && make install
从服务器配置安装keepalived
yum install keepalived -y
//将主配置文件修改别名
mv keepalived.conf keepalived.conf.bk
- //主服务器推送keepalived配置文件到从服务器中
scp keepalived.conf [email protected]:/etc/keepalived/
- 主服务器创建脚本文件
//主服务创建执行脚本
mkdir /opt/shell
cd /opt/shell
vim magent.sh
//注意:IP地址
#!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.179.188 -p 12000 -s 192.168.179.221:11211 -b 192.168.179.132:11211
else
pkill -9 magent
fi
chmod +x magent.sh
systemctl start keepalived.service
netstat -ntap | grep 12000 //验证服务是否启动
- 从服务器中创建脚本文件
//从服务器创建脚本
mkdir /opt/shell/
vim magent.sh
#!/bin/bash
K=`ip addr | grep 192.168.179.188 | grep -v grep | wc -l`
if [ $K -gt 0 ];then
magent -u root -n 51200 -l 192.168.179.188 -p 12000 -s 192.168.179.237:11211 -b 192.168.179.236:11211
else
pkill -9 magent
fi
chmod +x magent.sh
systemctl start keepalived.service
//验证从服务器12000服务是否启动
netstat -ntap | grep 12000
- 提供主服务器服务
memcached -m 512k -u root -d -l 192.168.179.237 -p 11211 //主服务器
- 是否开启主服务
netstat -ntap | grep 11211
- 提供从服务器服务
memcached -m 512k -u root -d -l 192.168.179.236 -p 11211 //从服务器
- 验证从服务是否开启服务
netstat -ntap | grep 11211
客户端测试
//客户端测试是否可以登录漂移地址,进入服务
yum install telnet -y
telnet 192.168.179.188 12000
- 验证主从同步,客户端登录服务器,添加内容,查看从服务器是否被写入
//添加内容
add username 0 0 7
1234567
//查看内容是否被写入
get username
- 登录主服务器查看内容:
yum install telnet -y
telnet 192.168.179.237 11211
get username
- 登录从服务器查看内容:
yum install telnet -y
telnet 192.168.179.236 11211
get username
- 断开主服务器的keepalived服务,验证是否还可以登录服务
- 客户端是否可以登录服务器
- 是否可以添加内容,并且在从服务器查看到
- 从服务器查看新的内容