Memcached是广泛应用的高性能NOSQL内存缓存系统,原生实例不具备高可用能力,单节点故障会导致缓存数据丢失。repcached是Memcached的同步补丁,可实现多节点数据双向复制,解决单点问题。下面详细介绍完整的搭建过程。

环境准备
本次搭建使用两台CentOS 7服务器,分别作为主节点和从节点,节点信息如下:
| 节点角色 | IP地址 | 端口 |
|---|---|---|
| 主节点 | 192.168.0.10 | 11211 |
| 从节点 | 192.168.0.11 | 11211 |
需要提前安装编译依赖工具,执行以下命令:
yum install -y gcc make libevent-devel wget
安装带repcached补丁的Memcached
下载源码包
首先下载Memcached源码和对应的repcached补丁,补丁版本需要和Memcached版本匹配,这里选择Memcached 1.4.33和对应的repcached 2.3.1补丁:
# 下载Memcached源码 wget http://ipipp.com/dist/memcached/memcached-1.4.33.tar.gz # 下载repcached补丁 wget http://ipipp.com/dist/repcached/repcached-2.3.1.patch.gz
打补丁并编译安装
解压Memcached源码后,将repcached补丁打入源码目录,再进行编译安装:
# 解压Memcached源码 tar -zxvf memcached-1.4.33.tar.gz cd memcached-1.4.33 # 解压补丁并打入 gunzip ../repcached-2.3.1.patch.gz patch -p1 < ../repcached-2.3.1.patch # 编译安装,指定安装路径为/usr/local/memcached ./configure --prefix=/usr/local/memcached --enable-replication make && make install
节点配置与启动
主节点配置
主节点需要指定自身为主节点,同时配置从节点的IP和端口用于数据同步,启动命令如下:
/usr/local/memcached/bin/memcached -d -m 64 -p 11211 -u root \ -x 192.168.0.11 -X 11212 -P /tmp/memcached_master.pid
参数说明:
-d:以守护进程方式运行-m 64:分配64MB内存给Memcached使用-p 11211:Memcached服务监听端口-x 192.168.0.11:指定从节点IP-X 11212:指定同步通信端口-P:指定pid文件路径
从节点配置
从节点需要指定自身为从节点,配置主节点的IP和同步端口,启动命令如下:
/usr/local/memcached/bin/memcached -d -m 64 -p 11211 -u root \ -x 192.168.0.10 -X 11212 -P /tmp/memcached_slave.pid
同步功能验证
可以通过telnet工具连接节点,验证数据同步是否正常:
# 连接主节点 telnet 192.168.0.10 11211 # 写入测试数据 set test_key 0 0 5 hello STORED # 退出主节点连接,连接从节点 quit telnet 192.168.0.11 11211 # 查询测试数据 get test_key VALUE test_key 0 5 hello END
如果从节点能查到主节点写入的数据,说明同步功能正常。
常见问题排查
同步端口不通
如果数据无法同步,首先检查两台服务器的11212同步端口是否开放,可通过netstat命令查看端口监听状态:
netstat -tlnp | grep 11212
补丁不生效
若启动后没有同步能力,可查看启动日志,确认编译时是否添加了--enable-replication参数,重新编译安装即可解决。
高可用扩展说明
repcached实现的是双节点双向同步,若需要更多节点组成集群,可结合Keepalived实现VIP漂移,当主节点故障时自动将从节点提升为新的主节点,进一步提升集群的可用性。同时建议定期监控Memcached的内存使用率和服务状态,避免内存溢出导致服务异常。