Projet

Général

Profil

Cluster Ganeti » Historique » Version 26

Mehdi Abaakouk, 05/07/2012 17:22

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 26 Mehdi Abaakouk
Si pendant l'extinction de la VM le message suivant apparait:
151 26 Mehdi Abaakouk
<pre>WARNING: Could not shutdown block device disk/0 on node h6.tetaneutral.net: drbd45: can't shutdown drbd device: /dev/drbd45: State change failed: (-12) Device is held open by someone</pre>
152 26 Mehdi Abaakouk
153 26 Mehdi Abaakouk
Sur h6 on peut remarquer que l'on a un status non nominal sur drbd:
154 26 Mehdi Abaakouk
<pre>$ grep -A4 45: /proc/drbd
155 26 Mehdi Abaakouk
45: cs:WFConnection ro:Primary/Unknown ds:UpToDate/DUnknown C r----
156 26 Mehdi Abaakouk
    ns:68584404 nr:0 dw:67728388 dr:2484540 al:535 bm:237 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0
157 26 Mehdi Abaakouk
</pre>
158 26 Mehdi Abaakouk
159 26 Mehdi Abaakouk
Pour résoudre le probléme taper:
160 26 Mehdi Abaakouk
<pre>drbdsetup /dev/drbd45 down</pre>
161 26 Mehdi Abaakouk
162 26 Mehdi Abaakouk
Si le message persiste, il faut vérifier que plus aucun processus n'utilise le drbd45 sur h6, par exemple vérifier devmapper:
163 26 Mehdi Abaakouk
<pre>dmsetup ls | grep drbd45</pre>
164 26 Mehdi Abaakouk
165 26 Mehdi Abaakouk
Référence dans la doc ganeti: http://docs.ganeti.org/ganeti/2.5/html/walkthrough.html#in-use-disks-at-instance-shutdown
166 26 Mehdi Abaakouk
167 10 Mehdi Abaakouk
h3. Comment tout savoir sur une vm ?
168 1 Mehdi Abaakouk
169 1 Mehdi Abaakouk
<pre>
170 1 Mehdi Abaakouk
gnt-instance info vm1
171 1 Mehdi Abaakouk
</pre>
172 1 Mehdi Abaakouk
173 10 Mehdi Abaakouk
h3. Déplacement le(s) disque(s) dur d'une VM
174 1 Mehdi Abaakouk
175 1 Mehdi Abaakouk
Si la machine a ces disques au format plain (sans drbd), taper:
176 1 Mehdi Abaakouk
177 1 Mehdi Abaakouk
<pre>
178 1 Mehdi Abaakouk
gnt-instance stop vm1
179 1 Mehdi Abaakouk
gnt-instance move -n h6 vm1
180 1 Mehdi Abaakouk
gnt-instance start vm1
181 1 Mehdi Abaakouk
</pre>
182 1 Mehdi Abaakouk
183 1 Mehdi Abaakouk
Si la machine utilise drbd (uniquement le disque de la node secondaire bascule):
184 1 Mehdi Abaakouk
185 1 Mehdi Abaakouk
<pre>
186 1 Mehdi Abaakouk
gnt-instance replace-disks -n h6 vm1
187 1 Mehdi Abaakouk
</pre>
188 10 Mehdi Abaakouk
189 1 Mehdi Abaakouk
Si vous voulais déplacer l'autre disque du drbd, il faut basculer la machine, puis refaire la même chose
190 1 Mehdi Abaakouk
191 10 Mehdi Abaakouk
h3. Basculer/migrer une machine qui utilise drbd
192 1 Mehdi Abaakouk
193 1 Mehdi Abaakouk
Bascule avec arret de la machine:
194 1 Mehdi Abaakouk
195 1 Mehdi Abaakouk
<pre>
196 1 Mehdi Abaakouk
gnt-instance failover vm1
197 1 Mehdi Abaakouk
</pre>
198 1 Mehdi Abaakouk
199 10 Mehdi Abaakouk
Sans arrêt, migration à chaud:
200 10 Mehdi Abaakouk
201 1 Mehdi Abaakouk
<pre>
202 1 Mehdi Abaakouk
gnt-instance migrate vm1
203 1 Mehdi Abaakouk
</pre>
204 10 Mehdi Abaakouk
205 1 Mehdi Abaakouk
En cas de soucis primaire/secondaire:
206 1 Mehdi Abaakouk
207 1 Mehdi Abaakouk
<pre>
208 1 Mehdi Abaakouk
gnt-instance migrate --cleanup vm1
209 1 Mehdi Abaakouk
</pre>
210 1 Mehdi Abaakouk
211 10 Mehdi Abaakouk
h3. Création d'une machine
212 1 Mehdi Abaakouk
213 10 Mehdi Abaakouk
Un script est présent sur h1 voici ca doc:
214 10 Mehdi Abaakouk
<pre>
215 10 Mehdi Abaakouk
# /root/gnt-addvm
216 10 Mehdi Abaakouk
usage: gnt-addvm [options] VIRTUAL_MACHINE_HOSTNAME
217 10 Mehdi Abaakouk
       -o OS | --os OS          OS can be default natty32 natty64 sid64 squeeze32 squeeze64 wheezy64
