25 сент. 2012 г.

HA Cluster Oracle Linux. Подготовка.


Продолжаю пытать Oracle Linux, принципиальных отличий не ощущаю. На днях впервые  поднимал двунодовый кластер высокой доступности (HA Cluster) c общим сетевым интерфейсом. Заметка не претендует на истинно верную инструкцию по применению, не отрицаю что что-то я мог не понять. Поведение кластера иной раз неадекватно и даже чтение логов не помогает. Поиск причин выводит в багрепорты. Рассказываю почти своими словами.

Рис1. Схема двунодового кластера
Сначала немного терминологии:
Кластер (Cluster) - некая совокупность состоящая из равноправных частей, которая сохраняет свою полную работоспособность при выходе из строя одной или нескольких его компонент.
Кластер высокой доступности (Hight Availabity Cluster) - это группа серверов, работающих как единая система для предоставления высокой доступности сервисов и приложений для клиентов.
Нода (Node) - один из компонентов (узлов) кластера. Компьютер в кластере является нодой.
Кворум (Quorum) - концепция, некая величина по которой определяется целостность кластера. Каждая нода в кластере имеет голос. По наличию нужного количества голосов определяется кворум. 

Немного расскажу про основные утилиты:
Cman - собственно кластер менеджер (Cluster MANager). Является кворум провайдером. Он считает величину голосов, и запускает процессы.
Corosync - сердце кластера. Все компоненты кластера взаимодействуют непосредственно с ним. Синхронизирует работу кластера путем отправки мультикастовых либо юникастовых сообщений. Настраивается через файл cluster.conf.
Qdiskd - quorum disk, небольшая партиция общего стораджа, которая используется для повышения кворума. Может использоваться как замена ноды в двухнодовой конфигурации обеспечивая кворум необходимым голосом.
Totem - протокол определяет передачу сообщений внутри кластера и его используют corosync. Маркер передается по всем нодам в кластере, ноды могут отправлять сообщения только когда имеют маркер. Нода держит сообщение в памяти пока она не получит обратно маркер с сообщением не содержащим "no ack". Таким образом если нода пропустила сообщение она может запросить повторную отправку когда заимеет маркер. Если нода не находится в рабочем состоянии, она не получит сообщение.
Fenced - когда нода перестает отвечать, начинают работать таймауты. В это время могут быть выполнены DLM блоки. Все важные процессы могут быть заблокированы. Неработающая нода обнаруживается благодаря totem маркеру. Т.е. если нода не послала маркер в  заданный таймаут то она считается нерабочей. Оставшиеся ноды перестраиваются в новый кластер, а fence делает голос против мертвой ноды. Fence демон может подключать fence devices в зависимости от архитектуры, такие девайсы способны выключать, перезагружать ноды. Например есть vmware device в составе vmware tools который способен подключаться к хостам и перезагружать мертвые ноды. 
DLM - Distributed Lock Manager, поставляется как часть кластерного сервиса Red Hat. В других posix системах - plock. Блокирует партиции или файлы в случае поступления сигнала от fenced.
Rgmanager - когда изменяется состав кластера, corosync вызывает rgmanager. Он проверяет изменения и управляет ресурсами кластера если нужно.
Luci - веб-морда для управления кластерами с помощью ricci.
Ricci - агент который должен быть запущен на всех нодах. Служит инструментом для управления нодами.
Еще раз весь процесс:
Маркер движется вокруг по всем нодам кластера. При получении маркера нода посылает ответ. Вдруг, одна нода перестала отвечать. Начинает работать таймер, по прошествии определенного таймаута срабатывает счетчик. Если достигается лимит, создается новый маркер. Если до достижения лимита нода отвечает, счетчик сбрасывается на 0, и кластер продолжает работать. Снова перестает отвечать нода. Срабатывает таймер. Счетчик достигает лимита. Нода объявляется мертвой. Кластер проверяет оставшиеся ноды и хватает ли у них голосов до кворума. Если голосов не хватает, кластер замораживается и ноды выгоняются из кластера. Если хватает голосов, не отвечающая нода объявляется мертвой. Corosync вызывает fenced. Fenced вызывает DLM и срабатывают блоки. Fence-демоны используя fence-devices перезагружают либо включают неисправную ноду.


Установка необходимого софта и подготовка (делать на всех нодах):

Софт для организации кластера, есть в репозитории OL:
[root@test]# yum install cman, rgmanager, luci

Нужный мне софт для организации общего ip - heartbeat, отсутствует в репах OL. Нужно сначала подключить репозиторий epel или clusterlub:
[root@test]# wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-7.noarch.rpm
[root@test]# rpm -Uvh epel-release-6-7.noarch.rpm
[root@test]# yum install heartbeat

Отключим firewall и отредактируем файл hosts:

[root@test]# chkconfig iptables off
[root@test]# service iptables stop
[root@test]# nano /etc/hosts

192.168.0.13 node_1
192.168.0.14 node_2

[root@test]# /etc/init.d/network restart

Отключим selinux и рестарт машины:

[root@test]# nano /etc/selinux/config
SELINUX=disabled
Далее нужно определиться как сделать кластер, самое простое запустить Luci на одной из нод и создать кластер с помощью графического режима. Я буду делать кластер через конфиги самостоятельно.
--------------------------------------------------------------------------------------------------------------------

HA Cluster Oracle Linux. Настройка кластера

Комментариев нет:

Отправить комментарий