Projet

Général

Profil

Cluster Ganeti » Historique » Version 22

Laurent GUERBY, 21/05/2012 23:40

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