xen-drbd

Материал из Xgu.ru

Перейти к: навигация, поиск
Mercurial-logo.png

Репозиторий проекта
http://xgu.ru/hg/xen-drbd

Подробное описание кластера виртуальных машин повышенной отказоустойчивости, построенного на основе Xen и DRBD, находится на странице Xen поверх DRBD. На этой странице описывается скрипт xen-drbd, предназначенный для управления виртуальными машинами в кластере.


Содержание

[править] Получение кода xen-drbd

Архивы исходного кода:

Текущее состояние кода xen-drbd можно получить из репозитория с помощью команды:

%$ hg clone http://xgu.ru/hg/xen-drbd

(для выполнения этой операции необходимо установить пакет mercurial).

[править] Подготовительные процедуры

[править] Развёртывание системы с помощью xen-drbd-install

Система должна быть развёрнута вручную, с помощью скрипта xen-drbd-install или каким-то другим способом.

  • Должен быть поднят и работать DRBD;
  • Должны быть подготовлены файловые системы доменов Xen.

[править] Копирование файла топологии

Файл топологии должен присутствовать на обеих машинах.

Icon-caution.gif

Не забудьте изменить на втором узле значение переменной i_am. Если вы используете функцию gethostname() для определения собственного имени, обязательно убедитесь что имя соответствует тому, которое указано в переменных node1 и node2.

[править] Инсталляция ключей SSH

Узлы, входящие в кластер, должны знать друг о друге, видеть друга друга и доверять друг другу.

Для этого необходимо чтобы:

  • имена узлов (в том виде в каком они указаны в конфигурационном файле топологии) преобразовывались в адреса как на одном узле, так и на втором;
  • между узлами существовала связь на IP-уровне (ходил пинг);
  • на обеих системах работали SSH-серверы;
  • для беспарольной аутентификации на каждом узле были сгенерированы ключи и на противоположный узел была проинсталлирована их открытая часть (или настроение другое средство беспарольной аутентификации).

Пример последовательности команд для создания и инсталляции SSH-ключей.

 %# ssh-keygen -t dsa
 %# cat ~/.ssh/id_dsa.pub | ssh mirror 'mkdir ~/.ssh/; cat >> ~/.ssh/authorized_keys; chmod 644 ~/.ssh/authorized_keys'

[править] Запуск системы

Будем считать, что наша топология называется topology. Необходимо чтобы файл с названием topology.py присутствовал в каталоге /etc/xen/ на обоих узлах кластера.

Icon-caution.gif

Сейчас имя текущей топологии указывается прямо в теле скрипта xen-drbd.py. Укажите там имя вашей топологии. (Название топологии в будущих топологиях будет настраиваемым без правки кода.)

[править] Создание ссылок

Создание ссылок в каталоге /dev/drbd.

Здесь topology ­-- название файла с описанием топологии (к имени файла автоматически дописывается .py).

Посмотреть, какие ссылки будут создаваться:

%# xen-drbd-install --network=topology make-links

Создать ссылки:

%# xen-drbd-install --network=topology make-links | sh -s

Эта операция выполняется скриптом /etc/init.d/xen-drbd.

[править] Создание виртуальных мостов и настройка сети

Посмотреть, какие мосты будут создаваться и как:

%# xen-drbd-install --network=topology make-bridges

Tip-icon.gif

Если вы используете привязку мостов к реальным интерфейсам, то будьте осторожны при создании реальной конфигурации, потому что вы можете потерять связь с системой.

Создать мосты:

%# xen-drbd-install --network=topology make-bridges | sh -s

Эта операция выполняется скриптом /etc/xen/scripts/network-xen-drbd.

Эти операции должны быть добавлены в загрузку.

[править] xen-drbd

В выполнении операции всегда принимают участие два узла. При старте домена проверяется, работает ли этот домен на втором узле. Если работает, старт не выполняется.


Терминология:

  • этот узел — узел на котором выполняется запуск команды
  • второй узел — второй узел в связке, противоположный тому, на котором был сделан запуск
  • домены, закреплённые за узлом — домены, которые по умолчанию должны запускаться на этом узле. Распределение доменов по узлам определяется переменной domain_home файла описания топологии

Запуск доменов:

  • start domain — запустить домен domain;
  • start-all — запустить все домены на этом узле (за исключением тех, которые уже работают);
  • start-my-domains — запустить на этом узле только его домены (в отличие от подкоманды start-all, домены закреплённые за вторым узлом не запускаются).

Миграция доменов:

  • migrate-out domain — выполнить миграцию домена domain на второй узел;
  • migrate-in domain — выполнить миграцию домена domain на этот узел со второго узла;
  • migrate-out-all — выполнить миграцию всех доменов на второй узел;
  • migrate-in-all — выполнить миграцию всех доменов на этот узел со второго узла;
  • migrate-my-domains-home — выполнить миграцию всех доменов, закреплённых за этим узлом, со второго узла на текущий узел;
  • migrate-and-start-my-domains — выполнить миграцию всех доменов, закреплённых за этим узлом, со второго узла на текущий узел, и запустить недостающие (только на этом узле, на втором запуск не выполняется);
  • migrate-and-start-all — выполнить миграцию всех доменов по свои местам и запустить недостающие домены на своих местах (операция выполняется одинаково с обоими узлами; на каком из узлов она была вызвана, определяет только порядок старта — сначала домены запускаются на узле, на котором была вызвана команда).

[править] Стартовые скрипты xen-drbd

Выше мы вручную делали подготовительные операции: создание ссылок и создание мостов. Эти операции должны выполняться каждый раз при загрузке системы.

Также при старте системы должны запускаться домены. А при останове — домены должны мигрировать на другой узел кластера или останавливаться.

