Memcached主主复制+Keepalived高可用群集
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
[[email protected] 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 关闭 ,在进入数据库 ,实现故障切换 。
以上是关于Memcached主主复制+Keepalived高可用群集的主要内容,如果未能解决你的问题,请参考以下文章
Linux-Memcached主主复制+Keepalived高可用
领会Memcached高可用群集(Memcached主主复制+Keepalived)
Memcached高可用群集(Memcached主主复制+Keepalived)