标签:block keepaliv 4行 make 使用 start net install address
Memcached +keepalived 高可用集群Memcached 主主复制这种架构,在程序连接时不知道应该连接哪个主服务器,所以需要在前端增加 VIP 地址,实现高可用架构。这里用 Keepalived 实现,因而 Keepalived 的作用就是用来检测 Memcached 服务器的状态是否正常。
Keepalived 不断检测 Memcached 主服务器的11211端口,如果检测到 Memcached 服务发生宕机或者死机等情况,就会将 VIP 从主服务器移至从服务器,从而实现 Memcached 的高可用性。
主机名 | 操作系统 | IP地址 | 软件包 | VIP地址 |
---|---|---|---|---|
Memcached1服务器 | CentOS 7.4 x86_64 | 192.168.100.201 | libevent-2.1.8-stable.tar.gz、memcached-1.5.9.tar.gz、magent-0.5.tar.gz、keepalived | 192.168.100.200 |
Memcached2服务器 | CentOS 7.4 x86_64 | 192.168.100.202 | libevent-2.1.8-stable.tar.gz、memcached-1.5.9.tar.gz、keepalived | 192.168.100.200 |
Client客户端 | CentOS 7.4 x86_64 | 192.168.100.203 | Telnet |
# tar zxvf memcached-1.5.6.tar.gz -C /opt/
# 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/local/libevent
# make && make install
# cd /opt/memcached-1.5.6
# ./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent/
# make && make install
# ln -s /usr/local/memcached/bin/* /usr/local/bin/
将安装的libevent-2.1.so.6模块建立软链接到/usr/lib64目录下,否则在启动Magent时会出错
# ln -s /usr/local/libevent/lib/libevent-2.1.so.6 /usr/lib64/libevent-2.1.so.6
Magent 是一款开源的 Memcached 代理软件,使用它可以搭建高可用性的集群应用的 Memcached 服务 ,备份 Memcached 数据,尽管 Memcached 服务挂掉,前端也能获取到数据,客户端先连到 Magent 代理服务器 ,然后Magent 代理服务器 在可以连接多台 Memcached 服务器,然后可以进行数据的保存和备份数据。这样数据就不会丢失,保存了数据完整性。
# wget http://memagent.googlecode.com/files/magent-0.5.tar.gz
# 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
# vim Makefile //添加路径
LIBS = -levent -lm -L/usr/local/libevent/lib
INCLUDE=-I/usr/local/libevent/include
# make
# cp magent /usr/bin/ //把生成的magent命令让系统识别
# scp /opt/magent/magent root@192.168.100.202:/usr/bin //把生成的magent命令复制到memcached2服务器
# yum install keepalived -y
# vim /etc/keepalived/keepalived.conf
router_id MAGENT_HA //主从不同 自定义
下面删除4行
}
//调用这个脚本每2秒检查一次magent状态
vrrp_script magent {
script "/opt/shell/magent.sh"
interval 2
}
vrrp_instance VI_1 {
state MASTER // 另一台服务器这里是BACKUP
interface ens33
virtual_router_id 51 //虚拟路由ID ,两台相同
priority 100 //优先级 从要小于主
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script { //调用上面定义的脚本
magent
}
virtual_ipaddress { //定义VIP地址
192.168.100.200
}
}
# mkdir -p /opt/shell/
# cd /opt/shell/
# vi 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.100.200 -p 12000 -s 192.168.100.201:11211 -b 192.168.100.202:11211
else
pkill -9 magent
fi
脚本添加执行权限,并开启keepalived服务
# chmod +x magent.sh
# systemctl start keepalived.service
# ip addr //查看VIP的IP地址
-n 51200 //定义用户最大连接数
-l //指定虚拟IP
-p 12000 //指定端口号
-s //指定主缓存服务器
-b //指定从缓存服务器
# mkdir -p /opt/shell/
# cd /opt/shell/
# vi magent.sh
#!/bin/bash
K=`ip addr | grep 192.168.100.200 | grep -v grep | wc -l`
if [ $K -gt 0 ]; then
magent -u root -n 51200 -l 192.168.100.200 -p 12000 -s 192.168.100.201:11211 -b 192.168.100.202:11211
else
pkill -9 magent
fi
# chmod +x magent.sh
# systemctl start keepalived.service
我们在客户端上使用Telnet登录VIP地址并写入数据,在两台memcached缓存服务器上可以看到数据都已经同步
将memcached1服务器宕机,登录memcached2服务器,查看IP地址,此时VIP已经漂移到memcached2服务器上
Memcached 主主复制+ Keepalived 实现 Memcached 高可用架构集群
标签:block keepaliv 4行 make 使用 start net install address
原文地址:http://blog.51cto.com/13625676/2159997