通常我们通过memcached 缓存业务数据减轻数据库的压力实现系统的高性能,但是,在高并发的情况下如果memcached不可用的话,相应的请求都会压到后端的数据库上。大量的请求压到数据库上,使数据库响应变慢,导致服务阻塞,最终可能产生雪崩效应导致整个系统不可用,如何防止这样的问题?搭建高可用的memcached集群是防止此问题的一个途径。
下面描述了如和通过使用memcached replication 版本以及keepalived 实现高可用集群
软件准备
1:install memcached replication 版本
wget http://sourceforge.net/projects/repcached/files/latest/download?source=files
./configure --enable-replication && make && make install
2:install keepalived
软件配置
通过keepalived 向客户端提供VIP地址、实现Failover。
keepalived 配置如下:
【backup】
vrrp_instance VI_MEM_USER {
virtual_router_id 51
track_interface {
eth0
}
priority 100
advert_int 1
interface eth0
virtual_ipaddress {
192.168.56.200/24
}
}
【master】
vrrp_instance VI_MEM_USER {
virtual_router_id 51
track_interface {
eth0
}
priority 150
nopreempt
advert_int 1
interface eth0
virtual_ipaddress {
192.168.56.200/24
}
}
【注意】
通过在master上配置 非抢占nopreempt 防止 master --backup 之间的频繁切换。master,backup同过priority区分,在此可以不配 state。
使用
1:启动 memcahed ,memcached -vv -x ip1 -d ; memcached -vv -x ip2 -d, 实现双向复制
2 : 客户端可以通过VIP 192.168.56.200 来访问 集群
缺点
集群中只可以有两个memcached实例