Projet

Général

Profil

Cluster Ganeti » Historique » Version 23

Laurent GUERBY, 02/06/2012 18:47

1 16 Mehdi Abaakouk
h1. Cluster Ganeti
2 1 Mehdi Abaakouk
3 9 Mehdi Abaakouk
{{>toc}}
4 9 Mehdi Abaakouk
5 18 Laurent GUERBY
h2. Installation from scratch
6 18 Laurent GUERBY
7 23 Laurent GUERBY
h3. Ganeti
8 23 Laurent GUERBY
9 18 Laurent GUERBY
apt-get install ganeti2
10 1 Mehdi Abaakouk
11 23 Laurent GUERBY
h2. config LVM DRBD
12 18 Laurent GUERBY
13 23 Laurent GUERBY
/etc/lvm/lvm.conf
14 1 Mehdi Abaakouk
15 23 Laurent GUERBY
changer le filter lvm dans /etc/lvm/lvm.conf pour
16 23 Laurent GUERBY
17 18 Laurent GUERBY
<pre>
18 18 Laurent GUERBY
# filter = [ "a/.*/" ]
19 18 Laurent GUERBY
filter = ["r|/dev/cdrom|", "r|/dev/drbd[0-9]+|" ]
20 1 Mehdi Abaakouk
</pre>
21 18 Laurent GUERBY
22 23 Laurent GUERBY
Evite les soucis avec DRBD
23 1 Mehdi Abaakouk
24 23 Laurent GUERBY
h2. DRBD
25 23 Laurent GUERBY
26 19 Laurent GUERBY
* activer drbd
27 19 Laurent GUERBY
28 19 Laurent GUERBY
<pre>
29 19 Laurent GUERBY
# echo "option drbd minor_count=128 usermode_helper=/bin/true" >> /etc/modprobe.d/drbd-ganeti.conf
30 19 Laurent GUERBY
# rmmod drbd
31 19 Laurent GUERBY
# modprobe drbd
32 19 Laurent GUERBY
# cat /sys/module/drbd/parameters/usermode_helper 
33 1 Mehdi Abaakouk
/bin/true
34 19 Laurent GUERBY
</pre>
35 1 Mehdi Abaakouk
36 23 Laurent GUERBY
h2. Partition
37 1 Mehdi Abaakouk
38 23 Laurent GUERBY
* fdisk et LVM
39 23 Laurent GUERBY
40 23 Laurent GUERBY
<pre>
41 1 Mehdi Abaakouk
fdisk /dev/sda
42 1 Mehdi Abaakouk
new primary part
43 19 Laurent GUERBY
hex code 8e
44 23 Laurent GUERBY
</pre>
45 23 Laurent GUERBY
46 19 Laurent GUERBY
partprobe
47 19 Laurent GUERBY
pvcreate /dev/sda2 
48 1 Mehdi Abaakouk
vgcreate vg_ganeti /dev/sda2
49 19 Laurent GUERBY
50 18 Laurent GUERBY
51 23 Laurent GUERBY
S'il existe deja vider le volume group et le recreer
52 18 Laurent GUERBY
53 18 Laurent GUERBY
<pre>
54 18 Laurent GUERBY
pvs
55 1 Mehdi Abaakouk
vgs
56 1 Mehdi Abaakouk
lvs
57 18 Laurent GUERBY
lvremove
58 18 Laurent GUERBY
vgcreate kvmvg /dev/sdb... #TODO check
59 18 Laurent GUERBY
</pre>
60 18 Laurent GUERBY
61 23 Laurent GUERBY
h3. Network
62 23 Laurent GUERBY
63 20 Laurent GUERBY
<pre>
64 20 Laurent GUERBY
# dans /etc/network/interfaces
65 20 Laurent GUERBY
# The primary network interface
66 20 Laurent GUERBY
auto eth0
67 20 Laurent GUERBY
iface eth0 inet manual
68 20 Laurent GUERBY
69 20 Laurent GUERBY
# dans /etc/rc.local     
70 20 Laurent GUERBY
ip l set eth0 up    
71 20 Laurent GUERBY
                    
72 20 Laurent GUERBY
brctl addbr ganeti-br0
73 20 Laurent GUERBY
ip li set ganeti-br0 up
74 1 Mehdi Abaakouk
brctl addif ganeti-br0 eth0
75 20 Laurent GUERBY
                    
76 20 Laurent GUERBY
ip a a 10.42.0.13/24 dev ganeti-br0
77 20 Laurent GUERBY
ip r a default via 10.42.0.1 
78 20 Laurent GUERBY
              
79 20 Laurent GUERBY
</pre>
80 18 Laurent GUERBY
81 23 Laurent GUERBY
h3. DNS
82 21 Laurent GUERBY
83 1 Mehdi Abaakouk
<pre>
84 1 Mehdi Abaakouk
# Dans /etc/hosts              
85 21 Laurent GUERBY
10.42.0.10 tmaster.thsf tmaster
86 21 Laurent GUERBY
10.42.0.11 t1.thsf t1     
87 21 Laurent GUERBY
10.42.0.12 t2.thsf t2
88 21 Laurent GUERBY
10.42.0.13 t3.thsf t3
89 21 Laurent GUERBY
</pre>
90 23 Laurent GUERBY
91 23 Laurent GUERBY
h3. Ganeti Service
92 21 Laurent GUERBY
93 21 Laurent GUERBY
On master
94 21 Laurent GUERBY
95 21 Laurent GUERBY
<pre>
96 21 Laurent GUERBY
gnt-cluster init --nic-parameters mode=bridged,link=ganeti-br0 --master-netdev=ganeti-br0 \                       
97 21 Laurent GUERBY
 --vg-name vg_ganeti --enabled-hypervisors=kvm tmaster.thsf
