Исходные условия:
в датацентре выделили два компьютера 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.
Продолжение следует...
Огромное человеческое спасбо!
ВідповістиВидалитиЦенные рекомендации, беру на заметку
ВідповістиВидалитиОпутеть как интересно, во задвигаете. Класс!
ВідповістиВидалити"Ой, спасибо заводскому другу, научил как ходят как сдают!" , на самом деле, спасибо большое. Уважаю людей которые не ленятся написать, то что может другим жизнь облегчить. Самые лучшие пожелания автору.
ВідповістиВидалитиИнтересно, как сейчас с кластером обстоит дело или не стоит на него смотреть?!
ВідповістиВидалитиТочно сказать не могу, но, судя по состоянию RHEV (виртуализация) - не ахти :( - старые проблемы остаются.
ВідповістиВидалитиВ принципе, при соблюдении некоторых условий кластер весьма неплох и работает. Но мы его не используем, вместо этого сейчас активно исследуются варианты виртуализации (тоже в кластерном режиме), потому как на мощных боксах это оказывается выгоднее.
А общую файл. систему не используете?
ВідповістиВидалитиСмотря как и где. В принципе - используем. Оракловую ocfs2.
ВідповістиВидалитиУ нас основной дистр - линукс от оракла
я тоже использую ocfs2, но что-то скорость чтения с неё не очень, да и если одна нода из кластера пропала, то другая в рестарт уходит.
ВідповістиВидалитиПо скорости не скажу, там множество нюансов включая хардвер.
ВідповістиВидалитиА вот рестартовать вторая нода ну никак не должна!
а можно строчку из fstab где монтируется такой раздел?
ВідповістиВидалитиДа без проблем :) Только подозреваю, что не поможет
ВідповістиВидалити/dev/mapper/mpath0 /mnt/san ocfs2 _netdev,datavolume,nointr 0 0
Рекомендую посмотреть лучше /etc/ocfs2/cluster.conf
ну там особо нечего смотреть
ВідповістиВидалити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
а у вас в кластере сколько нод?
ВідповістиВидалитиЯ отказался от использования RH cluster.
ВідповістиВидалитиНо, если речь идет об ocfs, то по-разному. Обычно 2-3
вопрос, к примеру две ноды, что происходит когда обе теряют друг-друга по сети, как они будут работать с общим диском?
ВідповістиВидалити