Я обеспокоен этой нотой в документации 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).
Riak пытается предупредить вас, если он не определился с тем, как разместить всех префлоистов на 3 физических машинах. Когда вы запускаете «план кластера riak-admin» после добавления всех ваших узлов, вы получите «ВНИМАНИЕ: не все реплики будут на разных узлах», на одном узле будет 2 копии. – Joe