Проект

Общее

Профиль

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

Владимир Ипатов, 24.10.2012 21:13

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 3 Владимир Ипатов
h2. Master node change in normal mode
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 3 Владимир Ипатов
Start all instances from broken node on backup node:
54 1 Владимир Ипатов
<pre>
55 1 Владимир Ипатов
gnt# gnt-node failover --ignore-consistency gnt1
56 1 Владимир Ипатов
</pre>
57 1 Владимир Ипатов
58 3 Владимир Ипатов
h2. Set broken node to online
59 1 Владимир Ипатов
60 3 Владимир Ипатов
Old master node will not start management daemon on boot:
61 3 Владимир Ипатов
* if it will not find other node,
62 3 Владимир Ипатов
* if it will find other node that is in master mode.
63 1 Владимир Ипатов
64 3 Владимир Ипатов
If data on this node is ok then to readd it in claster:
65 3 Владимир Ипатов
Copy new configuration on it from new master node:
66 1 Владимир Ипатов
<pre>
67 1 Владимир Ипатов
gnt# gnt-cluster redist-conf
68 1 Владимир Ипатов
</pre>
69 1 Владимир Ипатов
70 3 Владимир Ипатов
Restart ganeti daemons:
71 1 Владимир Ипатов
<pre>
72 1 Владимир Ипатов
gntX# /etc/init.d/ganeti restart
73 1 Владимир Ипатов
</pre>
74 1 Владимир Ипатов
75 3 Владимир Ипатов
h2. Planned node turning off for maintenance
76 1 Владимир Ипатов
77 3 Владимир Ипатов
Migrate all instances from this node to another
78 1 Владимир Ипатов
<pre>
79 3 Владимир Ипатов
gnt# gnt-instance migrate INSTANCE
80 1 Владимир Ипатов
</pre>
81 1 Владимир Ипатов
82 3 Владимир Ипатов
If turning off node is master then you must to assign new cluster master(see above *Master node change in normal mode*)
83 1 Владимир Ипатов
84 3 Владимир Ипатов
Set node to offline and not master-candidate:
85 1 Владимир Ипатов
<pre>
86 1 Владимир Ипатов
gnt# gnt-node modify -C no -O yes УЗЕЛ
87 1 Владимир Ипатов
</pre>
88 1 Владимир Ипатов
89 3 Владимир Ипатов
Now you can simply turn off this node
90 1 Владимир Ипатов
91 3 Владимир Ипатов
h3. Returning node to online
92 1 Владимир Ипатов
93 3 Владимир Ипатов
After boot set node online and master-candidate:
94 1 Владимир Ипатов
<pre>
95 1 Владимир Ипатов
gnt# gnt-node modify -C yes -O no УЗЕЛ
96 1 Владимир Ипатов
</pre>
97 1 Владимир Ипатов
98 3 Владимир Ипатов
However, if you have any doubt about node's health, you would rather exec this:
99 1 Владимир Ипатов
<pre>
100 1 Владимир Ипатов
gnt# gnt-node add --readd УЗЕЛ
101 1 Владимир Ипатов
</pre> 
102 1 Владимир Ипатов
103 3 Владимир Ипатов
Anyway, you must wait about 5 minutes until watcher daemon set up drbd resources or initiate set up by hand:
104 1 Владимир Ипатов
<pre>
105 1 Владимир Ипатов
gnt# gnt-cluster verify-disks
106 1 Владимир Ипатов
</pre>
107 1 Владимир Ипатов
108 1 Владимир Ипатов
109 3 Владимир Ипатов
h2. Node replace to new
110 1 Владимир Ипатов
111 3 Владимир Ипатов
Add node to cluster:
112 1 Владимир Ипатов
<pre>
113 1 Владимир Ипатов
gnt# gnt-node add --readd gntX
114 1 Владимир Ипатов
</pre>
115 1 Владимир Ипатов
116 3 Владимир Ипатов
For all instances which new node is secondary:
117 1 Владимир Ипатов
<pre>
118 1 Владимир Ипатов
gnt# gnt-instance replace-disks --submit -s INSTANCE
119 1 Владимир Ипатов
</pre>
120 1 Владимир Ипатов
121 3 Владимир Ипатов
Readd node to puppet:
122 1 Владимир Ипатов
<pre>
123 1 Владимир Ипатов
gnt# gnt-instance console sci
124 1 Владимир Ипатов
sci# puppetca --clean gnt1.fqdn
125 1 Владимир Ипатов
</pre>
126 1 Владимир Ипатов
127 1 Владимир Ипатов
<pre>
128 1 Владимир Ипатов
gntX# /var/lib/puppet/ssl/*
129 1 Владимир Ипатов
gntX# /etc/init.d/puppet restart
130 1 Владимир Ипатов
</pre>
131 1 Владимир Ипатов
132 3 Владимир Ипатов
h2. Hard disk replace
133 1 Владимир Ипатов
134 3 Владимир Ипатов
Copy partitions from existent hdd(allowed only for same mode disks):
135 1 Владимир Ипатов
<pre>
136 1 Владимир Ипатов
# sfdisk -d /dev/sda|sfdisk /dev/sdX
137 1 Владимир Ипатов
</pre>
138 3 Владимир Ипатов
Check:
139 1 Владимир Ипатов
<pre>
140 1 Владимир Ипатов
# fdisk -l
141 1 Владимир Ипатов
</pre>
142 3 Владимир Ипатов
add to RAID:
143 1 Владимир Ипатов
<pre>
144 1 Владимир Ипатов
# mdadm --manage /dev/md0 --add /dev/sdX1
145 1 Владимир Ипатов
# mdadm --manage /dev/md1 --add /dev/sdX2
146 1 Владимир Ипатов
# mdadm --manage /dev/md2 --add /dev/sdX3
147 1 Владимир Ипатов
</pre>
148 3 Владимир Ипатов
Check:
149 1 Владимир Ипатов
<pre>
150 1 Владимир Ипатов
cat /proc/mdstat
151 1 Владимир Ипатов
</pre>