Имеет ли это смысл и возможно ли это при настройке с 3 узлами, как должно выглядеть правило раздавливания? Это текущий. Идея, стоящая за этим, состоит в том, чтобы компенсировать множественные сбои OSD (например, 3 OSD, по одному на узел, не сработают).

# rules
rule replicated_rule {
id 0
type replicated
min_size 1
max_size 10
step take default
step chooseleaf firstn 0 type host
step emit
}
0
muru 9 Дек 2021 в 17:53

1 ответ

Да, это возможно с step chooseleaf firstn 0 type osd. Если это имеет смысл, это другой вопрос, например, ваши накладные расходы на хранилище будут очень высокими. Если у вас есть возможности, вы можете это сделать, но ceph разработан как решение с высокой степенью масштабируемости, и с этой настройкой у вас есть своего рода крайний случай. Обычно репликации на основе хоста достаточно с min_size = 2 и size = 3. Таким образом, не имеет значения, сколько OSD выйдет из строя на одном хосте, и даже если второй хост выйдет из строя, ваши данные еще не будут потеряны, а просто ухудшатся, пока вы не вернете OSD в оперативный режим. Но также обратите внимание, что всего с тремя хостами вы не сможете восстановить отказавший узел, поэтому кластер будет работать в деградированном состоянии до тех пор, пока узел не будет отремонтирован или к кластеру не присоединится новый узел.

Вы можете отредактировать свое правило Crush (или создать новый, чтобы сначала протестировать его), поэтому он сначала выбирает все доступные хосты, а затем количество OSD, это может выглядеть так:

step choose firstn 0 type host
step chooseleaf firstn 2 type osd

Вы должны протестировать его перед подачей заявки с помощью crushtool.

1
eblock 9 Дек 2021 в 16:28
Спасибо. @eblock как я могу убедиться, что ceph не размещает все 5 реплик на одном узле? правило звучит так, как будто оно просто берет случайные osd, не глядя на то, какой хост они.
 – 
jsterr
9 Дек 2021 в 16:08
Что означает "2" во второй строке? @eblock Буду ли я тогда получать 2 реплики на хост? Это будет 6 реплик тогда на кластере из 3 узлов или как это работает?
 – 
jsterr
9 Дек 2021 в 16:56
1
Да, он попытается разместить 6 реплик, но если вы установите для size значение 5, он остановится после размещения 5 реплик. Это приведет к тому, что некоторые узлы будут иметь по две копии каждого PG, а другие — только одну. Но это также означало бы, что у каждого хоста есть как минимум одна реплика.
 – 
eblock
9 Дек 2021 в 17:01
Большое спасибо за вашу помощь :-)
 – 
jsterr
9 Дек 2021 в 17:38