Инструменты пользователя

Инструменты сайта


отказоустоичивый_кластер

Отказоустоичивый кластер

В бизнес решениях зачастую очень важна откуазоустоичивость реализованного решения, ведь простой, компании достаточно дорого обходится, наша с вами задача реализовать отказоустойчивые решения для корпоративной среды. Что нам потребуется: 2 компьютера или виртуальных машины, с двумя сетевыми картами(каждая), linux(использован centos 6.4), по разделу без файловой системы на каждой машине, прямые руки.

Изначально нужно настроить службу которая будет синхронизировать данные между дисками двух систем. Для этого можно использовать DRBD

DRBD (Distributed Replicated Block Device — распределённое реплицируемое блочное устройство) — это блочное устройство, предназначенное для построения отказоустойчивых кластерных систем на операционной системе Linux. DRBD занимается полным отражением (mirroring) по сети всех операций с блочным устройством. Можно считать, что DRBD это сетевой RAID-1.

Перед установкой проыедем настройку серверов: у каждого из них должен быть внутренний и внеший адрес, один из них используется для синхронизайии второй для работы с внешнем миром. у каждого сервера должен быть указан hostname, в нашем случае cl1.cl и cl2.cl

Для усановки потребуется подключить доп репохиторий .

rpm -Uvh http://elrepo.org/elrepo-release-6-4.el6.elrepo.noarch.rpm
vi /etc/yum.repos.d/elrepo.repo
enabled=0
yum –enablerepo=elrepo install drbd83-utils kmod-drbd83

После установки DRBD пристепим к настроике: у нас имеется наразмеченный раздел на наших серверах и называется он /dev/sda3.

Внесем в конфигурационный файл DRBD ./etc/drbd.d/global_common.conf следуюшее:

global { usage-count yes; }
#участвовать в глобальном подсчете пользоватей
common { syncer { rate 10M; } }
#установка скорости канала для синхронизации
resource r0 {
#начало описания ресурса
protocol C;
#протокол синхронизации
net {
cram-hmac-alg sha1;
#проверка хеша
shared-secret «bombom»;
#секрктный ключ
}
on cl1.cl {
#описание устроиств на первом сервере
device /dev/drbd0;
# будет создано виртуальное устроиство
disk /dev/sda3;
# раздел на котором находится информация
address 10.10.10.1:7789;
# адрес и порт для синхронизации
meta-disk internal;
# метаданные хранятся на диске
}
on cl2.cl {
device /dev/drbd0;
disk /dev/sda3;
address 10.10.10.2:7789;
meta-disk internal;
}
}

Описание протоколов:

Protocol A: write IO is reported as completed, if it has reached

             local disk and local TCP send buffer.

Protocol B: write IO is reported as completed, if it has reached

             local disk and remote buffer cache.

Protocol C: write IO is reported as completed, if it has reached

             both local and remote disk.
             

Перед конфигурированием иногда может понадобится загрузить модуль ядра drbd

  modprobe drbd 
             

Копируем конфигурационный файл на вторй сервер и выполняем команду:

  drbdadm create-md r0 

на двух серверах. при успешном ее выполнение, запускаем drbd

  service drbd start

проверяем статус устроиства

  
  cat /proc/drbd

если видим строку

  0: cs:Connected st:Secondary/Secondary ds:Inconsistent/Inconsistent C r---
  

значит устроиство создано успешно и обе ноды находятся в состояние Secondary.

одну из них нам нужно перевести в сотстояние primary;

Сделаем это на первом сервере cl1.cl

  drbdadm -- --overwrite-data-of-peer primary r0

после этого начнетя процесс синхронизации нод

для просмотра наберите

  watch cat /proc/drbd
  

После синхронизации можно проверить стостояние нод командой:

  drbdadm dstate r0

Результат UpToDate/UpToDate говорит о рабочем состояние системы.

Создадим файловую систему на нашем новом блочном устроистве.

 mkfs -t ext3 /dev/drbd0

Создадим точку монтирование для файловой системы:

mkdir /mnt/drbd0

Смонтируем в него наше устроиство

 mount /dev/drdb0 /mnt/drdb0
 

Для проверки можно создать на нем несколько файлов и папок.

размонтируем устроиство, и и понизим статус ноды до вторичной.

 umount /mnt/drbd0 
 drbdadm secondary r0

На втором сервере сделаем повысим статус ноды до primary, создадим точку монтирования, смонтируем блочное устроиство и посмотрим файлы на нем.

 drbdadm primary r0
 mkdir /mnt/drbd0
 mount /dev/drdb0 /mnt/drdb0

Если в /mnt/drbd0 появились наши файлы, значит полет проходит нормально и система работоспособна.

если не получилось очищаем устроиство и делаем все заново

drbdadm – –assume-clean resize r0

отказоустоичивый_кластер.txt · Последние изменения: 2013/12/15 13:11 — kirill