98 21 Laurent GUERBY
99 21 Laurent GUERBY
# to add second machine
100 21 Laurent GUERBY
gnt-node add t2
101 21 Laurent GUERBY
102 21 Laurent GUERBY
# add sid
103 21 Laurent GUERBY
root@t3:~# cat /etc/apt/sources.list
104 21 Laurent GUERBY
# deb http://ftp2.fr.debian.org/debian/ wheezy main
105 21 Laurent GUERBY
106 21 Laurent GUERBY
deb http://ftp2.fr.debian.org/debian/ wheezy main
107 21 Laurent GUERBY
deb-src http://ftp2.fr.debian.org/debian/ wheezy main
108 21 Laurent GUERBY
109 21 Laurent GUERBY
deb http://security.debian.org/ wheezy/updates main
110 21 Laurent GUERBY
deb-src http://security.debian.org/ wheezy/updates main
111 21 Laurent GUERBY
112 21 Laurent GUERBY
deb http://ftp2.fr.debian.org/debian/ sid main
113 21 Laurent GUERBY
deb-src http://ftp2.fr.debian.org/debian/ sid main
114 21 Laurent GUERBY
115 21 Laurent GUERBY
root@t3:~# cat /etc/apt/preferences
116 21 Laurent GUERBY
Package: *
117 21 Laurent GUERBY
Pin: release a=unstable
118 21 Laurent GUERBY
Pin-priority: 10
119 21 Laurent GUERBY
120 21 Laurent GUERBY
121 21 Laurent GUERBY
# to create vm
122 21 Laurent GUERBY
apt-get install ganeti-htools ganeti ganeti-instance-debootstrap
123 21 Laurent GUERBY
124 22 Laurent GUERBY
#/etc/hosts
125 22 Laurent GUERBY
10.42.0.101 vm1.thsf vm1
126 22 Laurent GUERBY
127 22 Laurent GUERBY
gnt-cluster copyfile /etc/hosts
128 22 Laurent GUERBY
129 22 Laurent GUERBY
gnt-instance add -H kernel_path=/boot/vmlinuz-3.2.0-2-amd64,initrd_path=/boot/initrd.img-3.2.0-2-amd64 \
130 22 Laurent GUERBY
-t drbd -B memory=512M,vcpus=1 --disk 0:size=5G -I hail -o debootstrap+default vm1.thsf
131 22 Laurent GUERBY
132 21 Laurent GUERBY
</pre>
133 21 Laurent GUERBY
134 21 Laurent GUERBY
135 10 Mehdi Abaakouk
h2. Administration des VMs
136 1 Mehdi Abaakouk
137 18 Laurent GUERBY
138 18 Laurent GUERBY
139 10 Mehdi Abaakouk
h3. Demarrer et arrêter une instance ?
140 1 Mehdi Abaakouk
141 10 Mehdi Abaakouk
<pre>
142 10 Mehdi Abaakouk
gnt-instance start vm1
143 10 Mehdi Abaakouk
gnt-instance stop vm1
144 10 Mehdi Abaakouk
</pre>
145 1 Mehdi Abaakouk
146 10 Mehdi Abaakouk
h3. Comment tout savoir sur une vm ?
147 1 Mehdi Abaakouk
148 1 Mehdi Abaakouk
<pre>
149 1 Mehdi Abaakouk
gnt-instance info vm1
150 1 Mehdi Abaakouk
</pre>
151 1 Mehdi Abaakouk
152 10 Mehdi Abaakouk
h3. Déplacement le(s) disque(s) dur d'une VM
153 1 Mehdi Abaakouk
154 1 Mehdi Abaakouk
Si la machine a ces disques au format plain (sans drbd), taper:
155 1 Mehdi Abaakouk
156 1 Mehdi Abaakouk
<pre>
157 1 Mehdi Abaakouk
gnt-instance stop vm1
158 1 Mehdi Abaakouk
gnt-instance move -n h6 vm1
159 1 Mehdi Abaakouk
gnt-instance start vm1
160 1 Mehdi Abaakouk
</pre>
161 1 Mehdi Abaakouk
162 1 Mehdi Abaakouk
Si la machine utilise drbd (uniquement le disque de la node secondaire bascule):
163 1 Mehdi Abaakouk
164 1 Mehdi Abaakouk
<pre>
165 1 Mehdi Abaakouk
gnt-instance replace-disks -n h6 vm1
166 1 Mehdi Abaakouk
</pre>
167 10 Mehdi Abaakouk
168 1 Mehdi Abaakouk
Si vous voulais déplacer l'autre disque du drbd, il faut basculer la machine, puis refaire la même chose
169 1 Mehdi Abaakouk
170 10 Mehdi Abaakouk
h3. Basculer/migrer une machine qui utilise drbd
171 1 Mehdi Abaakouk
172 1 Mehdi Abaakouk
Bascule avec arret de la machine:
173 1 Mehdi Abaakouk
174 1 Mehdi Abaakouk
<pre>
175 1 Mehdi Abaakouk
gnt-instance failover vm1
176 1 Mehdi Abaakouk
</pre>
177 1 Mehdi Abaakouk
178 10 Mehdi Abaakouk
Sans arrêt, migration à chaud:
179 10 Mehdi Abaakouk
180 1 Mehdi Abaakouk
<pre>
181 1 Mehdi Abaakouk
gnt-instance migrate vm1
182 1 Mehdi Abaakouk
</pre>
183 10 Mehdi Abaakouk
184 1 Mehdi Abaakouk
En cas de soucis primaire/secondaire:
185 1 Mehdi Abaakouk
186 1 Mehdi Abaakouk
<pre>
187 1 Mehdi Abaakouk
gnt-instance migrate --cleanup vm1
188 1 Mehdi Abaakouk
</pre>
189 1 Mehdi Abaakouk
190 10 Mehdi Abaakouk
h3. Création d'une machine
191 1 Mehdi Abaakouk
192 10 Mehdi Abaakouk
Un script est présent sur h1 voici ca doc:
193 10 Mehdi Abaakouk
<pre>
194 10 Mehdi Abaakouk
# /root/gnt-addvm
195 10 Mehdi Abaakouk
usage: gnt-addvm [options] VIRTUAL_MACHINE_HOSTNAME
196 10 Mehdi Abaakouk
       -o OS | --os OS          OS can be default natty32 natty64 sid64 squeeze32 squeeze64 wheezy64
