Назад | Перейти на главную страницу

Плохая игра с ладьей, цефом и RBD

У меня кластер k8s на 4 ВМ. 1 мастер и 3 рабочих. На каждом из рабочих я использую ладью для развертывания OSD ceph. OSD используют тот же диск, что и операционная система виртуальной машины.

Диски виртуальных машин являются удаленными (базовая инфраструктура снова представляет собой кластер Ceph).

Это производительность диска ВМ (одинаковая для всех трех):

$ dd if=/dev/zero of=testfile bs=1G count=1 oflag=direct
1+0 records in
1+0 records out
1073741824 bytes (1.1 GB) copied, 4.82804 s, 222 MB/s

А задержка (ожидание) в режиме ожидания составляет около 8 мс.

Если я смонтирую том RBD внутри K8S POD, производительность будет очень низкой:

$ dd if=/dev/zero of=testfile bs=1G count=1 oflag=direct
1+0 records in
1+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 128.619 s, 8.3 MB/s 

Во время высокой нагрузки (100% использование тома rbd) задержка тома RBD превышает 30 секунд.

Я знаю, что моя установка - это не то, что рекомендует ceph, и что dd не лучший инструмент для профилирования производительности диска, но штраф от использования ceph поверх виртуальных дисков по-прежнему огромен.

Операционная система ВМ

CentOS 7.7.1908.
Kernel 3.10.0-1062.12.1.el7.x86_64

Пропускная способность сети между рабочими узлами:

[ ID] Interval           Transfer     Bandwidth
[  5]   0.00-10.00  sec  2.35 GBytes  2.02 Gbits/sec

Задержка в сети менее 1 мс.

Я ищу подсказки по дальнейшему устранению проблемы и повышению производительности.

Недостаточно информации о вашем кластере CEPH. Но кое-что улучшит производительность:

  • Журнал надо ставить на отдельный SSD (даже лучше NVMe). Даже если у вас SSD.
  • Используйте сеть 10GbE и отдельный кластер и внешнюю сеть. Это улучшит сетевую задержку.
  • Не используйте тома с 3 копиями. Это приятная функция, но она замедляет работу вашего кластера.
  • По умолчанию очистка работает постоянно. Надо это поменять. Чистку лучше проводить на ночь.
  • Используйте BlueStore в качестве формата для экранных меню.
  • Настройте сервер на максимальную производительность. Например, регулятор CPU должен быть Performance.