群集节点的 libmemcached 故障转移

libmemcached fail over of a cluster's node

本文关键字:故障 转移 libmemcached 节点 群集      更新时间:2023-10-16

我使用"c"中的libmemcached来写入MEMCACHED_DISTRIBUTION_CONSITENT_KETAMA使用的数据。所有的密钥都很好地分布在所有集群节点上,但当我关闭其中一个集群节点时,密钥不会被迁移。在谷歌上搜索还不清楚如何设置libmemcached来自动做到这一点。有人在这方面有经验吗?

我认为您必须使用:http://docs.libmemcached.org/memcached_behavior.html#MEMCACHED_BEHAVIOR_REMOVE_FAILED_SERVERS

如果不允许libmemcached删除失败的服务器,它们就会被困在列表中,因此不会重新分发密钥。

请注意,在MEMCACHED_BEHAVIOR_dead_TIMEOUT(请参阅1,2)秒之后,将再次测试失效服务器。因此,如果它再次出现,它将被带回完整服务器的列表中。

Libmemcached在memcached服务器出现故障时不会在内部处理密钥迁移。在这种情况下,当libmemcached尝试检索存储在故障服务器中的密钥时,将出现缓存丢失。

如果我们使用MEMCACHED_DISTRIBUTION_CONSISTENT_KETAMA,它只会确保缓存未命中率最低,因为密钥是分布式的,不需要完全重新哈希。

解决方案:您可以跨多个节点复制密钥,这将有助于在服务器出现故障时检索(密钥,值)对。但请注意,这不是一个非常一致的解决方案。存在陈旧数据的可能性。

EVICT已发生故障的服务器,因此密钥被散列到新位置,并从集群中删除。