2012-04-05 3 views
2

Я использую libmemcached в «c» для записи данных с использованием MEMCACHED_DISTRIBUTION_CONSISTENT_KETAMA. Все ключи хорошо распределены по всем узлам кластеров, но когда я выключаю один из них, ключи не переносятся. Поиск в google не ясен, как настроить libmemcached для выполнения этого автоматически. У кого-то есть опыт?libmemcached fail over узла кластера

+0

Когда вы говорите, что вы мигрировали, вы имеете в виду, что какие-либо новые «наборы» на ключе выходят из строя? – keety

+0

Да, новый набор ключа, который был на узле выключения, не настроен на новый сервер. –

ответ

1

Я думаю, что вы должны будете использовать: http://docs.libmemcached.org/memcached_behavior.html#MEMCACHED_BEHAVIOR_REMOVE_FAILED_SERVERS

Если вы не позволяете libmemcached удалить неудачные серверы, они застревают в списке, следовательно, ключи не перераспределяются.

Обратите внимание, что мертвый сервер будет проверен снова после MEMCACHED_BEHAVIOR_DEAD_TIMEOUT (см. 1, 2) секунд. Поэтому, если он снова появится, он будет возвращен в список полных серверов.

0

Libmemcached не выполняет внутреннюю обработку миграции ключей в случае отказа сервера memcached. В этом случае будет пропущен кеш, когда libmemcached попытается извлечь ключ, который был сохранен на неудавшемся сервере.

Если мы используем MEMCACHED_DISTRIBUTION_CONSISTENT_KETAMA, он просто убедится, что пропущенный кеш минимален по мере того, как ключи распределены, и полная перезагрузка не требуется.

Решения: Вы можете реплицировать ключи через несколько узлов, что поможет вам получить пару (ключ, значение) в случае сбоя сервера. Но обратите внимание, что это не очень последовательное решение. Существует возможность для устаревших данных.

EVICT серверы, которые потерпели неудачу, так что ключи хэшируются в новое место и удаляются из кластера.

 Смежные вопросы

  • Нет связанных вопросов^_^