由于redis集群仍在进行中,我想在当前阶段自己构建一个简单的集群 . 系统应支持数据分片,负载 balancer 和主从备份 . 初步计划如下:
-
主从:在不同位置使用多个主从对,以增强数据安全性 . Matsters负责写操作,而主设备和从设备都可以提供读取服务 . 在一次写操作期间,数据被发送到所有主设备 . 在主站和从站之间使用Keepalived来检测故障并自动切换主从站 .
-
数据分片:在客户端写入一致的哈希,以便在写入/读取期间支持数据分片,以防单个机器中的内存不存在 .
-
负载 balancer :使用LVS将读取请求重定向到相应的服务器以实现负载 balancer .
我的问题是如何将LVS和数据分片结合在一起?
例如,由于数据分片,所有密钥都被分割并存储在服务器A,B和C中而没有重叠 . 考虑到从备份和其他主从对,系统将包含1(A,B,C),2(A,B,C),3(A,B,C)等,其中每个有三个服务器 . 如何在读取请求到来时配置LVS以支持重定向?或者,在redis中还有其他方法可以实现相同的目标吗?
谢谢:)
1 回答
您可以使用以下内容非常接近您所需要的:
twemproxy跨多个redis节点的分片数据(它还支持节点弹出和连接池)
redis slave主/从复制
redis sentinel来处理主故障转移
根据您的需要,您可能需要一些脚本来监听故障转移(请参阅sentinel docs)并在主设备发生故障时清理