Projet

Général

Profil

Cluster Ganeti » Historique » Version 21

Laurent GUERBY, 21/05/2012 23:24

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