197 10 Mehdi Abaakouk
       -s SIZE | --size SIZE    default SIZE is 10G
198 10 Mehdi Abaakouk
       -m MEM | --mem MEM       default MEM is 256M
199 10 Mehdi Abaakouk
       -c CPU | --cpu CPU               default CPU is 1
200 10 Mehdi Abaakouk
       -n NODES | --nodes NODES         default NODES is
201 10 Mehdi Abaakouk
       -d MODE | --disk MODE      default MODE is drbd
202 10 Mehdi Abaakouk
       -q | --quick             don't wait drbd sync
203 10 Mehdi Abaakouk
       --dry-run                        show executed command
204 10 Mehdi Abaakouk
       --cdrom PATH             installation from iso file
205 10 Mehdi Abaakouk
</pre>
206 1 Mehdi Abaakouk
207 10 Mehdi Abaakouk
208 10 Mehdi Abaakouk
h3. Supprimer une machine
209 10 Mehdi Abaakouk
210 1 Mehdi Abaakouk
<pre>
211 10 Mehdi Abaakouk
gnt-instance remove vm1
212 1 Mehdi Abaakouk
</pre>
213 1 Mehdi Abaakouk
214 10 Mehdi Abaakouk
si la vm est en drbd et que une des nodes du drbd ne fonctionne plus
215 10 Mehdi Abaakouk
216 1 Mehdi Abaakouk
<pre>
217 10 Mehdi Abaakouk
gnt-instance remove --ignore-failures vm1
218 1 Mehdi Abaakouk
</pre>
219 1 Mehdi Abaakouk
220 10 Mehdi Abaakouk
221 14 Mehdi Abaakouk
h3. Changer les cractéristique d'une VM, upgrade disk, net, cpu, mem
222 10 Mehdi Abaakouk
223 10 Mehdi Abaakouk
Et hop une nouvelle carte réseau sur le vlan tsf
224 1 Mehdi Abaakouk
<pre>
225 10 Mehdi Abaakouk
gnt-instance  modify --net add:link=br1 vm1
226 1 Mehdi Abaakouk
</pre>
227 1 Mehdi Abaakouk
228 10 Mehdi Abaakouk
Un petit disk en plus
229 10 Mehdi Abaakouk
<pre>
230 10 Mehdi Abaakouk
gnt-instance  modify --disk add:size=50G vm1
231 10 Mehdi Abaakouk
</pre>
232 1 Mehdi Abaakouk
233 10 Mehdi Abaakouk
Un petite upgrade cpu et mémoire
234 10 Mehdi Abaakouk
<pre>
235 10 Mehdi Abaakouk
gnt-instance modify -B vcpus=2,memory=512M vm1
236 10 Mehdi Abaakouk
</pre>
237 1 Mehdi Abaakouk
238 10 Mehdi Abaakouk
Reboot pour prendre en compte le tout
239 1 Mehdi Abaakouk
<pre>
240 10 Mehdi Abaakouk
gnt-instance reboot -t full vm1
241 1 Mehdi Abaakouk
</pre>
242 1 Mehdi Abaakouk
243 10 Mehdi Abaakouk
== Je voudrais bien booter mon kernel ! ou un cdrom==
244 10 Mehdi Abaakouk
Je peux désactivé le kernel commun pour une vm
245 1 Mehdi Abaakouk
246 10 Mehdi Abaakouk
<pre>
247 10 Mehdi Abaakouk
gnt-instance modify -H kernel_path="" vm1
248 10 Mehdi Abaakouk
</pre>
249 10 Mehdi Abaakouk
Ou booter sur le cdrom pour le prochain démarrage commme ceci:
250 1 Mehdi Abaakouk
251 1 Mehdi Abaakouk
<pre>
252 10 Mehdi Abaakouk
gnt-instance start -H boot_order=cdrom,cdrom_image_path=/path/to/debian-504-amd64-netinst.iso vm1
253 1 Mehdi Abaakouk
</pre>
254 1 Mehdi Abaakouk
255 10 Mehdi Abaakouk
256 10 Mehdi Abaakouk
h3. Relocalisé les disques secondaires si un serveur est HS.
257 10 Mehdi Abaakouk
258 10 Mehdi Abaakouk
Ceci déplace le disque redondant (qui n'est plus présent si le serveur est HS) est le reconstruit sur un autre serveur
259 10 Mehdi Abaakouk
260 1 Mehdi Abaakouk
<pre>
261 10 Mehdi Abaakouk
gnt-instance replace-disks -I hail vm1
262 1 Mehdi Abaakouk
</pre>
263 1 Mehdi Abaakouk
264 1 Mehdi Abaakouk
265 11 Mehdi Abaakouk
h3. Importer une image disque venant de l’extérieur
266 11 Mehdi Abaakouk
267 11 Mehdi Abaakouk
Convertion de l'image au format raw (si c'est pas déjà le cas)
268 11 Mehdi Abaakouk
<pre>
269 11 Mehdi Abaakouk
kvm-img convert DISQUEVM.qcow -O raw DISQUEVM.raw
270 11 Mehdi Abaakouk
</pre>
271 11 Mehdi Abaakouk
272 11 Mehdi Abaakouk
Copie du disque au format raw sur un lvm
273 11 Mehdi Abaakouk
<pre>
274 11 Mehdi Abaakouk
size=$(kvm-img info DISQUEVM.raw | sed -n -e 's/^virtual size:[^(]*(\([[:digit:]]*\).*)/\1/gp')
275 11 Mehdi Abaakouk
lvcreate -L ${size}b -n lv_migration_DISQUEVM kvmvg
276 11 Mehdi Abaakouk
dd if=DISQUEVM.raw of=/dev/kvmvg/lv_migration_DISQUEVM
277 11 Mehdi Abaakouk
</pre>
278 11 Mehdi Abaakouk
279 11 Mehdi Abaakouk
Création de la VM
280 11 Mehdi Abaakouk
<pre>
281 11 Mehdi Abaakouk
gnt-instance add -B memory=512M --no-start -t plain -n $(hostname) --disk 0:adopt=lv_migration_DISQUEVM --net 0 -o debootstrap+default VMNAME.tetaneutral.net
282 11 Mehdi Abaakouk
</pre>
283 11 Mehdi Abaakouk
284 11 Mehdi Abaakouk
Et pour finir, on transforme le format de disque de la VM en drbd:
285 11 Mehdi Abaakouk
<pre>
286 11 Mehdi Abaakouk
gnt-instance modify -t drbd -n h6 VMNAME.tetaneutral.net
287 11 Mehdi Abaakouk
</pre>
288 11 Mehdi Abaakouk
289 17 Mehdi Abaakouk
h3. Copier une VM sur une autre machine
290 11 Mehdi Abaakouk
291 11 Mehdi Abaakouk
Seul la machine *h1* a l'espace configurer pour faire des dumps de machine virtuelle.
292 11 Mehdi Abaakouk
293 11 Mehdi Abaakouk
On lance un backup de celle-ci (attention cette commande *éteint* la machine):
294 11 Mehdi Abaakouk
<pre>
295 11 Mehdi Abaakouk
gnt-backup export -n h1 sileht2
296 11 Mehdi Abaakouk
</pre>
297 11 Mehdi Abaakouk
298 11 Mehdi Abaakouk
Les fichiers sont ensuite sur h1 dans /exports/sileht2.tetaneutral.net/
299 11 Mehdi Abaakouk
300 11 Mehdi Abaakouk
Le fichier qui nous intéresse est celui qui fini par *.snap* qui est le disque dur au format raw de la VM, dans mon cas:
301 11 Mehdi Abaakouk
<pre>
302 11 Mehdi Abaakouk
09d836a0-22e0-4ea4-9104-c301351bb2e2.disk0_data.snap
303 11 Mehdi Abaakouk
</pre>
304 11 Mehdi Abaakouk
305 11 Mehdi Abaakouk
Pour la démonstration je copie ce fichier sur h2:
306 11 Mehdi Abaakouk
<pre>
307 11 Mehdi Abaakouk
scp /exportfs/sileht2.tetaneutral.net/09d836a0-22e0-4ea4-9104-c301351bb2e2.disk0_data.snap h2:/root/sileht.raw
308 11 Mehdi Abaakouk
</pre>
309 11 Mehdi Abaakouk
310 11 Mehdi Abaakouk
Et je le test avec kvm:
311 11 Mehdi Abaakouk
<pre>
312 11 Mehdi Abaakouk
kvm -m 256 -drive file=sileht.raw,format=raw,if=virtio,boot=on,cache=writeback -usbdevice tablet -netdev type=tap,id=netdev0,fd=10 -device virtio-net-pci,mac=aa:00:00:62:e3:a0,netdev=netdev0
313 11 Mehdi Abaakouk
</pre>
314 1 Mehdi Abaakouk
315 15 Mehdi Abaakouk
A savoir l'image utilise les pilotes kvm "virtio", si on souhaite utiliser la VM avec un autre logiciel de virtualisation,
316 15 Mehdi Abaakouk
il faudra modifié le fstab pour mettre /dev/sda1 au lieu de /dev/vda1 et supprimer le fichier /etc/udev/rules.d/70-persistent-net.rules
317 11 Mehdi Abaakouk
318 14 Mehdi Abaakouk
h3. Monter une partition de machine virtuelle sur la machine hôte (!Attention DANGER!)
319 11 Mehdi Abaakouk
320 11 Mehdi Abaakouk
Arret de la machine et activation des disques
321 11 Mehdi Abaakouk
<pre>
322 11 Mehdi Abaakouk
 $ gnt-instance stop VMNAME.tetaneutral.net