Эти операции выполняются с помощью специальных стартовых скриптов:

  • /etc/init.d/xen-drbd — стартовый скрипт xen-drbd, выполняющий подготовку системы и запуск/миграцию недостающих доменов
  • /etc/xen/scripts/network-xen-drbd — стартовый скрипт, выполняющий создание и настройку сетевых мостов

[править] Настройка сети при запуске

Настройку сети xen-drbd можно вызывать из файла /etc/network/interfaces:

# The primary network interface
iface eth0 inet manual
        up /etc/xen/scripts/network-xen-drbd start

[править] Вызов xen-drbd при загрузке

Стартовые скрипты создаются автоматически при инсталляции.

Для загрузки скрипты просто включаются в иерархию rc.d. Для дистрибутива Debian GNU/Linux:

%# update-rc.d xend stop 95 0 1 6 . start 05 2 3 4 5 .

Конфигурация скрипта /etc/init.d/xen-drbd находится в файле /etc/default/xen-drbd.

[править] Конфигурационные файлы стартовых скриптов

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

   /etc/default/xen-drbd

Пример файла:

XEN_DRBD_PATH='/usr/local/sbin'
TOPOLOGY_NAME='topology'
START_ACTION=nothing
STOP_ACTION=nothing

Назначение переменных:

  • XEN_DRBD_PATH — путь к каталогу, куда установлен xen-drbd;
  • TOPOLOGY_NAME — имя топологии;
  • START_ACTION — действие xen-drbd, которое нужно выполнять при старте системы;
  • STOP_ACTION — действие xen-drbd, которое нужно выполнять при останове системы.

В качестве действий START_ACTION и STOP_ACTION указываются подкоманды xen-drbd. Например:

START_ACTION=migrate-and-start-all
STOP_ACTION=migrate-all-out

В этом случае при остановке узла домены мигрируют на второй узел, а при запуске узла домены возвращаются на место — на тот узел, за которым они закреплены. Если какого-то домена после миграции нет (например, он был потушен на втором узле), то он стартует заново.

Таким образом, когда старт узла завершится, на обоих узлах в совокупности должны работать все домены.

[править] Нестандартные ситуации

[править] Потеряна связь между узлами

Если в момент запуска домена второй узел не виден, домен стартовать не будет.

Сейчас сообщение об ошибке выглядит так:

# xen-drbd.py start samba
Traceback (most recent call last):
  File "/usr/local/sbin/xen-drbd.py", line 245, in ?
    start_domain(domain)
  File "/usr/local/sbin/xen-drbd.py", line 114, in start_domain
    if (get_domain_id(domain,he_is) != -1):
  File "/usr/local/sbin/xen-drbd.py", line 87, in get_domain_id
    res = int(res)
ValueError: invalid literal for int(): ssh: connect to host mirror port 22: No route to host


[править] См. также

Xentaur
Дисковая подсистема
Linux | FreeBSD

Диски и разделы
Файлы устройств: Блочное устройство | Символьное устройство | Raw-устройство | loop-устройство
Диски: IDE | SATA (SATA hotplug) | SCSI | USB
RAID-массивы: Аппаратный RAID | Linux RAID | FreeBSD RAID
Дисковые разделы: Раздел | MBR | fdisk | parted | disklabel | GPT

Управление томами
Логический том | Физический том | Группа томов | Снимок | Клон
device-mapper | dm-ioband | dm-crypt | dm-userspace | multipath
Системы управления томами: LVM | CLVM | EVMS | Btrfs* | ZFS* | AdvFS* | Zumastor

Сетевые хранилища и репликация
Отказоустойчивость: DRBD | Xen + DRBD | ggate + gmirror | HAST
Сетевые хранилища: AoE | iSCSI | FCoE | GNBD

Файловые системы
Монтирование | Проверка целостности | Дефрагментация | Суперблок | inode | Журнал | Кэш | VFS | UUID | FUSE
Локальные: ext3 | ext3cow | ext4 | JFS | Reiser4 | XFS | ZFS | Btrfs | AdvFS | ISO | aufs
Сетевые: NFS | CIFS | AFS | POHMELFS
Кластерные: GFS | OCFS2 | CXFS | VMFS | GPFS
Распределенные: Lustre | PVFS | Ceph | Coda

* Btrfs, ZFS и AdvFS — это файловые системы с возможностями управления томами
Xen
Xen

Виртуализация и паравиртуализация
Эмуляция | Виртуализация | Паравиртуализация | Рекурсивная виртуализация
Паравиртуальные драйверы | Виртуализация ввода/вывода

Общие вопросы по Xen
Аппаратные требования Xen | Поддержка Xen операционными системами | Поддерживаемые аппаратные архитектуры |
Примеры использования Xen | Сравнение виртуальных машин |
Хостинг на Xen
Альтернативы Xen

свободные: KVM | LXC | OpenVZ | VServer | QEMU | VirtualBox
проприетарные: Hyper-V | VMware ESX Server

Технические вопросы
Инсталляция Xen | Конфигурационный файл домена
ОС в Xen: Linux small icon.png Linux | Solaris small icon.png OpenSolaris | Freebsd small icon.png FreeBSD | Openbsd small icon.png OpenBSD | Netbsd small icon.png NetBSD | Windows xp small icon.png Windows XP | Windows vista small icon.png Windows Vista
Устройства: Блочные | USB | SCSI | Сеть | PV-драйверы для Linux | PV-драйверы для Windows | Консоль

Распределение ресурсов между доменами | Перенос системы внутрь Xen | HVM -> PV

Управление и кластеризация | Enomalism | Xen+DRBD | Ganeti | Convirt 2.0 | SkyCover Infrastructure
Источник — «http://xgu.ru/wiki/xen-drbd»