===== Отказоустоичивый кластер ===== В бизнес решениях зачастую очень важна откуазоустоичивость реализованного решения, ведь простой, компании достаточно дорого обходится, наша с вами задача реализовать отказоустойчивые решения для корпоративной среды. Что нам потребуется: 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