2016-10-18 4 views
2

Я обеспокоен этой нотой в документации Riak по:Принуждение Riak для хранения данных на различных физических серверах

N = 3 просто означает, что три копии каждой части данных будут храниться в кластере. То есть три разных раздела/vnodes получат копии данных. Нет гарантий, что три реплики будут направлены на три отдельных физических узла; однако встроенные функции для определения того, где реплики идут, пытаются равномерно распределить данные.

https://docs.basho.com/riak/kv/2.1.3/learn/concepts/replication/#so-what-does-n-3-really-mean

У меня есть кластер из 6 физических серверов с N = 3. Я хочу быть на 100% уверенным, что полная потеря некоторых узлов (1 или 2) не потеряет никаких данных. Насколько я понимаю выше, Риак не может этого гарантировать. Похоже, что есть некоторые (правда, низкие) части моих данных, которые могут содержать все 3 копии на одном физическом сервере .

На практике это означает, что для достаточно большого набора данных я гарантированно полностью потеряю записи, если у меня есть катастрофический сбой на одном узле (гремлины едят/дегазируют диск или что-то в этом роде).

Есть ли конфигурация Riak, которая позволяет избежать этой проблемы?

Несчастная путающая реальность: я нахожусь на старой версии Riak (1.4.12).

+1

Riak пытается предупредить вас, если он не определился с тем, как разместить всех префлоистов на 3 физических машинах. Когда вы запускаете «план кластера riak-admin» после добавления всех ваших узлов, вы получите «ВНИМАНИЕ: не все реплики будут на разных узлах», на одном узле будет 2 копии. – Joe

ответ

1

Нет никакой конфигурации, позволяющей избежать незначительной возможности того, что раздел может иметь 2 или более копий на одном физическом узле (хотя наличие 5+ узлов в вашем кластере делает крайне маловероятным, чтобы один узел имел более двух копий раздел). С вашим 6-узловым кластером крайне маловероятно, что у вас будет 3 копии раздела на одном физическом узле.

Инструмент командной строки riak-admin может помочь вам изучить ваши разделы/vnodes. Запуск riak-admin vnode-status (http://docs.basho.com/riak/kv/2.1.4/using/admin/riak-admin/#vnode-status) на каждом узле, например, выдаст статус всех vnodes, которые выполняются на локальном узле, на котором запущена команда. Если вы запустите его на каждом узле вашего кластера, вы подтверждаете, что ваши данные распределены удовлетворительным образом.

+0

Спасибо за ответ. Я надеюсь, что вы можете немного рассказать о том, как я могу использовать вывод статуса vnode, чтобы успокоить мой разум. Я думаю, что мне не хватает шага в рассуждениях. То, что я вижу из состояния vnode, - это какие vnodes живут на каком физическом экземпляре, а также некоторые сведения о количестве ключей, которыми они управляют, и где эти данные находятся на диске. Вооружившись этой информацией, как мне ответить на мой вопрос с корнем: сколько ключей хранится на одном физическом узле. Другими словами, как я могу посмотреть на vnodes на каждом хосте и сказать «Хорошо, ни один физический хост не имеет всех трех внодов для данной записи». – andrewmitchell

+0

Возможно, новые версии пост 1.4.12 имеют разный выход? Я вижу что-то вдоль этих линий: VNode: 68507889249886074290797726533575766546371837952 Backend: riak_kv_bitcask_backend Статус: [{key_count, 934027}, { статус, [{ "/ Var/Библиотека/Riak/bitcask/68507889249886074290797726533575766546371837952/347.bitcask.data ", 0,0,7122146}, – andrewmitchell

+0

Если вы запустите vnode-статус для всех узлов, вы должны обнаружить, что значение после« VNode: »должно существовать в трех местах (надеюсь, на трех разных узлах), если ваш nval = 3.Если ваш размер кольца = 64, вы должны иметь 192 общих значения VNode после запуска состояния vnode на всех 6 узлах. – Craig

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

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