Projet

Général

Profil

Cluster Ganeti » Historique » Version 25

Laurent GUERBY, 05/07/2012 17:13

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