Проект

Общее

Профиль

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

Владимир Ипатов, 19.10.2012 16:56

1 1 Dmitry Chernyak
.
2 1 Dmitry Chernyak
3 1 Dmitry Chernyak
{{>toc}}
4 1 Dmitry Chernyak
5 1 Dmitry Chernyak
h1. FAILOVER-процедуры
6 1 Dmitry Chernyak
7 1 Dmitry Chernyak
Обозначения:
8 1 Dmitry Chernyak
<pre>
9 1 Dmitry Chernyak
gnt# - запуск команды на мастер-узле
10 1 Dmitry Chernyak
gntX# - запуск команды на обычном узле
11 1 Dmitry Chernyak
gntY# - запуск команды на другом узле
12 1 Dmitry Chernyak
# - запуск команды на любом узле
13 1 Dmitry Chernyak
</pre>
14 1 Dmitry Chernyak
15 1 Dmitry Chernyak
h2. Запуск на одном узле
16 1 Dmitry Chernyak
17 1 Dmitry Chernyak
При запуске на одном узле, управление кластером ganeti-masterd не стартует автоматически, даже на master-узле.
18 1 Dmitry Chernyak
Это связано с тем, что невозможно отличить крах второго узла от потери связи, когда на втором узле продолжают работать запущенные виртуалки.
19 1 Dmitry Chernyak
Запуск управляющего демона:
20 1 Dmitry Chernyak
<pre>
21 1 Dmitry Chernyak
gnt# ganeti-masterd --no-voting
22 1 Dmitry Chernyak
</pre>
23 1 Dmitry Chernyak
24 1 Dmitry Chernyak
h2. Штатное переключение master-узла
25 1 Dmitry Chernyak
26 1 Dmitry Chernyak
Оба узла запущены, смена master-узла производится в штатном режиме.
27 1 Dmitry Chernyak
На master-candidate (gntX):
28 1 Dmitry Chernyak
<pre>
29 1 Dmitry Chernyak
gntX# gnt-cluster master-failover
30 1 Dmitry Chernyak
</pre>
31 1 Dmitry Chernyak
32 1 Dmitry Chernyak
h2. Выход из строя master-узла
33 1 Dmitry Chernyak
34 1 Dmitry Chernyak
Основной узел (в примере - gnt1) оказывается выключен в результате аппаратной аварии.
35 1 Dmitry Chernyak
36 1 Dmitry Chernyak
Запустить управляющий демон на узле master-candidate (gntX):
37 1 Dmitry Chernyak
<pre>
38 1 Dmitry Chernyak
gntX# ganeti-masterd --no-voting
39 1 Dmitry Chernyak
</pre>
40 1 Dmitry Chernyak
41 1 Dmitry Chernyak
Активировать новый master-узел:
42 1 Dmitry Chernyak
<pre>
43 1 Dmitry Chernyak
gntX# gnt-cluster master-failover --no-voting
44 1 Dmitry Chernyak
</pre>
45 1 Dmitry Chernyak
46 1 Dmitry Chernyak
Пометить отключенный узел offline, чтобы master в него не долбился
47 1 Dmitry Chernyak
-С = master-candidate
48 1 Dmitry Chernyak
-O = offline
49 1 Dmitry Chernyak
<pre>
50 1 Dmitry Chernyak
gnt# gnt-node modify -C no -O yes gntY
51 1 Dmitry Chernyak
</pre>
52 1 Dmitry Chernyak
53 1 Dmitry Chernyak
Запустить все виртуалки отключенного узла на резервном:
54 1 Dmitry Chernyak
<pre>
55 1 Dmitry Chernyak
gnt# gnt-node failover --ignore-consistency gnt1
56 1 Dmitry Chernyak
</pre>
57 1 Dmitry Chernyak
58 1 Dmitry Chernyak
h2. Возврат основного узла в строй
59 1 Dmitry Chernyak
60 1 Dmitry Chernyak
Старый основной узел не будет автоматически запускать управляющего демона.
61 1 Dmitry Chernyak
* если не найдет парного узла,
62 1 Dmitry Chernyak
* если найдет парный узел и узнает, что он стал новым master-ом.
63 1 Dmitry Chernyak
64 1 Dmitry Chernyak
Если на узле сохранились данные, то для включения его обратно в кластер:
65 1 Dmitry Chernyak
66 1 Dmitry Chernyak
Скопировать на него свежую конфигурацию с нового master-а
67 1 Dmitry Chernyak
<pre>
68 1 Dmitry Chernyak
gnt# gnt-cluster redist-conf
69 1 Dmitry Chernyak
</pre>
70 1 Dmitry Chernyak
71 1 Dmitry Chernyak
Запустить на нем ganeti-демоны
72 1 Dmitry Chernyak
<pre>
73 1 Dmitry Chernyak
gntX# /etc/init.d/ganeti restart
74 1 Dmitry Chernyak
</pre>
75 1 Dmitry Chernyak
76 2 Владимир Ипатов
h2. Плановый вывод узла из эксплуатации
77 2 Владимир Ипатов
Мигрируем виртуальные машины:
78 2 Владимир Ипатов
<pre>
79 2 Владимир Ипатов
gnt-instance migrate имя_машины
80 2 Владимир Ипатов
</pre>
81 2 Владимир Ипатов
82 2 Владимир Ипатов
если выводимый узел - мастер, то сначала нужно переназначить мастера:
83 2 Владимир Ипатов
<pre>
84 2 Владимир Ипатов
gnt-cluster masterfailover
85 2 Владимир Ипатов
</pre>
86 2 Владимир Ипатов
На том узле, который будет новым мастером. Далее все делается с него.
87 2 Владимир Ипатов
88 2 Владимир Ипатов
<pre>
89 2 Владимир Ипатов
gnt-node modify -C no -O yes УЗЕЛ
90 2 Владимир Ипатов
</pre>
91 2 Владимир Ипатов
Выводит узел из списка кандидатов на мастера и переводит его в режим offline
92 2 Владимир Ипатов
93 2 Владимир Ипатов
Далее узел можно просто выключить.
94 2 Владимир Ипатов
После включения узла нужно добавить заново в кластер:
95 2 Владимир Ипатов
<pre>
96 2 Владимир Ипатов
gnt-node add --readd УЗЕЛ
97 2 Владимир Ипатов
</pre> 
98 2 Владимир Ипатов
99 1 Dmitry Chernyak
h2. Замена узла на новый
100 1 Dmitry Chernyak
101 1 Dmitry Chernyak
Добавить узел в кластер
102 1 Dmitry Chernyak
<pre>
103 1 Dmitry Chernyak
gnt# gnt-node add --readd gntX
104 1 Dmitry Chernyak
</pre>
105 1 Dmitry Chernyak
106 1 Dmitry Chernyak
Для всех виртуалок, которые имеют secodnary на подключенном узле:
107 1 Dmitry Chernyak
<pre>
108 1 Dmitry Chernyak
gnt# gnt-instance replace-disks --submit -s INSTANCE
109 1 Dmitry Chernyak
</pre>
110 1 Dmitry Chernyak
111 1 Dmitry Chernyak
Перерегистрировать узел в puppet
112 1 Dmitry Chernyak
<pre>
113 1 Dmitry Chernyak
gnt# gnt-instance console sci
114 1 Dmitry Chernyak
sci# puppetca --clean gnt1.fqdn
115 1 Dmitry Chernyak
</pre>
116 1 Dmitry Chernyak
117 1 Dmitry Chernyak
<pre>
118 1 Dmitry Chernyak
gntX# /var/lib/puppet/ssl/*
119 1 Dmitry Chernyak
gntX# /etc/init.d/puppet restart
120 1 Dmitry Chernyak
</pre>
121 1 Dmitry Chernyak
122 1 Dmitry Chernyak
h2. Замена жесткого диска
123 1 Dmitry Chernyak
124 1 Dmitry Chernyak
Скопировать разметку с существующего (только для дисков одной модели!)
125 1 Dmitry Chernyak
<pre>
126 1 Dmitry Chernyak
# sfdisk -d /dev/sda|sfdisk /dev/sdX
127 1 Dmitry Chernyak
</pre>
128 1 Dmitry Chernyak
Проверить
129 1 Dmitry Chernyak
<pre>
130 1 Dmitry Chernyak
# fdisk -l
131 1 Dmitry Chernyak
</pre>
132 1 Dmitry Chernyak
Добавить в RAID
133 1 Dmitry Chernyak
<pre>
134 1 Dmitry Chernyak
# mdadm --manage /dev/md0 --add /dev/sdX1
135 1 Dmitry Chernyak
# mdadm --manage /dev/md1 --add /dev/sdX2
136 1 Dmitry Chernyak
# mdadm --manage /dev/md2 --add /dev/sdX3
137 1 Dmitry Chernyak
</pre>
138 1 Dmitry Chernyak
Проверить
139 1 Dmitry Chernyak
<pre>
140 1 Dmitry Chernyak
cat /proc/mdstat
141 1 Dmitry Chernyak
</pre>