218 10 Mehdi Abaakouk
       -s SIZE | --size SIZE    default SIZE is 10G
219 10 Mehdi Abaakouk
       -m MEM | --mem MEM       default MEM is 256M
220 10 Mehdi Abaakouk
       -c CPU | --cpu CPU               default CPU is 1
221 10 Mehdi Abaakouk
       -n NODES | --nodes NODES         default NODES is
222 10 Mehdi Abaakouk
       -d MODE | --disk MODE      default MODE is drbd
223 10 Mehdi Abaakouk
       -q | --quick             don't wait drbd sync
224 10 Mehdi Abaakouk
       --dry-run                        show executed command
225 10 Mehdi Abaakouk
       --cdrom PATH             installation from iso file
226 10 Mehdi Abaakouk
</pre>
227 1 Mehdi Abaakouk
228 10 Mehdi Abaakouk
229 10 Mehdi Abaakouk
h3. Supprimer une machine
230 10 Mehdi Abaakouk
231 1 Mehdi Abaakouk
<pre>
232 10 Mehdi Abaakouk
gnt-instance remove vm1
233 1 Mehdi Abaakouk
</pre>
234 1 Mehdi Abaakouk
235 10 Mehdi Abaakouk
si la vm est en drbd et que une des nodes du drbd ne fonctionne plus
236 10 Mehdi Abaakouk
237 1 Mehdi Abaakouk
<pre>
238 10 Mehdi Abaakouk
gnt-instance remove --ignore-failures vm1
239 1 Mehdi Abaakouk
</pre>
240 1 Mehdi Abaakouk
241 10 Mehdi Abaakouk
242 14 Mehdi Abaakouk
h3. Changer les cractéristique d'une VM, upgrade disk, net, cpu, mem
243 10 Mehdi Abaakouk
244 10 Mehdi Abaakouk
Et hop une nouvelle carte réseau sur le vlan tsf
245 1 Mehdi Abaakouk
<pre>
246 10 Mehdi Abaakouk
gnt-instance  modify --net add:link=br1 vm1
247 1 Mehdi Abaakouk
</pre>
248 1 Mehdi Abaakouk
249 10 Mehdi Abaakouk
Un petit disk en plus
250 10 Mehdi Abaakouk
<pre>
251 10 Mehdi Abaakouk
gnt-instance  modify --disk add:size=50G vm1
252 10 Mehdi Abaakouk
</pre>
253 1 Mehdi Abaakouk
254 10 Mehdi Abaakouk
Un petite upgrade cpu et mémoire
255 10 Mehdi Abaakouk
<pre>
256 10 Mehdi Abaakouk
gnt-instance modify -B vcpus=2,memory=512M vm1
257 10 Mehdi Abaakouk
</pre>
258 1 Mehdi Abaakouk
259 10 Mehdi Abaakouk
Reboot pour prendre en compte le tout
260 1 Mehdi Abaakouk
<pre>
261 10 Mehdi Abaakouk
gnt-instance reboot -t full vm1
262 1 Mehdi Abaakouk
</pre>
263 1 Mehdi Abaakouk
264 10 Mehdi Abaakouk
== Je voudrais bien booter mon kernel ! ou un cdrom==
265 10 Mehdi Abaakouk
Je peux désactivé le kernel commun pour une vm
266 1 Mehdi Abaakouk
267 10 Mehdi Abaakouk
<pre>
268 10 Mehdi Abaakouk
gnt-instance modify -H kernel_path="" vm1
269 10 Mehdi Abaakouk
</pre>
270 10 Mehdi Abaakouk
Ou booter sur le cdrom pour le prochain démarrage commme ceci:
271 1 Mehdi Abaakouk
272 1 Mehdi Abaakouk
<pre>
273 10 Mehdi Abaakouk
gnt-instance start -H boot_order=cdrom,cdrom_image_path=/path/to/debian-504-amd64-netinst.iso vm1
274 1 Mehdi Abaakouk
</pre>
275 1 Mehdi Abaakouk
276 10 Mehdi Abaakouk
277 10 Mehdi Abaakouk
h3. Relocalisé les disques secondaires si un serveur est HS.
278 10 Mehdi Abaakouk
279 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
280 10 Mehdi Abaakouk
281 1 Mehdi Abaakouk
<pre>
282 10 Mehdi Abaakouk
gnt-instance replace-disks -I hail vm1
283 1 Mehdi Abaakouk
</pre>
284 1 Mehdi Abaakouk
285 1 Mehdi Abaakouk
286 11 Mehdi Abaakouk
h3. Importer une image disque venant de l’extérieur
287 11 Mehdi Abaakouk
288 11 Mehdi Abaakouk
Convertion de l'image au format raw (si c'est pas déjà le cas)
289 11 Mehdi Abaakouk
<pre>
290 11 Mehdi Abaakouk
kvm-img convert DISQUEVM.qcow -O raw DISQUEVM.raw
291 11 Mehdi Abaakouk
</pre>
292 11 Mehdi Abaakouk
293 11 Mehdi Abaakouk
Copie du disque au format raw sur un lvm
294 11 Mehdi Abaakouk
<pre>
295 11 Mehdi Abaakouk
size=$(kvm-img info DISQUEVM.raw | sed -n -e 's/^virtual size:[^(]*(\([[:digit:]]*\).*)/\1/gp')
296 11 Mehdi Abaakouk
lvcreate -L ${size}b -n lv_migration_DISQUEVM kvmvg
297 11 Mehdi Abaakouk
dd if=DISQUEVM.raw of=/dev/kvmvg/lv_migration_DISQUEVM
298 11 Mehdi Abaakouk
</pre>
299 11 Mehdi Abaakouk
300 11 Mehdi Abaakouk
Création de la VM
301 11 Mehdi Abaakouk
<pre>
302 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
303 11 Mehdi Abaakouk
</pre>
304 11 Mehdi Abaakouk
305 11 Mehdi Abaakouk
Et pour finir, on transforme le format de disque de la VM en drbd:
306 11 Mehdi Abaakouk
<pre>
307 11 Mehdi Abaakouk
gnt-instance modify -t drbd -n h6 VMNAME.tetaneutral.net
308 11 Mehdi Abaakouk
</pre>
309 11 Mehdi Abaakouk
310 17 Mehdi Abaakouk
h3. Copier une VM sur une autre machine
311 11 Mehdi Abaakouk
312 11 Mehdi Abaakouk
Seul la machine *h1* a l'espace configurer pour faire des dumps de machine virtuelle.
313 11 Mehdi Abaakouk
314 11 Mehdi Abaakouk
On lance un backup de celle-ci (attention cette commande *éteint* la machine):
315 11 Mehdi Abaakouk
<pre>
316 11 Mehdi Abaakouk
gnt-backup export -n h1 sileht2
317 11 Mehdi Abaakouk
</pre>
318 11 Mehdi Abaakouk
319 11 Mehdi Abaakouk
Les fichiers sont ensuite sur h1 dans /exports/sileht2.tetaneutral.net/
320 11 Mehdi Abaakouk
321 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:
322 11 Mehdi Abaakouk
<pre>
323 11 Mehdi Abaakouk
09d836a0-22e0-4ea4-9104-c301351bb2e2.disk0_data.snap
324 11 Mehdi Abaakouk
</pre>
325 11 Mehdi Abaakouk
326 11 Mehdi Abaakouk
Pour la démonstration je copie ce fichier sur h2:
327 11 Mehdi Abaakouk
<pre>
328 11 Mehdi Abaakouk
scp /exportfs/sileht2.tetaneutral.net/09d836a0-22e0-4ea4-9104-c301351bb2e2.disk0_data.snap h2:/root/sileht.raw
329 11 Mehdi Abaakouk
</pre>
330 11 Mehdi Abaakouk
331 11 Mehdi Abaakouk
Et je le test avec kvm:
332 11 Mehdi Abaakouk
<pre>
333 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
334 11 Mehdi Abaakouk
</pre>
335 1 Mehdi Abaakouk
336 15 Mehdi Abaakouk
A savoir l'image utilise les pilotes kvm "virtio", si on souhaite utiliser la VM avec un autre logiciel de virtualisation,
337 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
338 11 Mehdi Abaakouk
339 14 Mehdi Abaakouk
h3. Monter une partition de machine virtuelle sur la machine hôte (!Attention DANGER!)
340 11 Mehdi Abaakouk
341 11 Mehdi Abaakouk
Arret de la machine et activation des disques
342 11 Mehdi Abaakouk
<pre>
343 11 Mehdi Abaakouk
 $ gnt-instance stop VMNAME.tetaneutral.net
