Показаны различия между двумя версиями страницы.
drbd_xen_live_migration [2013/06/04 14:58] metallic [Настройка DRBD] |
drbd_xen_live_migration [2022/03/25 17:00] |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | ====== XEN на DRBD с живой миграцией между узлами ====== | ||
- | |||
- | ===== Введение ===== | ||
- | XEN имеет встроенную возможность перемещать гостей DomU между несколькими узлами Dom0 без остановки их работы, | ||
- | |||
- | ===== Подготовка системы ===== | ||
- | Устанавливаем ядро XEN с утилитами, | ||
- | |||
- | # apt-get install xen-linux-system-amd64 xen-tools bridge-utils drbd8-utils | ||
- | | ||
- | После установки у нас в загрузчике появится вариант загрузки XEN Dom0, на нужно сделать, | ||
- | |||
- | # mv / | ||
- | # update-grub | ||
- | |||
- | Перезагружаемя, | ||
- | |||
- | # xm list | ||
- | | ||
- | | ||
- | |||
- | Если команда выполнилась без ошибки - значит все нормально. | ||
- | |||
- | Дальше настроим сетевой мост. Предполагается, | ||
- | |||
- | allow-hotplug eth0 | ||
- | iface eth0 inet manual | ||
- | pre-up | ||
- | pre-down ifconfig $IFACE down | ||
- | | ||
- | auto br0 | ||
- | iface br0 inet static | ||
- | bridge_ports eth0 | ||
- | address 192.168.1.1 | ||
- | netmask 255.255.255.0 | ||
- | |||
- | После перезагрузки у нас должен появится сетевой мост br0, в него будем подключать наших гостей, | ||
- | |||
- | ===== Настройка DRBD ===== | ||
- | В Debian модуль ядра уже есть, нужно сделать, | ||
- | |||
- | options drbd disable_sendpage=1 | ||
- | |||
- | <note important> | ||
- | |||
- | После перезагрузки модуль должен быть загружен: | ||
- | |||
- | # lsmod | grep drbd | ||
- | drbd 313707 | ||
- | | ||
- | Теперь нужно выделить любое блочное устройство(диск, | ||
- | |||
- | Редактируем / | ||
- | |||
- | include "/ | ||
- | include "/ | ||
- | | ||
- | Редактируем общие параметры для всех ресурсов(эти параметры потом можно переопределить для каждого ресурса индивидуально), | ||
- | |||
- | global { | ||
- | # Запрещаем посылать через интернет разработчикам информацию о версии DRBD (для статистики) | ||
- | usage-count no; | ||
- | | ||
- | # minor-count dialog-refresh disable-ip-verification | ||
- | } | ||
- | | ||
- | common { | ||
- | # Синхронный протокол синхронизации | ||
- | protocol C; | ||
- | | ||
- | handlers { | ||
- | # The following 3 handlers were disabled due to #576511. | ||
- | # Please check the DRBD manual and enable them, if they make sense in your setup. | ||
- | # pri-on-incon-degr "/ | ||
- | # pri-lost-after-sb "/ | ||
- | # local-io-error "/ | ||
- | | ||
- | # fence-peer "/ | ||
- | # split-brain "/ | ||
- | # out-of-sync "/ | ||
- | # before-resync-target "/ | ||
- | # after-resync-target / | ||
- | } | ||
- | | ||
- | startup { | ||
- | # wfc-timeout degr-wfc-timeout outdated-wfc-timeout wait-after-sb | ||
- | } | ||
- | | ||
- | options { | ||
- | # cpu-mask on-no-data-accessible | ||
- | } | ||
- | | ||
- | net { | ||
- | # sndbuf-size rcvbuf-size timeout connect-int ping-int ping-timeout max-buffers | ||
- | # max-epoch-size ko-count allow-two-primaries cram-hmac-alg shared-secret | ||
- | # after-sb-0pri after-sb-1pri after-sb-2pri data-integrity-alg no-tcp-cork | ||
- | } | ||
- | |||
- | syncer { | ||
- | # rate after al-extents use-rle cpu-mask verify-alg csums-alg | ||
- | |||
- | # Максимальная скорость синхронизации(МБ/ | ||
- | rate 100M; | ||
- | } | ||
- | |||
- | } | ||
- | |||
- | Теперь создаем конфигурационный файл ресурса / | ||
- | |||
- | # Имя ресурса | ||
- | resource Wheezy { | ||
- | | ||
- | syncer { | ||
- | # Алгоритм проверки целостности данных | ||
- | verify-alg md5; | ||
- | } | ||
- | | ||
- | net { | ||
- | # Разрешаем обоим узлам быть мастерами одновременно | ||
- | allow-two-primaries; | ||
- | } | ||
- | | ||
- | # DRBD-устройство | ||
- | device | ||
- | | ||
- | # Путь к блочному устройству, | ||
- | disk / | ||
- | | ||
- | # Метаданные будем хранить на самом устройстве | ||
- | meta-disk internal; | ||
- | | ||
- | # Далее указываем адреса и порты обоих узлов | ||
- | on node1 { | ||
- | address | ||
- | } | ||
- | | ||
- | on node2 { | ||
- | address | ||
- | } | ||
- | } | ||
- | |||
- | Этот конфиг полностью одинаковый для обоих узлов. | ||
- | |||
- | < | ||
- | |||
- | Инициализируем ресурс: | ||
- | |||
- | # drbdadm create-md Wheezy | ||
- | Writing meta data... | ||
- | initializing activity log | ||
- | NOT initializing bitmap | ||
- | New drbd meta data block successfully created. | ||
- | | ||
- | Запускаем ресурс: | ||
- | |||
- | # drbdadm up Wheezy | ||
- | |||
- | Смотрим его состояние(на любом узле): | ||
- | |||
- | # cat /proc/drbd | ||
- | version: 8.3.11 (api: | ||
- | srcversion: 41C52C8CD882E47FB5AF767 | ||
- | | ||
- | 1: cs: | ||
- | ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:5242684 | ||
- | | ||
- | Сейчас он на обоих ресурсах в состоянии Secondary и данные имеют статус Inconsistent, | ||
- | |||
- | # drbdadm -- --overwrite-data-of-peer primary Wheezy | ||
- | |||
- | Эта команда переведет узел, на котором была выполнена, | ||
- | |||
- | # cat /proc/drbd | ||
- | version: 8.3.11 (api: | ||
- | srcversion: 41C52C8CD882E47FB5AF767 | ||
- | | ||
- | 1: cs: | ||
- | ns:412672 nr:0 dw:0 dr:417432 al:0 bm:24 lo:3 pe:1 ua:5 ap:0 ep:1 wo:b oos:4831036 | ||
- | [> | ||
- | finish: 0:01:10 speed: 68,608 (68,608) K/sec | ||
- | | ||
- | По окончании синхронизации ресурс должен получить следующий статус: | ||
- | |||
- | cs: | ||
- | |||
- | ===== Настройка XEN ===== | ||
- | К текущему моменту у нас один узел работает в режиме мастера, | ||
- | |||
- | # drbdadm primary Wheezy | ||
- | |||
- | Теперь отформатируем и примонтируем диск(на мастере): | ||
- | |||
- | # mkfs.ext3 /dev/drbd1 | ||
- | # mount /dev/drbd1 /mnt | ||
- | |||