Проект

Общее

Профиль

FAILOVER-процедуры » История » Версия 2

Версия 1 (Dmitry Chernyak, 10.10.2012 14:14) → Версия 2/39 (Владимир Ипатов, 19.10.2012 16:56)

.

{{>toc}}

h1. FAILOVER-процедуры

Обозначения:
<pre>
gnt# - запуск команды на мастер-узле
gntX# - запуск команды на обычном узле
gntY# - запуск команды на другом узле
# - запуск команды на любом узле
</pre>

h2. Запуск на одном узле

При запуске на одном узле, управление кластером ganeti-masterd не стартует автоматически, даже на master-узле.
Это связано с тем, что невозможно отличить крах второго узла от потери связи, когда на втором узле продолжают работать запущенные виртуалки.
Запуск управляющего демона:
<pre>
gnt# ganeti-masterd --no-voting
</pre>

h2. Штатное переключение master-узла

Оба узла запущены, смена master-узла производится в штатном режиме.
На master-candidate (gntX):
<pre>
gntX# gnt-cluster master-failover
</pre>

h2. Выход из строя master-узла

Основной узел (в примере - gnt1) оказывается выключен в результате аппаратной аварии.

Запустить управляющий демон на узле master-candidate (gntX):
<pre>
gntX# ganeti-masterd --no-voting
</pre>

Активировать новый master-узел:
<pre>
gntX# gnt-cluster master-failover --no-voting
</pre>

Пометить отключенный узел offline, чтобы master в него не долбился
-С = master-candidate
-O = offline
<pre>
gnt# gnt-node modify -C no -O yes gntY
</pre>

Запустить все виртуалки отключенного узла на резервном:
<pre>
gnt# gnt-node failover --ignore-consistency gnt1
</pre>

h2. Возврат основного узла в строй

Старый основной узел не будет автоматически запускать управляющего демона.
* если не найдет парного узла,
* если найдет парный узел и узнает, что он стал новым master-ом.

Если на узле сохранились данные, то для включения его обратно в кластер:

Скопировать на него свежую конфигурацию с нового master-а
<pre>
gnt# gnt-cluster redist-conf
</pre>

Запустить на нем ganeti-демоны
<pre>
gntX# /etc/init.d/ganeti restart
</pre>

h2. Плановый вывод узла из эксплуатации
Мигрируем виртуальные машины:
<pre>
gnt-instance migrate имя_машины
</pre>

если выводимый узел - мастер, то сначала нужно переназначить мастера:
<pre>
gnt-cluster masterfailover
</pre>
На том узле, который будет новым мастером. Далее все делается с него.

<pre>
gnt-node modify -C no -O yes УЗЕЛ
</pre>
Выводит узел из списка кандидатов на мастера и переводит его в режим offline

Далее узел можно просто выключить.
После включения узла нужно добавить заново в кластер:
<pre>
gnt-node add --readd УЗЕЛ
</pre>

h2.
Замена узла на новый

Добавить узел в кластер
<pre>
gnt# gnt-node add --readd gntX
</pre>

Для всех виртуалок, которые имеют secodnary на подключенном узле:
<pre>
gnt# gnt-instance replace-disks --submit -s INSTANCE
</pre>

Перерегистрировать узел в puppet
<pre>
gnt# gnt-instance console sci
sci# puppetca --clean gnt1.fqdn
</pre>

<pre>
gntX# /var/lib/puppet/ssl/*
gntX# /etc/init.d/puppet restart
</pre>

h2. Замена жесткого диска

Скопировать разметку с существующего (только для дисков одной модели!)
<pre>
# sfdisk -d /dev/sda|sfdisk /dev/sdX
</pre>
Проверить
<pre>
# fdisk -l
</pre>
Добавить в RAID
<pre>
# mdadm --manage /dev/md0 --add /dev/sdX1
# mdadm --manage /dev/md1 --add /dev/sdX2
# mdadm --manage /dev/md2 --add /dev/sdX3
</pre>
Проверить
<pre>
cat /proc/mdstat
</pre>