понедельник, 14 апреля 2008 г.

Кластер RedHat: некоторые аспекты и тонкости реализации и использования



Итак, для того, чтобы обеспечить бесперебойную работу важных сервисов (как минимум, в режиме 24х7), в нашей организации было решено провести ряд экспериментов с кластерным решением от RedHat (RedHat Cluster Suite).

Исходные условия:
в датацентре выделили два компьютера HP Proliant DL380
- CPU: 4 Intel Xeon 3Ghz
- RAM 4Gb
- 4 гигабитных сетевых карты (задействовано только две)
- OS: Enterprise Linux Server release 5.1 (Carthage), он же Oracle Unbreakable Linux 5.1
- внешний SAN storage для кластерных сервисов, подключение через 2хгигабитную карту emulex, fiber optic.
- кластерная FS была выбрана ocfs2 (GFS2 показала себя очень нестабильной)

На все это была установлена RedHat Cluster Suite из стандартного комплекта.

Самой первой проблемой оказался, как ни странно, недостаток документации. Официальная документация на сайте RedHat содержит только настройку кластера через GUI или web интерфейс (фи!). К счастью, на страничке разработчиков Cluster Suite нашлась кое-какая толковая документация, хотя со многими моментами пришлось разбираться "методом тыка" и собирать обрывки информации и советы в рассылках и форумах (гугль рулит!).

Самое главное, на что нужно обратить с самомго начала внимание - демон fenced. Дело в том, что сугубо из идеологических соображений разработчики не поддерживают программную "отсечку" отпавшей ноды кластера. Точнее, чуть-чуть там инструментов есть (fence_manual + fence_ask_manual), но это нельзя использовать, разве что "на поиграться", потому что проблем исключительно ручная отсечка создает множество. Fenсed работает только с аппаратной частью. Список поддерживаемого оборудования не очень велик, зато само оборудование - не очень-то и дешево. Поэтому большинству небольших фирм на территории СНГ, которые мечтают о дешевом решении с высокой надежностью и балансингом, кластер от RedHat в кустарных и полукустарных условиях увы, не собрать.

К счастью, меня эта проблема не коснулась. Кроме того, в серверах от HP обычно устанавливается iLO карточка (integrated LightOut), с помощью которой можно управлять питанием сервера и работать на серверной консоли.

Кластер собирался в режиме "повышенная надежность", когда сервисы работают на одной ноде и мигрируют на другую в аварийной ситуации. Для экономных и бережливых :) можно использовать это решение в несколько расширенном варианте: когда часть сервисов работает на одной ноде, вторая часть - на другой, распределяя таким образом нагрузку. В случае отказа одной ноды, сервисы, находящиеся на ней, смигрируют.

Собранный и запущенный кластер тестировался по простой схеме:

  • Штатное выключение активной ноды. Сервисы должны смигрировать на пассивную ноду. Оценить время миграции.

  • Штатное выключение пассивной ноды. Никаких изменений в работе сервисов быть не должно

  • Аварийное выключение активной ноды (по питанию). Сервисы должны смигрировать на пассивную ноду. Оценить время миграции.

  • Аварийное выключение пассивной ноды (по питанию). Никаких изменений в работе сервисов быть не должно

  • Поочередное отключение сетевых интерфейсов на активной ноде

  • Поочередное отключение сетевых интерфейсов на пассивной ноде

  • Последовательное отключение сетевых интерфейсов на активной ноде (вплоть до отключения всех)

  • Последовательное отключение сетевых интерфейсов на пассивной ноде (вплоть до отключения всех)

  • Отключение emulex контроллера на активной ноде (имитация отказа доступа к SAN storage)

  • Отключение emulex контроллера на пассивной ноде (имитация отказа доступа к SAN storage)

  • принудительная остановка запущенного процесса, входящего в сервис (kill -9 ), с целью проверки и ситуации с багами в программах и неожиданным падением в core.


Продолжение следует...

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

  1. Огромное человеческое спасбо!

    ОтветитьУдалить
  2. Ценные рекомендации, беру на заметку

    ОтветитьУдалить
  3. Опутеть как интересно, во задвигаете. Класс!

    ОтветитьУдалить
  4. "Ой, спасибо заводскому другу, научил как ходят как сдают!" , на самом деле, спасибо большое. Уважаю людей которые не ленятся написать, то что может другим жизнь облегчить. Самые лучшие пожелания автору.

    ОтветитьУдалить
  5. Интересно, как сейчас с кластером обстоит дело или не стоит на него смотреть?!

    ОтветитьУдалить
  6. Точно сказать не могу, но, судя по состоянию RHEV (виртуализация) - не ахти :( - старые проблемы остаются.
    В принципе, при соблюдении некоторых условий кластер весьма неплох и работает. Но мы его не используем, вместо этого сейчас активно исследуются варианты виртуализации (тоже в кластерном режиме), потому как на мощных боксах это оказывается выгоднее.

    ОтветитьУдалить
  7. А общую файл. систему не используете?

    ОтветитьУдалить
  8. Смотря как и где. В принципе - используем. Оракловую ocfs2.
    У нас основной дистр - линукс от оракла

    ОтветитьУдалить
  9. я тоже использую ocfs2, но что-то скорость чтения с неё не очень, да и если одна нода из кластера пропала, то другая в рестарт уходит.

    ОтветитьУдалить
  10. По скорости не скажу, там множество нюансов включая хардвер.
    А вот рестартовать вторая нода ну никак не должна!

    ОтветитьУдалить
  11. а можно строчку из fstab где монтируется такой раздел?

    ОтветитьУдалить
  12. Да без проблем :) Только подозреваю, что не поможет

    /dev/mapper/mpath0 /mnt/san ocfs2 _netdev,datavolume,nointr 0 0


    Рекомендую посмотреть лучше /etc/ocfs2/cluster.conf

    ОтветитьУдалить
  13. ну там особо нечего смотреть

    node:
    ip_port = 7000
    ip_address = ххх.ххх.ххх.ххх
    number = 0
    name = host0
    cluster = ocfs2

    node:
    ip_port = 7000
    ip_address = ххх.ххх.ххх.ххy
    number = 1
    name = host1
    cluster = ocfs2
    cluster:
    node_count = 2
    name = ocfs2

    ОтветитьУдалить
  14. а у вас в кластере сколько нод?

    ОтветитьУдалить
  15. Я отказался от использования RH cluster.
    Но, если речь идет об ocfs, то по-разному. Обычно 2-3

    ОтветитьУдалить
  16. вопрос, к примеру две ноды, что происходит когда обе теряют друг-друга по сети, как они будут работать с общим диском?

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