Показаны различия между двумя версиями страницы.
drbd_xen_live_migration [2013/05/30 16:30] metallic [Настройка DRBD] |
drbd_xen_live_migration [2022/03/25 17:00] |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | ====== XEN на DRBD с живой миграцией между узлами ====== | ||
- | |||
- | ===== Введение ===== | ||
- | XEN имеет встроенную возможность перемещать гостей DomU между несколькими узлами Dom0 без остановки их работы, | ||
- | |||
- | ===== Настройка DRBD ===== | ||
- | Предполагается, | ||
- | |||
- | 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 { | ||
- | pri-on-incon-degr "/ | ||
- | pri-lost-after-sb "/ | ||
- | local-io-error "/ | ||
- | #fence-peer "/ | ||
- | # split-brain "/ | ||
- | # out-of-sync "/ | ||
- | # before-resync-target "/ | ||
- | # | ||
- | } | ||
- | | ||
- | startup { | ||
- | # wfc-timeout degr-wfc-timeout outdated-wfc-timeout wait-after-sb | ||
- | } | ||
- | | ||
- | options { | ||
- | # cpu-mask on-no-data-accessible | ||
- | } | ||
- | | ||
- | disk { | ||
- | # size max-bio-bvecs on-io-error fencing disk-barrier disk-flushes | ||
- | # disk-drain md-flushes resync-rate resync-after al-extents | ||
- | # c-plan-ahead c-delay-target c-fill-target c-max-rate | ||
- | # c-min-rate disk-timeout | ||
- | } | ||
- | | ||
- | net { | ||
- | # protocol timeout max-epoch-size max-buffers unplug-watermark | ||
- | # connect-int ping-int sndbuf-size rcvbuf-size ko-count | ||
- | # allow-two-primaries cram-hmac-alg shared-secret after-sb-0pri | ||
- | # after-sb-1pri after-sb-2pri always-asbp rr-conflict | ||
- | # ping-timeout data-integrity-alg tcp-cork on-congestion | ||
- | # congestion-fill congestion-extents csums-alg verify-alg | ||
- | # use-rle | ||
- | } | ||
- | } | ||
- | |||
- | Теперь создаем конфигурационный файл ресурса / | ||
- | |||
- | # Имя ресурса | ||
- | 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.4.1 (api: | ||
- | GIT-hash: 91b4c048c1a0e06777b5f65d312b38d47abaea80 build by phil@fat-tyre, | ||
- | | ||
- | 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.4.1 (api: | ||
- | GIT-hash: 91b4c048c1a0e06777b5f65d312b38d47abaea80 build by phil@fat-tyre, | ||
- | | ||
- | 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: | ||
- | |||