Проект

Общее

Профиль

Failover management » История » Версия 2

Владимир Ипатов, 24.10.2012 20:53

1 1 Владимир Ипатов
.
2 1 Владимир Ипатов
3 1 Владимир Ипатов
{{>toc}}
4 1 Владимир Ипатов
5 1 Владимир Ипатов
h1. FAILOVER management
6 2 Владимир Ипатов
7 1 Владимир Ипатов
designations:
8 1 Владимир Ипатов
<pre>
9 1 Владимир Ипатов
gnt# - command exec on master node
10 1 Владимир Ипатов
gntX# - command exec on ordinary node
11 1 Владимир Ипатов
gntY# - command exec on other node
12 1 Владимир Ипатов
# - command exec on any node
13 1 Владимир Ипатов
</pre>
14 1 Владимир Ипатов
15 1 Владимир Ипатов
h2. Start instances on one node where other is down
16 1 Владимир Ипатов
17 1 Владимир Ипатов
When node starts and can't find other node, cluster management daemon ganeti-masterd don't start automatically, even on a master-node.
18 1 Владимир Ипатов
It is because of not able to find out if second node down or there is a link problem when instances on other node is still running.
19 1 Владимир Ипатов
Cluster management daemon start:
20 1 Владимир Ипатов
<pre>
21 1 Владимир Ипатов
gnt# ganeti-masterd --no-voting
22 1 Владимир Ипатов
</pre>
23 1 Владимир Ипатов
24 1 Владимир Ипатов
h2. Normal change master node
25 1 Владимир Ипатов
26 1 Владимир Ипатов
Both of the nodes are online, master node changing is in normal mode
27 1 Владимир Ипатов
On master-candidate (gntX):
28 1 Владимир Ипатов
<pre>
29 1 Владимир Ипатов
gntX# gnt-cluster master-failover
30 1 Владимир Ипатов
</pre>
31 1 Владимир Ипатов
32 1 Владимир Ипатов
h2. Failure of master node
33 1 Владимир Ипатов
34 1 Владимир Ипатов
Master node(in this example gnt1) is down by hardware failure.
35 1 Владимир Ипатов
36 1 Владимир Ипатов
Start management daemon on master-candidate(gntX):
37 1 Владимир Ипатов
<pre>
38 1 Владимир Ипатов
gntX# ganeti-masterd --no-voting
39 1 Владимир Ипатов
</pre>
40 1 Владимир Ипатов
41 1 Владимир Ипатов
Activate new master node:
42 1 Владимир Ипатов
<pre>
43 1 Владимир Ипатов
gntX# gnt-cluster master-failover --no-voting
44 1 Владимир Ипатов
</pre>
45 1 Владимир Ипатов
46 1 Владимир Ипатов
+*Set broken node to offline so master node don't try to connect it.*+
47 1 Владимир Ипатов
-С = master-candidate
48 1 Владимир Ипатов
-O = offline
49 1 Владимир Ипатов
<pre>
50 1 Владимир Ипатов
gnt# gnt-node modify -C no -O yes gntY
51 1 Владимир Ипатов
</pre>
52 1 Владимир Ипатов
53 1 Владимир Ипатов
Запустить все виртуалки отключенного узла на резервном:
54 1 Владимир Ипатов
<pre>
55 1 Владимир Ипатов
gnt# gnt-node failover --ignore-consistency gnt1
56 1 Владимир Ипатов
</pre>
57 1 Владимир Ипатов
58 1 Владимир Ипатов
h2. Возврат основного узла в строй
59 1 Владимир Ипатов
60 1 Владимир Ипатов
Старый основной узел не будет автоматически запускать управляющего демона.
61 1 Владимир Ипатов
* если не найдет парного узла,
62 1 Владимир Ипатов
* если найдет парный узел и узнает, что он стал новым master-ом.
63 1 Владимир Ипатов
64 1 Владимир Ипатов
Если на узле сохранились данные, то для включения его обратно в кластер:
65 1 Владимир Ипатов
66 1 Владимир Ипатов
Скопировать на него свежую конфигурацию с нового master-а
67 1 Владимир Ипатов
<pre>
68 1 Владимир Ипатов
gnt# gnt-cluster redist-conf
69 1 Владимир Ипатов
</pre>
70 1 Владимир Ипатов
71 1 Владимир Ипатов
Запустить на нем ganeti-демоны
72 1 Владимир Ипатов
<pre>
73 1 Владимир Ипатов
gntX# /etc/init.d/ganeti restart
74 1 Владимир Ипатов
</pre>
75 1 Владимир Ипатов
76 1 Владимир Ипатов
h2. Плановый вывод узла из эксплуатации
77 1 Владимир Ипатов
78 1 Владимир Ипатов
Мигрируем виртуальные машины:
79 1 Владимир Ипатов
<pre>
80 1 Владимир Ипатов
gnt# gnt-instance migrate имя_машины
81 1 Владимир Ипатов
</pre>
82 1 Владимир Ипатов
83 1 Владимир Ипатов
Если выводимый узел - мастер, то нужно назначить нового мастера(см. выше *Штатное переключение master узла*).
84 1 Владимир Ипатов
85 1 Владимир Ипатов
Вывести узел из списка кандидатов на мастера и перевести его в режим offline (это предотвратит появление сообщений об "аварии"):
86 1 Владимир Ипатов
<pre>
87 1 Владимир Ипатов
gnt# gnt-node modify -C no -O yes УЗЕЛ
88 1 Владимир Ипатов
</pre>
89 1 Владимир Ипатов
90 1 Владимир Ипатов
Далее узел можно просто выключить.
91 1 Владимир Ипатов
92 1 Владимир Ипатов
h3. Возврат узла в кластер
93 1 Владимир Ипатов
94 1 Владимир Ипатов
После включения узла нужно сообщить кластеру, что узел вернулся в строй:
95 1 Владимир Ипатов
<pre>
96 1 Владимир Ипатов
gnt# gnt-node modify -C yes -O no УЗЕЛ
97 1 Владимир Ипатов
</pre>
98 1 Владимир Ипатов
99 1 Владимир Ипатов
Однако, если у вас имеются сомнения в том, что узел остался в рабочем состоянии, то лучше выполнить:
100 1 Владимир Ипатов
<pre>
101 1 Владимир Ипатов
gnt# gnt-node add --readd УЗЕЛ
102 1 Владимир Ипатов
</pre> 
103 1 Владимир Ипатов
104 1 Владимир Ипатов
В любом случае, после этого нужно подождать около 5 минут, чтобы демон watcher поднял drbd, либо инициировать процесс вручную:
105 1 Владимир Ипатов
<pre>
106 1 Владимир Ипатов
gnt# gnt-cluster verify-disks
107 1 Владимир Ипатов
</pre>
108 1 Владимир Ипатов
109 1 Владимир Ипатов
110 1 Владимир Ипатов
h2. Замена узла на новый
111 1 Владимир Ипатов
112 1 Владимир Ипатов
Добавить узел в кластер
113 1 Владимир Ипатов
<pre>
114 1 Владимир Ипатов
gnt# gnt-node add --readd gntX
115 1 Владимир Ипатов
</pre>
116 1 Владимир Ипатов
117 1 Владимир Ипатов
Для всех виртуалок, которые имеют secondary на подключенном узле:
118 1 Владимир Ипатов
<pre>
119 1 Владимир Ипатов
gnt# gnt-instance replace-disks --submit -s INSTANCE
120 1 Владимир Ипатов
</pre>
121 1 Владимир Ипатов
122 1 Владимир Ипатов
Перерегистрировать узел в puppet
123 1 Владимир Ипатов
<pre>
124 1 Владимир Ипатов
gnt# gnt-instance console sci
125 1 Владимир Ипатов
sci# puppetca --clean gnt1.fqdn
126 1 Владимир Ипатов
</pre>
127 1 Владимир Ипатов
128 1 Владимир Ипатов
<pre>
129 1 Владимир Ипатов
gntX# /var/lib/puppet/ssl/*
130 1 Владимир Ипатов
gntX# /etc/init.d/puppet restart
131 1 Владимир Ипатов
</pre>
132 1 Владимир Ипатов
133 1 Владимир Ипатов
h2. Замена жесткого диска
134 1 Владимир Ипатов
135 1 Владимир Ипатов
Скопировать разметку с существующего (только для дисков одной модели!)
136 1 Владимир Ипатов
<pre>
137 1 Владимир Ипатов
# sfdisk -d /dev/sda|sfdisk /dev/sdX
138 1 Владимир Ипатов
</pre>
139 1 Владимир Ипатов
Проверить
140 1 Владимир Ипатов
<pre>
141 1 Владимир Ипатов
# fdisk -l
142 1 Владимир Ипатов
</pre>
143 1 Владимир Ипатов
Добавить в RAID
144 1 Владимир Ипатов
<pre>
145 1 Владимир Ипатов
# mdadm --manage /dev/md0 --add /dev/sdX1
146 1 Владимир Ипатов
# mdadm --manage /dev/md1 --add /dev/sdX2
147 1 Владимир Ипатов
# mdadm --manage /dev/md2 --add /dev/sdX3
148 1 Владимир Ипатов
</pre>
149 1 Владимир Ипатов
Проверить
150 1 Владимир Ипатов
<pre>
151 1 Владимир Ипатов
cat /proc/mdstat
152 1 Владимир Ипатов
</pre>