18 сент. 2013 г.

Небольшой ceph-кластер в работе

Кластерная система хранения это хорошо, но сначала надо уметь хорошо его готовить. Если падает кластер хранения - падает всё.

Решил сделать отказоустойчивый кластер для хостинга на основе ceph. Система хорошая, готовая к использованию и похоже что используется.
Собрал кластер из трех серверов. Из них два с дисками для хранения, один маломощный просто под монитор (чтобы 3 монитора было).
Погонял тесты, поронял кластер - всё отрабатывает замечательно. При ручных тестах, сбоях, перезагрузках, имитациях зависания диска, тормозов и т.п. кластер работает отлично. Сбои-зависания обнаруживаются в течение от 30 секунд до 2-3 минут, сами чистятся и дисковые операции продолжатся без сбоев.
Запустил на кластере рабочие сайты, запускал по очереди. Когда добавил 4-5 сайтов средней нагрузки пришлось обновиться для добавления еще одного сервера (обновление было небольшим и я решил что это проще, чем вручную ставить старые версии пакетов) и тут началось.


  1. Обновления прошли гладко, все узлы обновились без остановки кластера, договорились между собой.
  2. Через полчаса один из серверов завис намертво, починился хард-ресетом. Сам кластер жив, продолжает работать как и должен при потере одного сервера.
  3. Через несколько часов начались проблемы и замиранием операций ввода-вывода на полчаса (т.е. сайты висят и не открываются, ждут ответа из базы например или чтения php-файла). Прошло само, потом началось снова. Проблема похожа вот на эту и видимо пришла с обновлением, еще раз кувалдой по балде: если работает - не обновляйся.
Документации по ошибкам нет, вообще документация по инструментам и ошибкам довольно скудная и порой даже самые простые вещи получается делать только через эксперимент.

Такие падения в работе неприемлимы, а плюшки ceph очень вкусны для того чтобы сразу от них отказываться - наличие актуальных данных на любом сервере (а не только на двух как при rdbd например).
Настроил программный массив raid1, один диск - rbd образ, второй - локальной блочное устройство из LVM на случай сбоев/падения кластера. Абсолютно не помогло - при зависаниях кластера (для имитации просто выключил все сервера хранения) операции ввода-вывода в md-raid останавливаются, сделать с ним ничего нельзя пока не включить кластер обратно + сервер стал вешаться чуть ли не по щелчку пальцами.

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

6 комментариев:

  1. О какой версии ceph идет речь?

    ОтветитьУдалить
  2. И чем все законцилось? Какая fs была выбрана?

    ОтветитьУдалить
  3. Остановился на xfs на drbd на lvm.

    ОтветитьУдалить
  4. Hadoop это вообще не про то. Мне нужны блочные устройства, чтобы можно было их как диск подмонтировать и работать обычным образом.

    ОтветитьУдалить