323 11 Mehdi Abaakouk
 $ gnt-instance activate-disks VMNAME.tetaneutral.net
324 11 Mehdi Abaakouk
 h1.tetaneutral.net:disk/0:/dev/drbd34
325 11 Mehdi Abaakouk
</pre>
326 11 Mehdi Abaakouk
327 11 Mehdi Abaakouk
Ensuite pour voir les partitions du disque, ici le /dev/drbd34:
328 11 Mehdi Abaakouk
<pre>
329 11 Mehdi Abaakouk
kpartx -l /dev/drbd34
330 11 Mehdi Abaakouk
</pre>
331 11 Mehdi Abaakouk
332 11 Mehdi Abaakouk
On créé ensuite les partitions dans /dev avec devmapper
333 11 Mehdi Abaakouk
<pre>
334 11 Mehdi Abaakouk
kpartx -a /dev/drbd34
335 11 Mehdi Abaakouk
ls -la /dev/mapper/drbd34*
336 11 Mehdi Abaakouk
</pre>
337 11 Mehdi Abaakouk
338 11 Mehdi Abaakouk
A partir de maintenant on peut faire mumuse avec la partition, exemple:
339 11 Mehdi Abaakouk
<pre>
340 11 Mehdi Abaakouk
mount /dev/mapper/drbd34p1 /mnt/
341 11 Mehdi Abaakouk
....
342 11 Mehdi Abaakouk
umount /mnt
343 11 Mehdi Abaakouk
</pre>
344 11 Mehdi Abaakouk
345 11 Mehdi Abaakouk
Puis *très important*, il faut nettoyer devmapper et déactiver les disk pour ganeti
346 11 Mehdi Abaakouk
347 11 Mehdi Abaakouk
<pre>
348 11 Mehdi Abaakouk
kpartx -d /dev/drbd34
349 11 Mehdi Abaakouk
gnt-instance deactivate-disks VMNAME.tetaneutral.net
350 11 Mehdi Abaakouk
gnt-instance start VMNAME.tetaneutral.net
351 11 Mehdi Abaakouk
</pre>
352 11 Mehdi Abaakouk
353 1 Mehdi Abaakouk
h2. Administration des serveurs/nodes
354 10 Mehdi Abaakouk
355 10 Mehdi Abaakouk
h3. Éteindre/rebooter provisoirement un des serveurs sans coupure de service
356 10 Mehdi Abaakouk
357 10 Mehdi Abaakouk
La procédure est la suivante:
358 10 Mehdi Abaakouk
 - migration des machines virtuelles sur leurs secondaires