344 11 Mehdi Abaakouk
 $ gnt-instance activate-disks VMNAME.tetaneutral.net
345 11 Mehdi Abaakouk
 h1.tetaneutral.net:disk/0:/dev/drbd34
346 11 Mehdi Abaakouk
</pre>
347 11 Mehdi Abaakouk
348 11 Mehdi Abaakouk
Ensuite pour voir les partitions du disque, ici le /dev/drbd34:
349 11 Mehdi Abaakouk
<pre>
350 11 Mehdi Abaakouk
kpartx -l /dev/drbd34
351 11 Mehdi Abaakouk
</pre>
352 11 Mehdi Abaakouk
353 11 Mehdi Abaakouk
On créé ensuite les partitions dans /dev avec devmapper
354 11 Mehdi Abaakouk
<pre>
355 11 Mehdi Abaakouk
kpartx -a /dev/drbd34
356 11 Mehdi Abaakouk
ls -la /dev/mapper/drbd34*
357 11 Mehdi Abaakouk
</pre>
358 11 Mehdi Abaakouk
359 11 Mehdi Abaakouk
A partir de maintenant on peut faire mumuse avec la partition, exemple:
360 11 Mehdi Abaakouk
<pre>
361 11 Mehdi Abaakouk
mount /dev/mapper/drbd34p1 /mnt/
362 11 Mehdi Abaakouk
....
363 11 Mehdi Abaakouk
umount /mnt
364 11 Mehdi Abaakouk
</pre>
365 11 Mehdi Abaakouk
366 11 Mehdi Abaakouk
Puis *très important*, il faut nettoyer devmapper et déactiver les disk pour ganeti
367 11 Mehdi Abaakouk
368 11 Mehdi Abaakouk
<pre>
369 11 Mehdi Abaakouk
kpartx -d /dev/drbd34
370 11 Mehdi Abaakouk
gnt-instance deactivate-disks VMNAME.tetaneutral.net
371 11 Mehdi Abaakouk
gnt-instance start VMNAME.tetaneutral.net
372 11 Mehdi Abaakouk
</pre>
373 11 Mehdi Abaakouk
374 1 Mehdi Abaakouk
h2. Administration des serveurs/nodes
375 10 Mehdi Abaakouk
376 10 Mehdi Abaakouk
h3. Éteindre/rebooter provisoirement un des serveurs sans coupure de service
377 10 Mehdi Abaakouk
378 10 Mehdi Abaakouk
La procédure est la suivante:
379 10 Mehdi Abaakouk
 - migration des machines virtuelles sur leurs secondaires
