Project

General

Profile

Cluster Ganeti » History » Version 20

Laurent GUERBY, 05/21/2012 11:04 PM

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