359 10 Mehdi Abaakouk
 - Arret/Ralummage ou reboot du serveur
360 10 Mehdi Abaakouk
 - remigration des machines virtuelles sur le serveur hX
361 1 Mehdi Abaakouk
362 10 Mehdi Abaakouk
<pre>
363 10 Mehdi Abaakouk
gnt-node migrate hX
364 10 Mehdi Abaakouk
shutdown -h now # ou reboot
365 1 Mehdi Abaakouk
hbal -L --no-disk-moves -X
366 1 Mehdi Abaakouk
</pre>
367 10 Mehdi Abaakouk
368 10 Mehdi Abaakouk
La resynchro drbd est automatique.
369 10 Mehdi Abaakouk
370 10 Mehdi Abaakouk
h3. L'extinction d'une node proprement dans le but de la désactivé du cluster
371 1 Mehdi Abaakouk
372 10 Mehdi Abaakouk
<pre>
373 10 Mehdi Abaakouk
gnt-node migrate hX # gnt-node failover hX
374 10 Mehdi Abaakouk
gnt-node evacuate -I hail hX
375 1 Mehdi Abaakouk
gnt-node modify -O yes hX
376 1 Mehdi Abaakouk
</pre>
377 10 Mehdi Abaakouk
378 1 Mehdi Abaakouk
Ici toutes les VMs seront migrés et les données auront été déplacé vers les autres nodes.
379 10 Mehdi Abaakouk
380 1 Mehdi Abaakouk
h3. Vérifier l'état du cluster
381 10 Mehdi Abaakouk
382 10 Mehdi Abaakouk
Sur le masternode normalement h1 faire:
383 1 Mehdi Abaakouk
384 10 Mehdi Abaakouk
<pre>
385 1 Mehdi Abaakouk
gnt-cluster verify
386 1 Mehdi Abaakouk
</pre>
387 10 Mehdi Abaakouk
388 1 Mehdi Abaakouk
h3. Change le node principal (masternode) de "ganeti", celui qui permet de lancer des commandes ganeti.
389 10 Mehdi Abaakouk
390 1 Mehdi Abaakouk
Allez sur un node, taper ceci et il deviendra "maternode":
391 1 Mehdi Abaakouk
392 1 Mehdi Abaakouk
<pre>
393 1 Mehdi Abaakouk
gnt-node masterfailover
394 1 Mehdi Abaakouk
</pre>
395 10 Mehdi Abaakouk
396 1 Mehdi Abaakouk
h3. Gestion des fichiers de configuration (ie: /etc/ganeti, /etc/hosts, /etc/rc.local, ...)
397 10 Mehdi Abaakouk
398 1 Mehdi Abaakouk
Tous les fichiers de configuration à synchroniser entre toutes les nodes du cluster sont contenues dans ce script:
399 1 Mehdi Abaakouk
400 1 Mehdi Abaakouk
<pre>
401 1 Mehdi Abaakouk
/etc/ganeti/pushconf.sh
402 1 Mehdi Abaakouk
</pre>
403 10 Mehdi Abaakouk
404 1 Mehdi Abaakouk
Le lancer recopie ces fichiers du masternode vers les autres nodes.
405 10 Mehdi Abaakouk
406 10 Mehdi Abaakouk
h3. Désactiver un serveur qui serait HS du cluster provisoirement.
407 10 Mehdi Abaakouk
408 10 Mehdi Abaakouk
On bascule les machines qui n'ont pas le failover en automatique
409 10 Mehdi Abaakouk
410 10 Mehdi Abaakouk
<pre>
411 10 Mehdi Abaakouk
gnt-node failover [ --ignore-consistency ] h2
412 10 Mehdi Abaakouk
</pre>
413 10 Mehdi Abaakouk
414 10 Mehdi Abaakouk
le --ignore-consistency permet de forcer ganeti à ne pas contrôler le disk avant le basculement
415 10 Mehdi Abaakouk
416 10 Mehdi Abaakouk
On peux (optionnellement) déplacer les disques durs secondaires des VMs
417 10 Mehdi Abaakouk
418 10 Mehdi Abaakouk
gnt-node evacuate [--early-release]  -I hail hX
419 10 Mehdi Abaakouk
420 10 Mehdi Abaakouk
le --early-release permet de forcer ganeti à ne pas contrôler le disk avant le basculement (utile si le disk de h2 est HS)
421 10 Mehdi Abaakouk
422 10 Mehdi Abaakouk
Puis on désactive la node:
423 10 Mehdi Abaakouk
424 10 Mehdi Abaakouk
<pre>
425 10 Mehdi Abaakouk
gnt-node modify -O yes h2
426 10 Mehdi Abaakouk
</pre>
427 10 Mehdi Abaakouk
428 1 Mehdi Abaakouk
429 11 Mehdi Abaakouk
h3. Réinsertion dans le cluster d'un node désactivé
430 10 Mehdi Abaakouk
431 10 Mehdi Abaakouk
- On réactive la node
432 10 Mehdi Abaakouk
- On remet dessus des machines et des disques en répartissant la charge du cluster
433 10 Mehdi Abaakouk
434 10 Mehdi Abaakouk
<pre>
435 10 Mehdi Abaakouk
gnt-node modify -O no h2
436 10 Mehdi Abaakouk
hbal -L -X
437 10 Mehdi Abaakouk
</pre>
438 10 Mehdi Abaakouk
439 10 Mehdi Abaakouk
440 10 Mehdi Abaakouk
h2. Setup d'un nouveau NODE
441 10 Mehdi Abaakouk
442 10 Mehdi Abaakouk
h3. Installation
443 10 Mehdi Abaakouk
444 1 Mehdi Abaakouk
* Installer squeeze basique avec juste ssh
445 1 Mehdi Abaakouk
* Ajouter wheezy dans /etc/apt/sources.list
446 1 Mehdi Abaakouk
447 1 Mehdi Abaakouk
<pre>
448 1 Mehdi Abaakouk
# deb http://ftp.fr.debian.org/debian/ squeeze main
449 1 Mehdi Abaakouk
deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
450 1 Mehdi Abaakouk
deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
451 1 Mehdi Abaakouk
deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
452 1 Mehdi Abaakouk
deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
453 1 Mehdi Abaakouk
deb http://ftp.de.debian.org/debian-backports/ squeeze-backports main contrib non-free
454 1 Mehdi Abaakouk
deb-src http://ftp.de.debian.org/debian-backports/ squeeze-backports main contrib non-free
455 3 Mehdi Abaakouk
deb http://security.debian.org/ squeeze/updates main
456 3 Mehdi Abaakouk
deb-src http://security.debian.org/ squeeze/updates main
457 4 Mehdi Abaakouk
# squeeze-updates, previously known as 'volatile'
458 3 Mehdi Abaakouk
deb http://ftp.fr.debian.org/debian/ squeeze-updates main
459 1 Mehdi Abaakouk
deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main
460 8 Mehdi Abaakouk
</pre>
461 8 Mehdi Abaakouk
462 8 Mehdi Abaakouk
* Allouer un port avec 3131, 3175, 3195 tagged sur le procurve
463 8 Mehdi Abaakouk
* Monter le reseau manuellement IP X
464 7 Mehdi Abaakouk
465 8 Mehdi Abaakouk
<pre>
466 7 Mehdi Abaakouk
ip link add link eth0 name eth0.3131 type vlan id 3131
467 8 Mehdi Abaakouk
ip link set eth0.3131 up
468 7 Mehdi Abaakouk
ip addr add 91.224.149.15X/25 dev eth0.3131
469 8 Mehdi Abaakouk
</pre>
470 8 Mehdi Abaakouk
471 8 Mehdi Abaakouk
* Creer /etc/rc.local.conf avec X et Y
472 7 Mehdi Abaakouk
473 5 Mehdi Abaakouk
<pre>
474 5 Mehdi Abaakouk
IP_3131="91.224.149.15X/25"
475 6 Mehdi Abaakouk
GW_3131="91.224.149.254"
476 5 Mehdi Abaakouk
IP_3175="192.168.3.Y/24"
477 1 Mehdi Abaakouk
KVM_DISKS="sdb"
478 5 Mehdi Abaakouk
</pre>
479 1 Mehdi Abaakouk
480 1 Mehdi Abaakouk
* Installer les packages
481 1 Mehdi Abaakouk
482 1 Mehdi Abaakouk
<pre>
483 1 Mehdi Abaakouk
#TODO liste en fichier commit qqpart
484 1 Mehdi Abaakouk
#TODO: passer a une version compilée en local de ganeti pour eviter les update de version wheezy
485 1 Mehdi Abaakouk
dpkg --get-selections | ssh root@h48 dpkg --set-selections
486 1 Mehdi Abaakouk
ssh root@h48 apt-get dselect-upgrade
487 5 Mehdi Abaakouk
</pre>
488 5 Mehdi Abaakouk
489 6 Mehdi Abaakouk
490 6 Mehdi Abaakouk
491 5 Mehdi Abaakouk
* munin:
492 5 Mehdi Abaakouk
dans /etc/munin/munin-node.conf ajouter: allow ^91\.224\.149\.194$
493 5 Mehdi Abaakouk
* TODO patch munin Loic
494 1 Mehdi Abaakouk
http://trac.fsffrance.org/wiki/PatchInventory#Munin
495 5 Mehdi Abaakouk
* reboot
496 1 Mehdi Abaakouk
* Installer le node dans le cluster ganeti apres s'etre assure que la version de ganeti est bien la meme
497 5 Mehdi Abaakouk
498 1 Mehdi Abaakouk
<pre>
499 1 Mehdi Abaakouk
dpkg -l|grep -i ganeti
500 5 Mehdi Abaakouk
gnt-node add h48
501 5 Mehdi Abaakouk
/etc/ganeti/pushconf.sh
502 5 Mehdi Abaakouk
</pre>
503 5 Mehdi Abaakouk
504 5 Mehdi Abaakouk
Appliquer ce patch à ganeti-instance-debootstrap:
505 5 Mehdi Abaakouk
506 5 Mehdi Abaakouk
<pre>
507 5 Mehdi Abaakouk
--- /usr/share/ganeti/os/debootstrap/common.sh.ori  2010-09-15 22:34:12.000000000 +0200
508 5 Mehdi Abaakouk
+++ /usr/share/ganeti/os/debootstrap/common.sh  2011-07-27 12:33:55.695617766 +0200
509 5 Mehdi Abaakouk
@@ -91,7 +91,7 @@
510 5 Mehdi Abaakouk
# some versions of sfdisk need manual specification of
511 1 Mehdi Abaakouk
# head/sectors for devices such as drbd which don't
512 5 Mehdi Abaakouk
# report geometry
513 5 Mehdi Abaakouk
-  sfdisk -H 255 -S 63 --quiet --Linux "$1" <<EOF
514 5 Mehdi Abaakouk
+  sfdisk -H 255 -S 63 -D --quiet --Linux "$1" <<EOF
515 6 Mehdi Abaakouk
0,,L,*
516 5 Mehdi Abaakouk
EOF
517 3 Mehdi Abaakouk
}
518 1 Mehdi Abaakouk
</pre>
519 1 Mehdi Abaakouk
520 11 Mehdi Abaakouk
Ci dessous ajouter dkms et r8168 si nécessaire.
521 3 Mehdi Abaakouk
522 15 Mehdi Abaakouk
h3. Pilotes additionnel
523 1 Mehdi Abaakouk
524 1 Mehdi Abaakouk
Sur h1,h2,h4,h5 et h6, le pilote (r8169.ko) de la carte réseau (r8168/8111) provoque des kernels panic, il a été remplacé la version du constructeur (r8168.ko).
525 1 Mehdi Abaakouk
Pilote dispo ici: (http://www.realtek.com/downloads/downloadsView.aspx?Langid=1&PNid=13&PFid=5&Level=5&Conn=4&DownTypeID=3&GetDown=false)
526 1 Mehdi Abaakouk
527 1 Mehdi Abaakouk
<pre>
528 1 Mehdi Abaakouk
apt-get install gcc dkms
529 1 Mehdi Abaakouk
cd /usr/src
530 1 Mehdi Abaakouk
wget http://url_to_pilot/r8168-8.024.00.tar.bz2
531 1 Mehdi Abaakouk
tar -xjf r8168-8.024.00.tar.bz2
532 1 Mehdi Abaakouk
cd r8168-8.024.00
533 1 Mehdi Abaakouk
cat > dkms.conf << EOF
534 1 Mehdi Abaakouk
PACKAGE_NAME=r8168
535 1 Mehdi Abaakouk
PACKAGE_VERSION=8.024.00
536 1 Mehdi Abaakouk
MAKE[0]="make"
537 1 Mehdi Abaakouk
BUILT_MODULE_NAME[0]=r8168
538 1 Mehdi Abaakouk
BUILT_MODULE_LOCATION[0]="src/"
539 1 Mehdi Abaakouk
DEST_MODULE_LOCATION[0]="/kernel/updates/dkms"
540 1 Mehdi Abaakouk
AUTOINSTALL="YES"
541 1 Mehdi Abaakouk
EOF
542 1 Mehdi Abaakouk
dkms add -m r8168 -v 8.024.00
543 1 Mehdi Abaakouk
dkms build -m r8168 -v 8.024.00
544 1 Mehdi Abaakouk
dkms install -m r8168 -v 8.024.00
545 1 Mehdi Abaakouk
echo "r8168" >> /etc/modules
546 1 Mehdi Abaakouk
echo "blacklist r8169" >> /etc/modprobe.d/blacklist-network.conf
547 1 Mehdi Abaakouk
update-initramfs -u
548 1 Mehdi Abaakouk
reboot
549 1 Mehdi Abaakouk
</pre>
550 1 Mehdi Abaakouk
551 1 Mehdi Abaakouk
Pour les machines a base de e1000e:
552 1 Mehdi Abaakouk
553 1 Mehdi Abaakouk
<pre>
554 1 Mehdi Abaakouk
apt-get install gcc dkms
555 1 Mehdi Abaakouk
cd /usr/src
556 1 Mehdi Abaakouk
wget http://downloadmirror.intel.com/15817/eng/e1000e-1.3.17.tar.gz
557 1 Mehdi Abaakouk
tar -xzf e1000e-1.3.17.tar.gz
558 1 Mehdi Abaakouk
cd e1000e-1.3.17
559 1 Mehdi Abaakouk
cat > dkms.conf << EOF
560 1 Mehdi Abaakouk
PACKAGE_NAME=e1000e
561 1 Mehdi Abaakouk
PACKAGE_VERSION=1.3.17
562 1 Mehdi Abaakouk
CLEAN="make -C src/ clean"
563 1 Mehdi Abaakouk
MAKE[0]="make -C src/"
564 1 Mehdi Abaakouk
BUILT_MODULE_NAME[0]=e1000e
565 1 Mehdi Abaakouk
BUILT_MODULE_LOCATION[0]="src/"
566 1 Mehdi Abaakouk
DEST_MODULE_LOCATION[0]="/kernel/updates/dkms"
567 1 Mehdi Abaakouk
AUTOINSTALL="YES"
568 1 Mehdi Abaakouk
EOF
569 1 Mehdi Abaakouk
dkms add -m e1000e -v 1.3.17
570 1 Mehdi Abaakouk
dkms build -m e1000e -v 1.3.17
571 1 Mehdi Abaakouk
dkms install -m e1000e -v 1.3.17
572 1 Mehdi Abaakouk
reboot
573 1 Mehdi Abaakouk
</pre>
574 1 Mehdi Abaakouk
575 1 Mehdi Abaakouk
576 1 Mehdi Abaakouk
h2. Annexe 
577 13 Mehdi Abaakouk
578 13 Mehdi Abaakouk
h3. Configuration réseau
579 13 Mehdi Abaakouk
580 13 Mehdi Abaakouk
le script /etc/rc.local, qui s'occupe de préparer la configuration réseaux pour ganeti (avec les vlan, bridge and co)
581 13 Mehdi Abaakouk
le script /etc/rc.local.conf, contient les adresses IP de la machine et les gw
582 1 Mehdi Abaakouk
583 11 Mehdi Abaakouk
h3. Protection VNC
584 11 Mehdi Abaakouk
585 11 Mehdi Abaakouk
Le VNC de kvm est utiliser sur chaque MV.
586 11 Mehdi Abaakouk
Des règles de firewall sont automatiquement mise en place par le script /etc/ganeti/vnc-firewall pour que seul la machine gntwebmgr.tetaneutral.net soit autoriser a s'y connecter
587 11 Mehdi Abaakouk
Ce script est appelé par les hooks ganeti.
588 11 Mehdi Abaakouk
589 11 Mehdi Abaakouk
h3. Mac spoofing configuration (Actuellement désactivé)
590 11 Mehdi Abaakouk
591 1 Mehdi Abaakouk
Le script ifup de ganeti pour kvm a été modifier (ie: /etc/ganeti/kvm-vif-bridge) pour écrire la relation entre la vm, le numero de ces interfaces réseaux et ces tap.
592 1 Mehdi Abaakouk
Le fichier prends la forme suivante:
593 1 Mehdi Abaakouk
munin.tetaneutral.net:0:tap3
594 1 Mehdi Abaakouk
trac.tetaneutral.net:0:tap5
595 1 Mehdi Abaakouk
munin.tetaneutral.net:1:tap5
596 1 Mehdi Abaakouk
Les règles ebtables sont écrites par le script /etc/ganeti/spoofing/spoofing-protection avec les informations de ce fichier.
597 1 Mehdi Abaakouk
Les scripts de hook de ganeti (ie:/etc/ganeti/hook/) utilise ce script, pour lancer ou arreter le spoofing.
598 1 Mehdi Abaakouk
599 11 Mehdi Abaakouk
h3. Patch maison pour ganeti
600 1 Mehdi Abaakouk
601 11 Mehdi Abaakouk
Ajout de l'option -D à sfdisk au script /usr/share/ganeti/os/debootstrap/common.sh ligne 84 pour créer des partitions avec assez d'espace pour grub
602 11 Mehdi Abaakouk
Celui-ci est décrit dans l'installation d'une node aussi.
603 1 Mehdi Abaakouk
604 11 Mehdi Abaakouk
h3. J'ai n'est pas trouvé mon bonheur, comment je vais faire ?!
605 1 Mehdi Abaakouk
606 11 Mehdi Abaakouk
Voici quelques ressources:
607 11 Mehdi Abaakouk
* http://docs.ganeti.org/ganeti/current/html/
608 11 Mehdi Abaakouk
* http://docs.ganeti.org/ganeti/2.1/man/
609 11 Mehdi Abaakouk
* http://wiki.osuosl.org/public/ganeti/
610 11 Mehdi Abaakouk
Ou bien je demande à sileht d'écrire le use case qui me manque s'il à le temps