380 10 Mehdi Abaakouk
 - Arret/Ralummage ou reboot du serveur
381 10 Mehdi Abaakouk
 - remigration des machines virtuelles sur le serveur hX
382 1 Mehdi Abaakouk
383 10 Mehdi Abaakouk
<pre>
384 10 Mehdi Abaakouk
gnt-node migrate hX
385 10 Mehdi Abaakouk
shutdown -h now # ou reboot
386 1 Mehdi Abaakouk
hbal -L --no-disk-moves -X
387 1 Mehdi Abaakouk
</pre>
388 10 Mehdi Abaakouk
389 10 Mehdi Abaakouk
La resynchro drbd est automatique.
390 10 Mehdi Abaakouk
391 10 Mehdi Abaakouk
h3. L'extinction d'une node proprement dans le but de la désactivé du cluster
392 1 Mehdi Abaakouk
393 10 Mehdi Abaakouk
<pre>
394 10 Mehdi Abaakouk
gnt-node migrate hX # gnt-node failover hX
395 10 Mehdi Abaakouk
gnt-node evacuate -I hail hX
396 1 Mehdi Abaakouk
gnt-node modify -O yes hX
397 1 Mehdi Abaakouk
</pre>
398 10 Mehdi Abaakouk
399 1 Mehdi Abaakouk
Ici toutes les VMs seront migrés et les données auront été déplacé vers les autres nodes.
400 10 Mehdi Abaakouk
401 1 Mehdi Abaakouk
h3. Vérifier l'état du cluster
402 10 Mehdi Abaakouk
403 10 Mehdi Abaakouk
Sur le masternode normalement h1 faire:
404 1 Mehdi Abaakouk
405 10 Mehdi Abaakouk
<pre>
406 1 Mehdi Abaakouk
gnt-cluster verify
407 1 Mehdi Abaakouk
</pre>
408 10 Mehdi Abaakouk
409 1 Mehdi Abaakouk
h3. Change le node principal (masternode) de "ganeti", celui qui permet de lancer des commandes ganeti.
410 10 Mehdi Abaakouk
411 1 Mehdi Abaakouk
Allez sur un node, taper ceci et il deviendra "maternode":
412 1 Mehdi Abaakouk
413 1 Mehdi Abaakouk
<pre>
414 1 Mehdi Abaakouk
gnt-node masterfailover
415 1 Mehdi Abaakouk
</pre>
416 10 Mehdi Abaakouk
417 1 Mehdi Abaakouk
h3. Gestion des fichiers de configuration (ie: /etc/ganeti, /etc/hosts, /etc/rc.local, ...)
418 10 Mehdi Abaakouk
419 1 Mehdi Abaakouk
Tous les fichiers de configuration à synchroniser entre toutes les nodes du cluster sont contenues dans ce script:
420 1 Mehdi Abaakouk
421 1 Mehdi Abaakouk
<pre>
422 1 Mehdi Abaakouk
/etc/ganeti/pushconf.sh
423 1 Mehdi Abaakouk
</pre>
424 10 Mehdi Abaakouk
425 1 Mehdi Abaakouk
Le lancer recopie ces fichiers du masternode vers les autres nodes.
426 10 Mehdi Abaakouk
427 10 Mehdi Abaakouk
h3. Désactiver un serveur qui serait HS du cluster provisoirement.
428 10 Mehdi Abaakouk
429 10 Mehdi Abaakouk
On bascule les machines qui n'ont pas le failover en automatique
430 10 Mehdi Abaakouk
431 10 Mehdi Abaakouk
<pre>
432 10 Mehdi Abaakouk
gnt-node failover [ --ignore-consistency ] h2
433 10 Mehdi Abaakouk
</pre>
434 10 Mehdi Abaakouk
435 10 Mehdi Abaakouk
le --ignore-consistency permet de forcer ganeti à ne pas contrôler le disk avant le basculement
436 10 Mehdi Abaakouk
437 10 Mehdi Abaakouk
On peux (optionnellement) déplacer les disques durs secondaires des VMs
438 10 Mehdi Abaakouk
439 10 Mehdi Abaakouk
gnt-node evacuate [--early-release]  -I hail hX
440 10 Mehdi Abaakouk
441 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)
442 10 Mehdi Abaakouk
443 10 Mehdi Abaakouk
Puis on désactive la node:
444 10 Mehdi Abaakouk
445 10 Mehdi Abaakouk
<pre>
446 10 Mehdi Abaakouk
gnt-node modify -O yes h2
447 10 Mehdi Abaakouk
</pre>
448 10 Mehdi Abaakouk
449 1 Mehdi Abaakouk
450 11 Mehdi Abaakouk
h3. Réinsertion dans le cluster d'un node désactivé
451 10 Mehdi Abaakouk
452 10 Mehdi Abaakouk
- On réactive la node
453 10 Mehdi Abaakouk
- On remet dessus des machines et des disques en répartissant la charge du cluster
454 10 Mehdi Abaakouk
455 10 Mehdi Abaakouk
<pre>
456 10 Mehdi Abaakouk
gnt-node modify -O no h2
457 10 Mehdi Abaakouk
hbal -L -X
458 10 Mehdi Abaakouk
</pre>
459 10 Mehdi Abaakouk
460 10 Mehdi Abaakouk
461 10 Mehdi Abaakouk
h2. Setup d'un nouveau NODE
462 10 Mehdi Abaakouk
463 10 Mehdi Abaakouk
h3. Installation
464 10 Mehdi Abaakouk
465 1 Mehdi Abaakouk
* Installer squeeze basique avec juste ssh
466 1 Mehdi Abaakouk
* Ajouter wheezy dans /etc/apt/sources.list
467 1 Mehdi Abaakouk
468 1 Mehdi Abaakouk
<pre>
469 1 Mehdi Abaakouk
# deb http://ftp.fr.debian.org/debian/ squeeze main
470 1 Mehdi Abaakouk
deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
471 1 Mehdi Abaakouk
deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
472 1 Mehdi Abaakouk
deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
473 1 Mehdi Abaakouk
deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
474 1 Mehdi Abaakouk
deb http://ftp.de.debian.org/debian-backports/ squeeze-backports main contrib non-free
475 1 Mehdi Abaakouk
deb-src http://ftp.de.debian.org/debian-backports/ squeeze-backports main contrib non-free
476 3 Mehdi Abaakouk
deb http://security.debian.org/ squeeze/updates main
477 3 Mehdi Abaakouk
deb-src http://security.debian.org/ squeeze/updates main
478 4 Mehdi Abaakouk
# squeeze-updates, previously known as 'volatile'
479 3 Mehdi Abaakouk
deb http://ftp.fr.debian.org/debian/ squeeze-updates main
480 1 Mehdi Abaakouk
deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main
481 8 Mehdi Abaakouk
</pre>
482 8 Mehdi Abaakouk
483 8 Mehdi Abaakouk
* Allouer un port avec 3131, 3175, 3195 tagged sur le procurve
484 8 Mehdi Abaakouk
* Monter le reseau manuellement IP X
485 7 Mehdi Abaakouk
486 8 Mehdi Abaakouk
<pre>
487 7 Mehdi Abaakouk
ip link add link eth0 name eth0.3131 type vlan id 3131
488 8 Mehdi Abaakouk
ip link set eth0.3131 up
489 7 Mehdi Abaakouk
ip addr add 91.224.149.15X/25 dev eth0.3131
490 8 Mehdi Abaakouk
</pre>
491 8 Mehdi Abaakouk
492 8 Mehdi Abaakouk
* Creer /etc/rc.local.conf avec X et Y
493 7 Mehdi Abaakouk
494 5 Mehdi Abaakouk
<pre>
495 5 Mehdi Abaakouk
IP_3131="91.224.149.15X/25"
496 6 Mehdi Abaakouk
GW_3131="91.224.149.254"
497 5 Mehdi Abaakouk
IP_3175="192.168.3.Y/24"
498 1 Mehdi Abaakouk
KVM_DISKS="sdb"
499 5 Mehdi Abaakouk
</pre>
500 1 Mehdi Abaakouk
501 1 Mehdi Abaakouk
* Installer les packages
502 1 Mehdi Abaakouk
503 1 Mehdi Abaakouk
<pre>
504 1 Mehdi Abaakouk
#TODO liste en fichier commit qqpart
505 1 Mehdi Abaakouk
#TODO: passer a une version compilée en local de ganeti pour eviter les update de version wheezy
506 1 Mehdi Abaakouk
dpkg --get-selections | ssh root@h48 dpkg --set-selections
507 1 Mehdi Abaakouk
ssh root@h48 apt-get dselect-upgrade
508 5 Mehdi Abaakouk
</pre>
509 5 Mehdi Abaakouk
510 6 Mehdi Abaakouk
511 6 Mehdi Abaakouk
512 5 Mehdi Abaakouk
* munin:
513 5 Mehdi Abaakouk
dans /etc/munin/munin-node.conf ajouter: allow ^91\.224\.149\.194$
514 5 Mehdi Abaakouk
* TODO patch munin Loic
515 1 Mehdi Abaakouk
http://trac.fsffrance.org/wiki/PatchInventory#Munin
516 5 Mehdi Abaakouk
* reboot
517 1 Mehdi Abaakouk
* Installer le node dans le cluster ganeti apres s'etre assure que la version de ganeti est bien la meme
518 5 Mehdi Abaakouk
519 1 Mehdi Abaakouk
<pre>
520 1 Mehdi Abaakouk
dpkg -l|grep -i ganeti
521 5 Mehdi Abaakouk
gnt-node add h48
522 5 Mehdi Abaakouk
/etc/ganeti/pushconf.sh
523 5 Mehdi Abaakouk
</pre>
524 5 Mehdi Abaakouk
525 5 Mehdi Abaakouk
Appliquer ce patch à ganeti-instance-debootstrap:
526 5 Mehdi Abaakouk
527 5 Mehdi Abaakouk
<pre>
528 5 Mehdi Abaakouk
--- /usr/share/ganeti/os/debootstrap/common.sh.ori  2010-09-15 22:34:12.000000000 +0200
529 5 Mehdi Abaakouk
+++ /usr/share/ganeti/os/debootstrap/common.sh  2011-07-27 12:33:55.695617766 +0200
530 5 Mehdi Abaakouk
@@ -91,7 +91,7 @@
531 5 Mehdi Abaakouk
# some versions of sfdisk need manual specification of
532 1 Mehdi Abaakouk
# head/sectors for devices such as drbd which don't
533 5 Mehdi Abaakouk
# report geometry
534 5 Mehdi Abaakouk
-  sfdisk -H 255 -S 63 --quiet --Linux "$1" <<EOF
535 5 Mehdi Abaakouk
+  sfdisk -H 255 -S 63 -D --quiet --Linux "$1" <<EOF
536 6 Mehdi Abaakouk
0,,L,*
537 5 Mehdi Abaakouk
EOF
538 3 Mehdi Abaakouk
}
539 1 Mehdi Abaakouk
</pre>
540 1 Mehdi Abaakouk
541 11 Mehdi Abaakouk
Ci dessous ajouter dkms et r8168 si nécessaire.
542 3 Mehdi Abaakouk
543 15 Mehdi Abaakouk
h3. Pilotes additionnel
544 1 Mehdi Abaakouk
545 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).
546 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)
547 1 Mehdi Abaakouk
548 1 Mehdi Abaakouk
<pre>
549 1 Mehdi Abaakouk
apt-get install gcc dkms
550 1 Mehdi Abaakouk
cd /usr/src
551 1 Mehdi Abaakouk
wget http://url_to_pilot/r8168-8.024.00.tar.bz2
552 1 Mehdi Abaakouk
tar -xjf r8168-8.024.00.tar.bz2
553 1 Mehdi Abaakouk
cd r8168-8.024.00
554 1 Mehdi Abaakouk
cat > dkms.conf << EOF
555 1 Mehdi Abaakouk
PACKAGE_NAME=r8168
556 1 Mehdi Abaakouk
PACKAGE_VERSION=8.024.00
557 1 Mehdi Abaakouk
MAKE[0]="make"
558 1 Mehdi Abaakouk
BUILT_MODULE_NAME[0]=r8168
559 1 Mehdi Abaakouk
BUILT_MODULE_LOCATION[0]="src/"
560 1 Mehdi Abaakouk
DEST_MODULE_LOCATION[0]="/kernel/updates/dkms"
561 1 Mehdi Abaakouk
AUTOINSTALL="YES"
562 1 Mehdi Abaakouk
EOF
563 1 Mehdi Abaakouk
dkms add -m r8168 -v 8.024.00
564 1 Mehdi Abaakouk
dkms build -m r8168 -v 8.024.00
565 1 Mehdi Abaakouk
dkms install -m r8168 -v 8.024.00
566 1 Mehdi Abaakouk
echo "r8168" >> /etc/modules
567 1 Mehdi Abaakouk
echo "blacklist r8169" >> /etc/modprobe.d/blacklist-network.conf
568 1 Mehdi Abaakouk
update-initramfs -u
569 1 Mehdi Abaakouk
reboot
570 1 Mehdi Abaakouk
</pre>
571 1 Mehdi Abaakouk
572 1 Mehdi Abaakouk
Pour les machines a base de e1000e:
573 1 Mehdi Abaakouk
574 1 Mehdi Abaakouk
<pre>
575 1 Mehdi Abaakouk
apt-get install gcc dkms
576 1 Mehdi Abaakouk
cd /usr/src
577 1 Mehdi Abaakouk
wget http://downloadmirror.intel.com/15817/eng/e1000e-1.3.17.tar.gz
578 1 Mehdi Abaakouk
tar -xzf e1000e-1.3.17.tar.gz
579 1 Mehdi Abaakouk
cd e1000e-1.3.17
580 1 Mehdi Abaakouk
cat > dkms.conf << EOF
581 1 Mehdi Abaakouk
PACKAGE_NAME=e1000e
582 1 Mehdi Abaakouk
PACKAGE_VERSION=1.3.17
583 1 Mehdi Abaakouk
CLEAN="make -C src/ clean"
584 1 Mehdi Abaakouk
MAKE[0]="make -C src/"
585 1 Mehdi Abaakouk
BUILT_MODULE_NAME[0]=e1000e
586 1 Mehdi Abaakouk
BUILT_MODULE_LOCATION[0]="src/"
587 1 Mehdi Abaakouk
DEST_MODULE_LOCATION[0]="/kernel/updates/dkms"
588 1 Mehdi Abaakouk
AUTOINSTALL="YES"
589 1 Mehdi Abaakouk
EOF
590 1 Mehdi Abaakouk
dkms add -m e1000e -v 1.3.17
591 1 Mehdi Abaakouk
dkms build -m e1000e -v 1.3.17
592 1 Mehdi Abaakouk
dkms install -m e1000e -v 1.3.17
593 1 Mehdi Abaakouk
reboot
594 1 Mehdi Abaakouk
</pre>
595 1 Mehdi Abaakouk
596 1 Mehdi Abaakouk
597 1 Mehdi Abaakouk
h2. Annexe 
598 13 Mehdi Abaakouk
599 13 Mehdi Abaakouk
h3. Configuration réseau
600 13 Mehdi Abaakouk
601 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)
602 13 Mehdi Abaakouk
le script /etc/rc.local.conf, contient les adresses IP de la machine et les gw
603 1 Mehdi Abaakouk
604 11 Mehdi Abaakouk
h3. Protection VNC
605 11 Mehdi Abaakouk
606 11 Mehdi Abaakouk
Le VNC de kvm est utiliser sur chaque MV.
607 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
608 11 Mehdi Abaakouk
Ce script est appelé par les hooks ganeti.
609 11 Mehdi Abaakouk
610 11 Mehdi Abaakouk
h3. Mac spoofing configuration (Actuellement désactivé)
611 11 Mehdi Abaakouk
612 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.
613 1 Mehdi Abaakouk
Le fichier prends la forme suivante:
614 1 Mehdi Abaakouk
munin.tetaneutral.net:0:tap3
615 1 Mehdi Abaakouk
trac.tetaneutral.net:0:tap5
616 1 Mehdi Abaakouk
munin.tetaneutral.net:1:tap5
617 1 Mehdi Abaakouk
Les règles ebtables sont écrites par le script /etc/ganeti/spoofing/spoofing-protection avec les informations de ce fichier.
618 1 Mehdi Abaakouk
Les scripts de hook de ganeti (ie:/etc/ganeti/hook/) utilise ce script, pour lancer ou arreter le spoofing.
619 1 Mehdi Abaakouk
620 11 Mehdi Abaakouk
h3. Patch maison pour ganeti
621 1 Mehdi Abaakouk
622 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
623 11 Mehdi Abaakouk
Celui-ci est décrit dans l'installation d'une node aussi.
624 1 Mehdi Abaakouk
625 11 Mehdi Abaakouk
h3. J'ai n'est pas trouvé mon bonheur, comment je vais faire ?!
626 1 Mehdi Abaakouk
627 11 Mehdi Abaakouk
Voici quelques ressources:
628 11 Mehdi Abaakouk
* http://docs.ganeti.org/ganeti/current/html/
629 11 Mehdi Abaakouk
* http://docs.ganeti.org/ganeti/2.1/man/
630 11 Mehdi Abaakouk
* http://wiki.osuosl.org/public/ganeti/
631 11 Mehdi Abaakouk
Ou bien je demande à sileht d'écrire le use case qui me manque s'il à le temps