Проект

Общее

Профиль

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

Dmitry Chernyak, 13.11.2012 09:27

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 6 Dmitry Chernyak
h2. Start instances on one (master) 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 5 Dmitry Chernyak
20 5 Dmitry Chernyak
h3. Cluster management daemon start:
21 5 Dmitry Chernyak
22 1 Владимир Ипатов
<pre>
23 1 Владимир Ипатов
gnt# ganeti-masterd --no-voting
24 5 Dmitry Chernyak
</pre>
25 5 Dmitry Chernyak
26 5 Dmitry Chernyak
h3. Transfer instances from faled (or offline node)
27 5 Dmitry Chernyak
28 5 Dmitry Chernyak
This operation is activated only once. It will change the operation node for the instance.
29 5 Dmitry Chernyak
The transferred instances will be automatically started if desired by default.
30 5 Dmitry Chernyak
31 5 Dmitry Chernyak
Better is to migrate or failover the instances in regular mode, before their node will go offline.
32 5 Dmitry Chernyak
But if it happens accidentally, then you should issue:
33 5 Dmitry Chernyak
34 5 Dmitry Chernyak
<pre>
35 5 Dmitry Chernyak
gnt# gnt-node failover --ignore-consistency gntX
36 1 Владимир Ипатов
</pre>
37 1 Владимир Ипатов
38 3 Владимир Ипатов
h2. Master node change in normal mode
39 1 Владимир Ипатов
40 1 Владимир Ипатов
Both of the nodes are online, master node changing is in normal mode
41 1 Владимир Ипатов
On master-candidate (gntX):
42 1 Владимир Ипатов
<pre>
43 1 Владимир Ипатов
gntX# gnt-cluster master-failover
44 1 Владимир Ипатов
</pre>
45 1 Владимир Ипатов
46 1 Владимир Ипатов
h2. Failure of master node
47 1 Владимир Ипатов
48 1 Владимир Ипатов
Master node(in this example gnt1) is down by hardware failure.
49 1 Владимир Ипатов
50 1 Владимир Ипатов
Start management daemon on master-candidate(gntX):
51 1 Владимир Ипатов
<pre>
52 1 Владимир Ипатов
gntX# ganeti-masterd --no-voting
53 1 Владимир Ипатов
</pre>
54 1 Владимир Ипатов
55 1 Владимир Ипатов
Activate new master node:
56 1 Владимир Ипатов
<pre>
57 1 Владимир Ипатов
gntX# gnt-cluster master-failover --no-voting
58 1 Владимир Ипатов
</pre>
59 1 Владимир Ипатов
60 4 Владимир Ипатов
Set broken node to offline so master node don't try to connect it.
61 1 Владимир Ипатов
-С = master-candidate
62 1 Владимир Ипатов
-O = offline
63 1 Владимир Ипатов
<pre>
64 1 Владимир Ипатов
gnt# gnt-node modify -C no -O yes gntY
65 1 Владимир Ипатов
</pre>
66 1 Владимир Ипатов
67 3 Владимир Ипатов
Start all instances from broken node on backup node:
68 1 Владимир Ипатов
<pre>
69 1 Владимир Ипатов
gnt# gnt-node failover --ignore-consistency gnt1
70 1 Владимир Ипатов
</pre>
71 1 Владимир Ипатов
72 3 Владимир Ипатов
h2. Set broken node to online
73 1 Владимир Ипатов
74 3 Владимир Ипатов
Old master node will not start management daemon on boot:
75 3 Владимир Ипатов
* if it will not find other node,
76 3 Владимир Ипатов
* if it will find other node that is in master mode.
77 1 Владимир Ипатов
78 3 Владимир Ипатов
If data on this node is ok then to readd it in claster:
79 3 Владимир Ипатов
Copy new configuration on it from new master node:
80 1 Владимир Ипатов
<pre>
81 1 Владимир Ипатов
gnt# gnt-cluster redist-conf
82 1 Владимир Ипатов
</pre>
83 1 Владимир Ипатов
84 3 Владимир Ипатов
Restart ganeti daemons:
85 1 Владимир Ипатов
<pre>
86 1 Владимир Ипатов
gntX# /etc/init.d/ganeti restart
87 1 Владимир Ипатов
</pre>
88 1 Владимир Ипатов
89 3 Владимир Ипатов
h2. Planned node turning off for maintenance
90 1 Владимир Ипатов
91 3 Владимир Ипатов
Migrate all instances from this node to another
92 1 Владимир Ипатов
<pre>
93 3 Владимир Ипатов
gnt# gnt-instance migrate INSTANCE
94 1 Владимир Ипатов
</pre>
95 1 Владимир Ипатов
96 3 Владимир Ипатов
If turning off node is master then you must to assign new cluster master(see above *Master node change in normal mode*)
97 1 Владимир Ипатов
98 3 Владимир Ипатов
Set node to offline and not master-candidate:
99 1 Владимир Ипатов
<pre>
100 1 Владимир Ипатов
gnt# gnt-node modify -C no -O yes УЗЕЛ
101 1 Владимир Ипатов
</pre>
102 1 Владимир Ипатов
103 3 Владимир Ипатов
Now you can simply turn off this node
104 1 Владимир Ипатов
105 3 Владимир Ипатов
h3. Returning node to online
106 1 Владимир Ипатов
107 3 Владимир Ипатов
After boot set node online and master-candidate:
108 1 Владимир Ипатов
<pre>
109 1 Владимир Ипатов
gnt# gnt-node modify -C yes -O no УЗЕЛ
110 1 Владимир Ипатов
</pre>
111 1 Владимир Ипатов
112 3 Владимир Ипатов
However, if you have any doubt about node's health, you would rather exec this:
113 1 Владимир Ипатов
<pre>
114 1 Владимир Ипатов
gnt# gnt-node add --readd УЗЕЛ
115 1 Владимир Ипатов
</pre> 
116 1 Владимир Ипатов
117 3 Владимир Ипатов
Anyway, you must wait about 5 minutes until watcher daemon set up drbd resources or initiate set up by hand:
118 1 Владимир Ипатов
<pre>
119 1 Владимир Ипатов
gnt# gnt-cluster verify-disks
120 1 Владимир Ипатов
</pre>
121 1 Владимир Ипатов
122 1 Владимир Ипатов
123 3 Владимир Ипатов
h2. Node replace to new
124 1 Владимир Ипатов
125 3 Владимир Ипатов
Add node to cluster:
126 1 Владимир Ипатов
<pre>
127 1 Владимир Ипатов
gnt# gnt-node add --readd gntX
128 1 Владимир Ипатов
</pre>
129 1 Владимир Ипатов
130 3 Владимир Ипатов
For all instances which new node is secondary:
131 1 Владимир Ипатов
<pre>
132 1 Владимир Ипатов
gnt# gnt-instance replace-disks --submit -s INSTANCE
133 1 Владимир Ипатов
</pre>
134 1 Владимир Ипатов
135 3 Владимир Ипатов
Readd node to puppet:
136 1 Владимир Ипатов
<pre>
137 1 Владимир Ипатов
gnt# gnt-instance console sci
138 1 Владимир Ипатов
sci# puppetca --clean gnt1.fqdn
139 1 Владимир Ипатов
</pre>
140 1 Владимир Ипатов
141 1 Владимир Ипатов
<pre>
142 1 Владимир Ипатов
gntX# /var/lib/puppet/ssl/*
143 1 Владимир Ипатов
gntX# /etc/init.d/puppet restart
144 1 Владимир Ипатов
</pre>
145 1 Владимир Ипатов
146 3 Владимир Ипатов
h2. Hard disk replace
147 1 Владимир Ипатов
148 3 Владимир Ипатов
Copy partitions from existent hdd(allowed only for same mode disks):
149 1 Владимир Ипатов
<pre>
150 1 Владимир Ипатов
# sfdisk -d /dev/sda|sfdisk /dev/sdX
151 1 Владимир Ипатов
</pre>
152 3 Владимир Ипатов
Check:
153 1 Владимир Ипатов
<pre>
154 1 Владимир Ипатов
# fdisk -l
155 1 Владимир Ипатов
</pre>
156 3 Владимир Ипатов
add to RAID:
157 1 Владимир Ипатов
<pre>
158 1 Владимир Ипатов
# mdadm --manage /dev/md0 --add /dev/sdX1
159 1 Владимир Ипатов
# mdadm --manage /dev/md1 --add /dev/sdX2
160 1 Владимир Ипатов
# mdadm --manage /dev/md2 --add /dev/sdX3
161 1 Владимир Ипатов
</pre>
162 3 Владимир Ипатов
Check:
163 1 Владимир Ипатов
<pre>
164 1 Владимир Ипатов
cat /proc/mdstat
165 1 Владимир Ипатов
</pre>