Projet

Général

Profil

Cluster Ganeti » Historique » Version 46

Laurent GUERBY, 02/06/2013 13:00

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 32 Laurent GUERBY
extlinux pour ganeti http://anonscm.debian.org/gitweb/?p=mirror/dsa-puppet.git;a=blob;f=modules/ganeti2/templates/instance-debootstrap/hooks/20-dsa-install-bootloader.erb;h=2bbba5e762b512c1c7b081049cf8ffd6cc472f96;hb=master
9 25 Laurent GUERBY
10 18 Laurent GUERBY
h2. Installation from scratch
11 18 Laurent GUERBY
12 23 Laurent GUERBY
h3. Ganeti
13 23 Laurent GUERBY
14 18 Laurent GUERBY
apt-get install ganeti2
15 1 Mehdi Abaakouk
16 30 Mehdi Abaakouk
h3. configuration LVM
17 18 Laurent GUERBY
18 30 Mehdi Abaakouk
Dans le fichier */etc/lvm/lvm.conf* changer le filter lvm pour:
19 23 Laurent GUERBY
20 18 Laurent GUERBY
<pre>
21 18 Laurent GUERBY
# filter = [ "a/.*/" ]
22 18 Laurent GUERBY
filter = ["r|/dev/cdrom|", "r|/dev/drbd[0-9]+|" ]
23 1 Mehdi Abaakouk
</pre>
24 1 Mehdi Abaakouk
25 29 Mehdi Abaakouk
Evite les soucis avec DRBD (ie: pour que la machine hôte ne detecte pas les LVM qui sont dans le VM lors du vgscan and co)
26 1 Mehdi Abaakouk
27 30 Mehdi Abaakouk
h3. configuration DRBD
28 23 Laurent GUERBY
29 19 Laurent GUERBY
* activer drbd
30 19 Laurent GUERBY
31 19 Laurent GUERBY
<pre>
32 24 Christophe Moille
# echo "options drbd minor_count=128 usermode_helper=/bin/true" >> /etc/modprobe.d/drbd-ganeti.conf
33 19 Laurent GUERBY
# rmmod drbd
34 1 Mehdi Abaakouk
# modprobe drbd
35 19 Laurent GUERBY
# cat /sys/module/drbd/parameters/usermode_helper 
36 1 Mehdi Abaakouk
/bin/true
37 1 Mehdi Abaakouk
</pre>
38 1 Mehdi Abaakouk
39 30 Mehdi Abaakouk
h3. Partitionnement
40 1 Mehdi Abaakouk
41 1 Mehdi Abaakouk
<pre>
42 30 Mehdi Abaakouk
# fdisk /dev/sda
43 23 Laurent GUERBY
new primary part
44 1 Mehdi Abaakouk
hex code 8e
45 30 Mehdi Abaakouk
46 30 Mehdi Abaakouk
# partprobe
47 1 Mehdi Abaakouk
</pre>
48 19 Laurent GUERBY
49 30 Mehdi Abaakouk
h3. Création du VG pour ganeti
50 30 Mehdi Abaakouk
51 30 Mehdi Abaakouk
<pre>
52 19 Laurent GUERBY
pvcreate /dev/sda2 
53 1 Mehdi Abaakouk
vgcreate vg_ganeti /dev/sda2
54 30 Mehdi Abaakouk
</pre>
55 18 Laurent GUERBY
56 30 Mehdi Abaakouk
S'il existe déjà vider le volume group et le recreer
57 18 Laurent GUERBY
58 18 Laurent GUERBY
<pre>
59 18 Laurent GUERBY
pvs
60 1 Mehdi Abaakouk
vgs
61 1 Mehdi Abaakouk
lvs
62 18 Laurent GUERBY
lvremove
63 18 Laurent GUERBY
vgcreate kvmvg /dev/sdb... #TODO check
64 18 Laurent GUERBY
</pre>
65 18 Laurent GUERBY
66 23 Laurent GUERBY
h3. Network
67 23 Laurent GUERBY
68 20 Laurent GUERBY
<pre>
69 20 Laurent GUERBY
# dans /etc/network/interfaces
70 20 Laurent GUERBY
# The primary network interface
71 20 Laurent GUERBY
auto eth0
72 20 Laurent GUERBY
iface eth0 inet manual
73 20 Laurent GUERBY
74 20 Laurent GUERBY
# dans /etc/rc.local     
75 20 Laurent GUERBY
ip l set eth0 up    
76 20 Laurent GUERBY
                    
77 20 Laurent GUERBY
brctl addbr ganeti-br0
78 20 Laurent GUERBY
ip li set ganeti-br0 up
79 1 Mehdi Abaakouk
brctl addif ganeti-br0 eth0
80 20 Laurent GUERBY
                    
81 20 Laurent GUERBY
ip a a 10.42.0.13/24 dev ganeti-br0
82 20 Laurent GUERBY
ip r a default via 10.42.0.1 
83 20 Laurent GUERBY
              
84 20 Laurent GUERBY
</pre>
85 18 Laurent GUERBY
86 23 Laurent GUERBY
h3. DNS
87 21 Laurent GUERBY
88 1 Mehdi Abaakouk
<pre>
89 1 Mehdi Abaakouk
# Dans /etc/hosts              
90 21 Laurent GUERBY
10.42.0.10 tmaster.thsf tmaster
91 21 Laurent GUERBY
10.42.0.11 t1.thsf t1     
92 21 Laurent GUERBY
10.42.0.12 t2.thsf t2
93 21 Laurent GUERBY
10.42.0.13 t3.thsf t3
94 21 Laurent GUERBY
</pre>
95 23 Laurent GUERBY
96 23 Laurent GUERBY
h3. Ganeti Service
97 21 Laurent GUERBY
98 31 Mehdi Abaakouk
On master:
99 1 Mehdi Abaakouk
100 31 Mehdi Abaakouk
Initialiser le cluster:
101 21 Laurent GUERBY
<pre>
102 21 Laurent GUERBY
gnt-cluster init --nic-parameters mode=bridged,link=ganeti-br0 --master-netdev=ganeti-br0 \                       
103 1 Mehdi Abaakouk
 --vg-name vg_ganeti --enabled-hypervisors=kvm tmaster.thsf
104 31 Mehdi Abaakouk
</pre>
105 1 Mehdi Abaakouk
106 31 Mehdi Abaakouk
Ajouter un noeud au cluster (t2):
107 31 Mehdi Abaakouk
<pre>
108 21 Laurent GUERBY
gnt-node add t2
109 31 Mehdi Abaakouk
</pre>
110 21 Laurent GUERBY
111 31 Mehdi Abaakouk
Installation d'outils d'administration de ganeti:
112 21 Laurent GUERBY
113 31 Mehdi Abaakouk
<pre>apt-get install ganeti-htools ganeti-instance-debootstrap</pre>
114 21 Laurent GUERBY
115 31 Mehdi Abaakouk
Ajout d'une VM
116 22 Laurent GUERBY
117 31 Mehdi Abaakouk
<pre># vi /etc/hosts
118 22 Laurent GUERBY
10.42.0.101 vm1.thsf vm1
119 22 Laurent GUERBY
120 22 Laurent GUERBY
gnt-cluster copyfile /etc/hosts
121 22 Laurent GUERBY
122 21 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 \
123 21 Laurent GUERBY
-t drbd -B memory=512M,vcpus=1 --disk 0:size=5G -I hail -o debootstrap+default vm1.thsf
124 21 Laurent GUERBY
</pre>
125 10 Mehdi Abaakouk
126 1 Mehdi Abaakouk
h2. Administration des VMs
127 27 Laurent GUERBY
128 46 Laurent GUERBY
h3. Backup et effacement d'une VM
129 46 Laurent GUERBY
130 46 Laurent GUERBY
Vers h2 :
131 46 Laurent GUERBY
<pre>
132 46 Laurent GUERBY
gnt-instance activate-disks xxx
133 46 Laurent GUERBY
VM=xxx.gz; cd /backup/ganeti-vm-raw/20130429 ; if [ ! -f ${VM} ]; then socat -u tcp4-listen:50555 - > $VM ; zcat $VM | md5sum -; du -hs *; else echo $VM already present;fi
134 46 Laurent GUERBY
DB=nnn; cat /dev/drbd$DB | gzip --fast|socat -u - tcp4:h2:50555;md5sum /dev/drbd$DB
135 46 Laurent GUERBY
gnt-instance deactivate-disks xxx
136 46 Laurent GUERBY
gnt-instance remove xxx
137 46 Laurent GUERBY
</pre>
138 46 Laurent GUERBY
139 34 Mehdi Abaakouk
h3. Gestion d'un gnt-instance migrate qui reste bloquer
140 34 Mehdi Abaakouk
141 34 Mehdi Abaakouk
Symptôme: la progression du "gnt-instance migrate <vmname>" ne progresse plus"
142 34 Mehdi Abaakouk
143 34 Mehdi Abaakouk
<pre>
144 34 Mehdi Abaakouk
# gnt-instance info -s nagios  | grep 'node.:' -A1
145 34 Mehdi Abaakouk
      nodeA:       h4.tetaneutral.net, minor=18
146 34 Mehdi Abaakouk
      nodeB:       h6.tetaneutral.net, minor=27
147 34 Mehdi Abaakouk
      port:        12589
148 34 Mehdi Abaakouk
</pre>
149 34 Mehdi Abaakouk
150 34 Mehdi Abaakouk
Donc si on regarde sur la machine primaire et secondaire l'état:
151 34 Mehdi Abaakouk
152 34 Mehdi Abaakouk
<pre>
153 34 Mehdi Abaakouk
# grep '18:' -A5 /proc/drbd # (et sur la secondaire: grep '27:' -A5 /proc/drbd)
154 34 Mehdi Abaakouk
0: cs:SyncSource st:Primary/Primary ds:UpToDate/UpToDate C r---
155 34 Mehdi Abaakouk
ns:601729944 nr:0 dw:0 dr:601737980 al:0 bm:429909 lo:0 pe:0 ua:0 ap:0 oos:0
156 34 Mehdi Abaakouk
[===================>] sync'ed:100.0% (965/6869678)M 
157 34 Mehdi Abaakouk
stalled 
158 34 Mehdi Abaakouk
</pre>
159 34 Mehdi Abaakouk
160 34 Mehdi Abaakouk
Si on tente un commande drbd on a:
161 34 Mehdi Abaakouk
162 34 Mehdi Abaakouk
<pre>
163 34 Mehdi Abaakouk
# drbdsetup /dev/drbd18 sh-status
164 34 Mehdi Abaakouk
(longue attente)
165 34 Mehdi Abaakouk
No response from the DRBD driver! Is the module loaded?
166 34 Mehdi Abaakouk
</pre>
167 34 Mehdi Abaakouk
168 36 Mehdi Abaakouk
Bref Drbd est dans les choux, ca semble être un bug connu des versions <= 8.3.12
169 34 Mehdi Abaakouk
170 37 Laurent GUERBY
Sources : 
171 37 Laurent GUERBY
# http://www.mentby.com/Group/drbd-user/recovering-from-erroneous-sync-state.html
172 37 Laurent GUERBY
# http://lists.linbit.com/pipermail/drbd-dev/2007-May/000751.html
173 37 Laurent GUERBY
# https://encrypted.google.com/search?q=drbd+stall+100%25&hl=en
174 35 Laurent GUERBY
175 34 Mehdi Abaakouk
Pour réparer sur la machine h4, le node primaire, faire:
176 34 Mehdi Abaakouk
<pre>
177 34 Mehdi Abaakouk
# /etc/ganeti/iptables-to-reset-drbd-connection.sh 12589 # <-- 12589 le port de drbd récupéré plus haut
178 34 Mehdi Abaakouk
179 34 Mehdi Abaakouk
** Attention à être sur la bonne machine **
180 34 Mehdi Abaakouk
Pour couper la connection
181 34 Mehdi Abaakouk
iptables -I INPUT -p tcp --dport 12589 -j REJECT --reject-with tcp-reset
182 34 Mehdi Abaakouk
iptables -I INPUT -p tcp --sport 12589 -j REJECT --reject-with tcp-reset
183 34 Mehdi Abaakouk
iptables -I OUTPUT -p tcp --dport 12589 -j REJECT --reject-with tcp-reset
184 34 Mehdi Abaakouk
iptables -I OUTPUT -p tcp --sport 12589 -j REJECT --reject-with tcp-reset
185 34 Mehdi Abaakouk
186 34 Mehdi Abaakouk
Pour remettre la connection
187 34 Mehdi Abaakouk
iptables -D INPUT -p tcp --dport 12589 -j REJECT --reject-with tcp-reset
188 34 Mehdi Abaakouk
iptables -D INPUT -p tcp --sport 12589 -j REJECT --reject-with tcp-reset
189 34 Mehdi Abaakouk
iptables -D OUTPUT -p tcp --dport 12589 -j REJECT --reject-with tcp-reset
190 34 Mehdi Abaakouk
iptables -D OUTPUT -p tcp --sport 12589 -j REJECT --reject-with tcp-reset
191 34 Mehdi Abaakouk
</pre>
192 34 Mehdi Abaakouk
193 34 Mehdi Abaakouk
Exécuter la première partie puis vérifier dans /proc/drbd qui celui-ci est en WFConnection.
194 34 Mehdi Abaakouk
195 34 Mehdi Abaakouk
Puis rétablir la connexion avec la seconde partie et vérifier /proc/drbd que c'est bien reconnecté.
196 34 Mehdi Abaakouk
197 34 Mehdi Abaakouk
Ensuite si ganeti n'a pas vu la réparation, faire sur le master node et le node primaire de la machine:
198 34 Mehdi Abaakouk
199 34 Mehdi Abaakouk
<pre>
200 34 Mehdi Abaakouk
# /etc/init.d/ganeti restart
201 34 Mehdi Abaakouk
</pre>
202 34 Mehdi Abaakouk
Ceci passe en error le job de migration
203 34 Mehdi Abaakouk
204 34 Mehdi Abaakouk
Puis sur le master node, on nettoye les résidu de la migration échouée:
205 34 Mehdi Abaakouk
<pre>
206 34 Mehdi Abaakouk
# gnt-instance migrate --cleanup nagios
207 34 Mehdi Abaakouk
</pre>
208 34 Mehdi Abaakouk
209 34 Mehdi Abaakouk
210 18 Laurent GUERBY
h3. Gestion d'un disque en I/O error
211 27 Laurent GUERBY
212 1 Mehdi Abaakouk
First put the disk in failure offline:
213 28 Mehdi Abaakouk
214 28 Mehdi Abaakouk
<pre>echo offline > /sys/block/sdb/device/state</pre>
215 27 Laurent GUERBY
216 1 Mehdi Abaakouk
Then we need to remove the volume group, here /dev/kvmvg
217 27 Laurent GUERBY
We need to do it manually because vgremove will not work in this case
218 28 Mehdi Abaakouk
219 27 Laurent GUERBY
<pre>/dev/kvmvg# for i in *; do echo === $(date) == $i ; dmsetup remove /dev/kvmvg/"$i"; echo $?; done</pre>
220 1 Mehdi Abaakouk
221 27 Laurent GUERBY
This will leave a few lv when ganeti hasnt detected for some reason the disk failure. 
222 27 Laurent GUERBY
For those left we need to force drbd to go Diskless, use either gnt-instance info or ls -l /var/run/ganeti/instance-disks/ or /var/lib/ganeti/config.data to find the VM and /dev/drbdNNN then
223 28 Mehdi Abaakouk
224 27 Laurent GUERBY
<pre>drbdsetup /dev/drbd47 detach</pre>
225 27 Laurent GUERBY
226 27 Laurent GUERBY
Then gnt-instance info VM to force ganeti to recognize the disk failure (it will take a few minutes)
227 27 Laurent GUERBY
228 27 Laurent GUERBY
Then dmsetup remove will work.
229 27 Laurent GUERBY
230 27 Laurent GUERBY
After the last dmsetup remove /dev/kvmvg will disappear.
231 27 Laurent GUERBY
232 27 Laurent GUERBY
Now you can physically remove the disk and plug a new disk on a new SATA port (on the same SATA port the kernel didn't recognize the new drive)
233 27 Laurent GUERBY
Then create a LVM partition then vgcreate kvmvg /dev/sdX
234 1 Mehdi Abaakouk
235 27 Laurent GUERBY
Now we need to recreate redundancy 
236 27 Laurent GUERBY
237 1 Mehdi Abaakouk
On the still running VM you can use 
238 28 Mehdi Abaakouk
239 27 Laurent GUERBY
<pre>gnt-instance replace-disks --submit -a VMname</pre>
240 1 Mehdi Abaakouk
241 27 Laurent GUERBY
On the stopped VM you need to do manually
242 28 Mehdi Abaakouk
243 28 Mehdi Abaakouk
<pre>gnt-instance replace-disks --submit -p VMname # if primary to reconstruct
244 1 Mehdi Abaakouk
gnt-instance replace-disks --submit -s VMname # if secondary to reconstruct</pre>
245 1 Mehdi Abaakouk
246 1 Mehdi Abaakouk
At 15 MByte/s 1 TB to reconstruct will take about 18h30.
247 28 Mehdi Abaakouk
248 27 Laurent GUERBY
Before remove the disk from the server, we must prepare the disk for unplug:
249 29 Mehdi Abaakouk
250 28 Mehdi Abaakouk
<pre>echo 1 > /sys/block/sdX/device/delete</pre>
251 28 Mehdi Abaakouk
252 28 Mehdi Abaakouk
253 28 Mehdi Abaakouk
Links:
254 27 Laurent GUERBY
255 27 Laurent GUERBY
http://docs.ganeti.org/ganeti/2.5/html/admin.html#preparing-for-disk-operations
256 27 Laurent GUERBY
http://docs.ganeti.org/ganeti/2.5/html/admin.html#generalized-storage-handling
257 28 Mehdi Abaakouk
http://www.lancealbertson.com/2011/02/handling-hdd-failures-with-ganeti/
258 27 Laurent GUERBY
http://www.sakana.fr/blog/2009/05/04/linux-sata-hot-plug-unplug/
259 10 Mehdi Abaakouk
260 1 Mehdi Abaakouk
h3. Demarrer et arrêter une instance ?
261 10 Mehdi Abaakouk
262 10 Mehdi Abaakouk
<pre>
263 10 Mehdi Abaakouk
gnt-instance start vm1
264 10 Mehdi Abaakouk
gnt-instance stop vm1
265 1 Mehdi Abaakouk
</pre>
266 26 Mehdi Abaakouk
267 26 Mehdi Abaakouk
Si pendant l'extinction de la VM le message suivant apparait:
268 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>
269 26 Mehdi Abaakouk
270 26 Mehdi Abaakouk
Sur h6 on peut remarquer que l'on a un status non nominal sur drbd:
271 26 Mehdi Abaakouk
<pre>$ grep -A4 45: /proc/drbd
272 26 Mehdi Abaakouk
45: cs:WFConnection ro:Primary/Unknown ds:UpToDate/DUnknown C r----
273 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
274 26 Mehdi Abaakouk
</pre>
275 26 Mehdi Abaakouk
276 26 Mehdi Abaakouk
Pour résoudre le probléme taper:
277 26 Mehdi Abaakouk
<pre>drbdsetup /dev/drbd45 down</pre>
278 26 Mehdi Abaakouk
279 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:
280 26 Mehdi Abaakouk
<pre>dmsetup ls | grep drbd45</pre>
281 26 Mehdi Abaakouk
282 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
283 10 Mehdi Abaakouk
284 1 Mehdi Abaakouk
h3. Comment tout savoir sur une vm ?
285 1 Mehdi Abaakouk
286 1 Mehdi Abaakouk
<pre>
287 1 Mehdi Abaakouk
gnt-instance info vm1
288 1 Mehdi Abaakouk
</pre>
289 10 Mehdi Abaakouk
290 1 Mehdi Abaakouk
h3. Déplacement le(s) disque(s) dur d'une VM
291 1 Mehdi Abaakouk
292 1 Mehdi Abaakouk
Si la machine a ces disques au format plain (sans drbd), taper:
293 1 Mehdi Abaakouk
294 1 Mehdi Abaakouk
<pre>
295 1 Mehdi Abaakouk
gnt-instance stop vm1
296 1 Mehdi Abaakouk
gnt-instance move -n h6 vm1
297 1 Mehdi Abaakouk
gnt-instance start vm1
298 1 Mehdi Abaakouk
</pre>
299 1 Mehdi Abaakouk
300 1 Mehdi Abaakouk
Si la machine utilise drbd (uniquement le disque de la node secondaire bascule):
301 1 Mehdi Abaakouk
302 1 Mehdi Abaakouk
<pre>
303 1 Mehdi Abaakouk
gnt-instance replace-disks -n h6 vm1
304 10 Mehdi Abaakouk
</pre>
305 1 Mehdi Abaakouk
306 1 Mehdi Abaakouk
Si vous voulais déplacer l'autre disque du drbd, il faut basculer la machine, puis refaire la même chose
307 10 Mehdi Abaakouk
308 1 Mehdi Abaakouk
h3. Basculer/migrer une machine qui utilise drbd
309 1 Mehdi Abaakouk
310 1 Mehdi Abaakouk
Bascule avec arret de la machine:
311 1 Mehdi Abaakouk
312 1 Mehdi Abaakouk
<pre>
313 1 Mehdi Abaakouk
gnt-instance failover vm1
314 1 Mehdi Abaakouk
</pre>
315 10 Mehdi Abaakouk
316 10 Mehdi Abaakouk
Sans arrêt, migration à chaud:
317 1 Mehdi Abaakouk
318 1 Mehdi Abaakouk
<pre>
319 1 Mehdi Abaakouk
gnt-instance migrate vm1
320 10 Mehdi Abaakouk
</pre>
321 1 Mehdi Abaakouk
322 1 Mehdi Abaakouk
En cas de soucis primaire/secondaire:
323 1 Mehdi Abaakouk
324 1 Mehdi Abaakouk
<pre>
325 1 Mehdi Abaakouk
gnt-instance migrate --cleanup vm1
326 1 Mehdi Abaakouk
</pre>
327 10 Mehdi Abaakouk
328 42 Laurent GUERBY
cleanup marche en cas de split brain, example de /proc/drbd :
329 42 Laurent GUERBY
<pre>
330 42 Laurent GUERBY
h5: cs:WFConnection ro:Primary/Unknown ds:UpToDate/DUnknown C r----
331 42 Laurent GUERBY
h1: cs:StandAlone ro:Primary/Unknown ds:UpToDate/DUnknown   r----
332 42 Laurent GUERBY
</pre>
333 42 Laurent GUERBY
334 1 Mehdi Abaakouk
h3. Création d'une machine
335 10 Mehdi Abaakouk
336 10 Mehdi Abaakouk
Un script est présent sur h1 voici ca doc:
337 10 Mehdi Abaakouk
<pre>
338 10 Mehdi Abaakouk
# /root/gnt-addvm
339 10 Mehdi Abaakouk
usage: gnt-addvm [options] VIRTUAL_MACHINE_HOSTNAME
340 10 Mehdi Abaakouk
       -o OS | --os OS          OS can be default natty32 natty64 sid64 squeeze32 squeeze64 wheezy64
341 10 Mehdi Abaakouk
       -s SIZE | --size SIZE    default SIZE is 10G
342 10 Mehdi Abaakouk
       -m MEM | --mem MEM       default MEM is 256M
343 10 Mehdi Abaakouk
       -c CPU | --cpu CPU               default CPU is 1
344 10 Mehdi Abaakouk
       -n NODES | --nodes NODES         default NODES is
345 10 Mehdi Abaakouk
       -d MODE | --disk MODE      default MODE is drbd
346 10 Mehdi Abaakouk
       -q | --quick             don't wait drbd sync
347 10 Mehdi Abaakouk
       --dry-run                        show executed command
348 10 Mehdi Abaakouk
       --cdrom PATH             installation from iso file
349 1 Mehdi Abaakouk
</pre>
350 10 Mehdi Abaakouk
351 10 Mehdi Abaakouk
352 10 Mehdi Abaakouk
h3. Supprimer une machine
353 1 Mehdi Abaakouk
354 10 Mehdi Abaakouk
<pre>
355 1 Mehdi Abaakouk
gnt-instance remove vm1
356 1 Mehdi Abaakouk
</pre>
357 10 Mehdi Abaakouk
358 1 Mehdi Abaakouk
si la vm est en drbd et que une des nodes du drbd ne fonctionne plus
359 10 Mehdi Abaakouk
360 1 Mehdi Abaakouk
<pre>
361 1 Mehdi Abaakouk
gnt-instance remove --ignore-failures vm1
362 10 Mehdi Abaakouk
</pre>
363 14 Mehdi Abaakouk
364 10 Mehdi Abaakouk
365 10 Mehdi Abaakouk
h3. Changer les cractéristique d'une VM, upgrade disk, net, cpu, mem
366 1 Mehdi Abaakouk
367 10 Mehdi Abaakouk
Et hop une nouvelle carte réseau sur le vlan tsf
368 1 Mehdi Abaakouk
<pre>
369 1 Mehdi Abaakouk
gnt-instance  modify --net add:link=br1 vm1
370 10 Mehdi Abaakouk
</pre>
371 10 Mehdi Abaakouk
372 10 Mehdi Abaakouk
Un petit disk en plus
373 10 Mehdi Abaakouk
<pre>
374 1 Mehdi Abaakouk
gnt-instance  modify --disk add:size=50G vm1
375 10 Mehdi Abaakouk
</pre>
376 10 Mehdi Abaakouk
377 10 Mehdi Abaakouk
Un petite upgrade cpu et mémoire
378 10 Mehdi Abaakouk
<pre>
379 1 Mehdi Abaakouk
gnt-instance modify -B vcpus=2,memory=512M vm1
380 10 Mehdi Abaakouk
</pre>
381 1 Mehdi Abaakouk
382 10 Mehdi Abaakouk
Reboot pour prendre en compte le tout
383 1 Mehdi Abaakouk
<pre>
384 1 Mehdi Abaakouk
gnt-instance reboot -t full vm1
385 10 Mehdi Abaakouk
</pre>
386 10 Mehdi Abaakouk
387 1 Mehdi Abaakouk
== Je voudrais bien booter mon kernel ! ou un cdrom==
388 10 Mehdi Abaakouk
Je peux désactivé le kernel commun pour une vm
389 10 Mehdi Abaakouk
390 10 Mehdi Abaakouk
<pre>
391 10 Mehdi Abaakouk
gnt-instance modify -H kernel_path="" vm1
392 1 Mehdi Abaakouk
</pre>
393 1 Mehdi Abaakouk
Ou booter sur le cdrom pour le prochain démarrage commme ceci:
394 10 Mehdi Abaakouk
395 1 Mehdi Abaakouk
<pre>
396 1 Mehdi Abaakouk
gnt-instance start -H boot_order=cdrom,cdrom_image_path=/path/to/debian-504-amd64-netinst.iso vm1
397 10 Mehdi Abaakouk
</pre>
398 1 Mehdi Abaakouk
399 27 Laurent GUERBY
400 10 Mehdi Abaakouk
h3. Relocaliser les disques secondaires si un serveur est HS.
401 10 Mehdi Abaakouk
402 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
403 1 Mehdi Abaakouk
404 10 Mehdi Abaakouk
<pre>
405 1 Mehdi Abaakouk
gnt-instance replace-disks -I hail vm1
406 1 Mehdi Abaakouk
</pre>
407 1 Mehdi Abaakouk
408 11 Mehdi Abaakouk
409 11 Mehdi Abaakouk
h3. Importer une image disque venant de l’extérieur
410 11 Mehdi Abaakouk
411 11 Mehdi Abaakouk
Convertion de l'image au format raw (si c'est pas déjà le cas)
412 11 Mehdi Abaakouk
<pre>
413 11 Mehdi Abaakouk
kvm-img convert DISQUEVM.qcow -O raw DISQUEVM.raw
414 11 Mehdi Abaakouk
</pre>
415 11 Mehdi Abaakouk
416 11 Mehdi Abaakouk
Copie du disque au format raw sur un lvm
417 11 Mehdi Abaakouk
<pre>
418 11 Mehdi Abaakouk
size=$(kvm-img info DISQUEVM.raw | sed -n -e 's/^virtual size:[^(]*(\([[:digit:]]*\).*)/\1/gp')
419 11 Mehdi Abaakouk
lvcreate -L ${size}b -n lv_migration_DISQUEVM kvmvg
420 11 Mehdi Abaakouk
dd if=DISQUEVM.raw of=/dev/kvmvg/lv_migration_DISQUEVM
421 11 Mehdi Abaakouk
</pre>
422 11 Mehdi Abaakouk
423 11 Mehdi Abaakouk
Création de la VM
424 11 Mehdi Abaakouk
<pre>
425 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
426 11 Mehdi Abaakouk
</pre>
427 11 Mehdi Abaakouk
428 11 Mehdi Abaakouk
Et pour finir, on transforme le format de disque de la VM en drbd:
429 11 Mehdi Abaakouk
<pre>
430 11 Mehdi Abaakouk
gnt-instance modify -t drbd -n h6 VMNAME.tetaneutral.net
431 11 Mehdi Abaakouk
</pre>
432 17 Mehdi Abaakouk
433 11 Mehdi Abaakouk
h3. Copier une VM sur une autre machine
434 11 Mehdi Abaakouk
435 11 Mehdi Abaakouk
Seul la machine *h1* a l'espace configurer pour faire des dumps de machine virtuelle.
436 11 Mehdi Abaakouk
437 11 Mehdi Abaakouk
On lance un backup de celle-ci (attention cette commande *éteint* la machine):
438 11 Mehdi Abaakouk
<pre>
439 11 Mehdi Abaakouk
gnt-backup export -n h1 sileht2
440 11 Mehdi Abaakouk
</pre>
441 11 Mehdi Abaakouk
442 11 Mehdi Abaakouk
Les fichiers sont ensuite sur h1 dans /exports/sileht2.tetaneutral.net/
443 11 Mehdi Abaakouk
444 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:
445 11 Mehdi Abaakouk
<pre>
446 11 Mehdi Abaakouk
09d836a0-22e0-4ea4-9104-c301351bb2e2.disk0_data.snap
447 11 Mehdi Abaakouk
</pre>
448 11 Mehdi Abaakouk
449 11 Mehdi Abaakouk
Pour la démonstration je copie ce fichier sur h2:
450 11 Mehdi Abaakouk
<pre>
451 11 Mehdi Abaakouk
scp /exportfs/sileht2.tetaneutral.net/09d836a0-22e0-4ea4-9104-c301351bb2e2.disk0_data.snap h2:/root/sileht.raw
452 11 Mehdi Abaakouk
</pre>
453 11 Mehdi Abaakouk
454 11 Mehdi Abaakouk
Et je le test avec kvm:
455 11 Mehdi Abaakouk
<pre>
456 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
457 1 Mehdi Abaakouk
</pre>
458 15 Mehdi Abaakouk
459 15 Mehdi Abaakouk
A savoir l'image utilise les pilotes kvm "virtio", si on souhaite utiliser la VM avec un autre logiciel de virtualisation,
460 11 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
461 14 Mehdi Abaakouk
462 44 Laurent GUERBY
h3. Backup disque seul
463 44 Laurent GUERBY
464 44 Laurent GUERBY
gnt-instance activate-disks VMNAME.tetaneutral.net
465 44 Laurent GUERBY
=> affiche le drbd
466 44 Laurent GUERBY
=> copie avec dd
467 44 Laurent GUERBY
puis gnt-instance deactivate-disks VMNAME.tetaneutral.net
468 44 Laurent GUERBY
469 11 Mehdi Abaakouk
h3. Monter une partition de machine virtuelle sur la machine hôte (!Attention DANGER!)
470 11 Mehdi Abaakouk
471 43 Mehdi Abaakouk
Sur le +master node+, arret de la machine et activation des disques
472 11 Mehdi Abaakouk
<pre>
473 11 Mehdi Abaakouk
 $ gnt-instance stop VMNAME.tetaneutral.net
474 11 Mehdi Abaakouk
 $ gnt-instance activate-disks VMNAME.tetaneutral.net
475 43 Mehdi Abaakouk
 h5.tetaneutral.net:disk/0:/dev/drbd34
476 1 Mehdi Abaakouk
</pre>
477 1 Mehdi Abaakouk
478 43 Mehdi Abaakouk
Ensuite se connecter à la machine ou ganeti à préparer le disque, ici +h5+
479 43 Mehdi Abaakouk
480 43 Mehdi Abaakouk
Donc sur +h5+, pour voir les partitions du disque, ici le +/dev/drbd34+:
481 1 Mehdi Abaakouk
<pre>
482 11 Mehdi Abaakouk
kpartx -l /dev/drbd34
483 11 Mehdi Abaakouk
</pre>
484 11 Mehdi Abaakouk
485 43 Mehdi Abaakouk
Sur +h5+, on créé ensuite les partitions dans /dev avec devmapper
486 1 Mehdi Abaakouk
<pre>
487 11 Mehdi Abaakouk
kpartx -a /dev/drbd34
488 11 Mehdi Abaakouk
ls -la /dev/mapper/drbd34*
489 11 Mehdi Abaakouk
</pre>
490 11 Mehdi Abaakouk
491 43 Mehdi Abaakouk
Sur +h5+, a partir de maintenant on peut faire mumuse avec la partition, exemple:
492 11 Mehdi Abaakouk
<pre>
493 11 Mehdi Abaakouk
mount /dev/mapper/drbd34p1 /mnt/
494 1 Mehdi Abaakouk
....
495 1 Mehdi Abaakouk
umount /mnt
496 1 Mehdi Abaakouk
</pre>
497 1 Mehdi Abaakouk
498 43 Mehdi Abaakouk
Puis *très important*, il faut nettoyer devmapper, sur +h5+
499 11 Mehdi Abaakouk
<pre>
500 11 Mehdi Abaakouk
kpartx -d /dev/drbd34
501 43 Mehdi Abaakouk
</pre>
502 43 Mehdi Abaakouk
503 43 Mehdi Abaakouk
Et pour finir sur +master node+, on désactive les disques pour ganeti et on boot la vm:
504 43 Mehdi Abaakouk
<pre>
505 11 Mehdi Abaakouk
gnt-instance deactivate-disks VMNAME.tetaneutral.net
506 11 Mehdi Abaakouk
gnt-instance start VMNAME.tetaneutral.net
507 11 Mehdi Abaakouk
</pre>
508 1 Mehdi Abaakouk
509 10 Mehdi Abaakouk
h2. Administration des serveurs/nodes
510 10 Mehdi Abaakouk
511 10 Mehdi Abaakouk
h3. Éteindre/rebooter provisoirement un des serveurs sans coupure de service
512 10 Mehdi Abaakouk
513 10 Mehdi Abaakouk
La procédure est la suivante:
514 10 Mehdi Abaakouk
 - migration des machines virtuelles sur leurs secondaires
515 10 Mehdi Abaakouk
 - Arret/Ralummage ou reboot du serveur
516 1 Mehdi Abaakouk
 - remigration des machines virtuelles sur le serveur hX
517 10 Mehdi Abaakouk
518 10 Mehdi Abaakouk
<pre>
519 10 Mehdi Abaakouk
gnt-node migrate hX
520 1 Mehdi Abaakouk
shutdown -h now # ou reboot
521 1 Mehdi Abaakouk
hbal -L --no-disk-moves -X
522 10 Mehdi Abaakouk
</pre>
523 10 Mehdi Abaakouk
524 10 Mehdi Abaakouk
La resynchro drbd est automatique.
525 10 Mehdi Abaakouk
526 1 Mehdi Abaakouk
h3. L'extinction d'une node proprement dans le but de la désactivé du cluster
527 10 Mehdi Abaakouk
528 10 Mehdi Abaakouk
<pre>
529 10 Mehdi Abaakouk
gnt-node migrate hX # gnt-node failover hX
530 1 Mehdi Abaakouk
gnt-node evacuate -I hail hX
531 1 Mehdi Abaakouk
gnt-node modify -O yes hX
532 10 Mehdi Abaakouk
</pre>
533 1 Mehdi Abaakouk
534 10 Mehdi Abaakouk
Ici toutes les VMs seront migrés et les données auront été déplacé vers les autres nodes.
535 1 Mehdi Abaakouk
536 10 Mehdi Abaakouk
h3. Vérifier l'état du cluster
537 10 Mehdi Abaakouk
538 1 Mehdi Abaakouk
Sur le masternode normalement h1 faire:
539 10 Mehdi Abaakouk
540 1 Mehdi Abaakouk
<pre>
541 1 Mehdi Abaakouk
gnt-cluster verify
542 10 Mehdi Abaakouk
</pre>
543 1 Mehdi Abaakouk
544 10 Mehdi Abaakouk
h3. Change le node principal (masternode) de "ganeti", celui qui permet de lancer des commandes ganeti.
545 1 Mehdi Abaakouk
546 1 Mehdi Abaakouk
Allez sur un node, taper ceci et il deviendra "maternode":
547 1 Mehdi Abaakouk
548 1 Mehdi Abaakouk
<pre>
549 41 Laurent GUERBY
gnt-cluster master-failover
550 10 Mehdi Abaakouk
</pre>
551 1 Mehdi Abaakouk
552 10 Mehdi Abaakouk
h3. Gestion des fichiers de configuration (ie: /etc/ganeti, /etc/hosts, /etc/rc.local, ...)
553 1 Mehdi Abaakouk
554 1 Mehdi Abaakouk
Tous les fichiers de configuration à synchroniser entre toutes les nodes du cluster sont contenues dans ce script:
555 1 Mehdi Abaakouk
556 1 Mehdi Abaakouk
<pre>
557 1 Mehdi Abaakouk
/etc/ganeti/pushconf.sh
558 10 Mehdi Abaakouk
</pre>
559 1 Mehdi Abaakouk
560 10 Mehdi Abaakouk
Le lancer recopie ces fichiers du masternode vers les autres nodes.
561 10 Mehdi Abaakouk
562 10 Mehdi Abaakouk
h3. Désactiver un serveur qui serait HS du cluster provisoirement.
563 10 Mehdi Abaakouk
564 10 Mehdi Abaakouk
On bascule les machines qui n'ont pas le failover en automatique
565 10 Mehdi Abaakouk
566 10 Mehdi Abaakouk
<pre>
567 10 Mehdi Abaakouk
gnt-node failover [ --ignore-consistency ] h2
568 10 Mehdi Abaakouk
</pre>
569 10 Mehdi Abaakouk
570 10 Mehdi Abaakouk
le --ignore-consistency permet de forcer ganeti à ne pas contrôler le disk avant le basculement
571 10 Mehdi Abaakouk
572 10 Mehdi Abaakouk
On peux (optionnellement) déplacer les disques durs secondaires des VMs
573 10 Mehdi Abaakouk
574 39 Mehdi Abaakouk
<pre>
575 1 Mehdi Abaakouk
gnt-node evacuate [--early-release]  -I hail hX
576 39 Mehdi Abaakouk
</pre>
577 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)
578 10 Mehdi Abaakouk
579 10 Mehdi Abaakouk
Puis on désactive la node:
580 10 Mehdi Abaakouk
581 10 Mehdi Abaakouk
<pre>
582 10 Mehdi Abaakouk
gnt-node modify -O yes h2
583 10 Mehdi Abaakouk
</pre>
584 1 Mehdi Abaakouk
585 11 Mehdi Abaakouk
586 10 Mehdi Abaakouk
h3. Réinsertion dans le cluster d'un node désactivé
587 10 Mehdi Abaakouk
588 10 Mehdi Abaakouk
- On réactive la node
589 10 Mehdi Abaakouk
- On remet dessus des machines et des disques en répartissant la charge du cluster
590 10 Mehdi Abaakouk
591 10 Mehdi Abaakouk
<pre>
592 10 Mehdi Abaakouk
gnt-node modify -O no h2
593 10 Mehdi Abaakouk
hbal -L -X
594 10 Mehdi Abaakouk
</pre>
595 10 Mehdi Abaakouk
596 10 Mehdi Abaakouk
597 10 Mehdi Abaakouk
h2. Setup d'un nouveau NODE
598 10 Mehdi Abaakouk
599 10 Mehdi Abaakouk
h3. Installation
600 1 Mehdi Abaakouk
601 1 Mehdi Abaakouk
* Installer squeeze basique avec juste ssh
602 1 Mehdi Abaakouk
* Ajouter wheezy dans /etc/apt/sources.list
603 1 Mehdi Abaakouk
604 1 Mehdi Abaakouk
<pre>
605 1 Mehdi Abaakouk
# deb http://ftp.fr.debian.org/debian/ squeeze main
606 1 Mehdi Abaakouk
deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
607 1 Mehdi Abaakouk
deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
608 1 Mehdi Abaakouk
deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
609 1 Mehdi Abaakouk
deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
610 1 Mehdi Abaakouk
deb http://ftp.de.debian.org/debian-backports/ squeeze-backports main contrib non-free
611 3 Mehdi Abaakouk
deb-src http://ftp.de.debian.org/debian-backports/ squeeze-backports main contrib non-free
612 3 Mehdi Abaakouk
deb http://security.debian.org/ squeeze/updates main
613 4 Mehdi Abaakouk
deb-src http://security.debian.org/ squeeze/updates main
614 3 Mehdi Abaakouk
# squeeze-updates, previously known as 'volatile'
615 1 Mehdi Abaakouk
deb http://ftp.fr.debian.org/debian/ squeeze-updates main
616 8 Mehdi Abaakouk
deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main
617 8 Mehdi Abaakouk
</pre>
618 8 Mehdi Abaakouk
619 8 Mehdi Abaakouk
* Allouer un port avec 3131, 3175, 3195 tagged sur le procurve
620 7 Mehdi Abaakouk
* Monter le reseau manuellement IP X
621 8 Mehdi Abaakouk
622 7 Mehdi Abaakouk
<pre>
623 8 Mehdi Abaakouk
ip link add link eth0 name eth0.3131 type vlan id 3131
624 7 Mehdi Abaakouk
ip link set eth0.3131 up
625 8 Mehdi Abaakouk
ip addr add 91.224.149.15X/25 dev eth0.3131
626 8 Mehdi Abaakouk
</pre>
627 8 Mehdi Abaakouk
628 7 Mehdi Abaakouk
* Creer /etc/rc.local.conf avec X et Y
629 5 Mehdi Abaakouk
630 5 Mehdi Abaakouk
<pre>
631 6 Mehdi Abaakouk
IP_3131="91.224.149.15X/25"
632 5 Mehdi Abaakouk
GW_3131="91.224.149.254"
633 1 Mehdi Abaakouk
IP_3175="192.168.3.Y/24"
634 5 Mehdi Abaakouk
KVM_DISKS="sdb"
635 1 Mehdi Abaakouk
</pre>
636 1 Mehdi Abaakouk
637 1 Mehdi Abaakouk
* Installer les packages
638 1 Mehdi Abaakouk
639 1 Mehdi Abaakouk
<pre>
640 1 Mehdi Abaakouk
#TODO liste en fichier commit qqpart
641 1 Mehdi Abaakouk
#TODO: passer a une version compilée en local de ganeti pour eviter les update de version wheezy
642 1 Mehdi Abaakouk
dpkg --get-selections | ssh root@h48 dpkg --set-selections
643 5 Mehdi Abaakouk
ssh root@h48 apt-get dselect-upgrade
644 5 Mehdi Abaakouk
</pre>
645 6 Mehdi Abaakouk
646 6 Mehdi Abaakouk
647 5 Mehdi Abaakouk
648 5 Mehdi Abaakouk
* munin:
649 5 Mehdi Abaakouk
dans /etc/munin/munin-node.conf ajouter: allow ^91\.224\.149\.194$
650 1 Mehdi Abaakouk
* TODO patch munin Loic
651 5 Mehdi Abaakouk
http://trac.fsffrance.org/wiki/PatchInventory#Munin
652 1 Mehdi Abaakouk
* reboot
653 5 Mehdi Abaakouk
* Installer le node dans le cluster ganeti apres s'etre assure que la version de ganeti est bien la meme
654 1 Mehdi Abaakouk
655 1 Mehdi Abaakouk
<pre>
656 5 Mehdi Abaakouk
dpkg -l|grep -i ganeti
657 5 Mehdi Abaakouk
gnt-node add h48
658 5 Mehdi Abaakouk
/etc/ganeti/pushconf.sh
659 5 Mehdi Abaakouk
</pre>
660 5 Mehdi Abaakouk
661 5 Mehdi Abaakouk
Appliquer ce patch à ganeti-instance-debootstrap:
662 5 Mehdi Abaakouk
663 5 Mehdi Abaakouk
<pre>
664 5 Mehdi Abaakouk
--- /usr/share/ganeti/os/debootstrap/common.sh.ori  2010-09-15 22:34:12.000000000 +0200
665 5 Mehdi Abaakouk
+++ /usr/share/ganeti/os/debootstrap/common.sh  2011-07-27 12:33:55.695617766 +0200
666 5 Mehdi Abaakouk
@@ -91,7 +91,7 @@
667 1 Mehdi Abaakouk
# some versions of sfdisk need manual specification of
668 5 Mehdi Abaakouk
# head/sectors for devices such as drbd which don't
669 5 Mehdi Abaakouk
# report geometry
670 5 Mehdi Abaakouk
-  sfdisk -H 255 -S 63 --quiet --Linux "$1" <<EOF
671 6 Mehdi Abaakouk
+  sfdisk -H 255 -S 63 -D --quiet --Linux "$1" <<EOF
672 5 Mehdi Abaakouk
0,,L,*
673 3 Mehdi Abaakouk
EOF
674 1 Mehdi Abaakouk
}
675 1 Mehdi Abaakouk
</pre>
676 11 Mehdi Abaakouk
677 3 Mehdi Abaakouk
Ci dessous ajouter dkms et r8168 si nécessaire.
678 15 Mehdi Abaakouk
679 1 Mehdi Abaakouk
h3. Pilotes additionnel
680 1 Mehdi Abaakouk
681 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).
682 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)
683 1 Mehdi Abaakouk
684 1 Mehdi Abaakouk
<pre>
685 1 Mehdi Abaakouk
apt-get install gcc dkms
686 1 Mehdi Abaakouk
cd /usr/src
687 1 Mehdi Abaakouk
wget http://url_to_pilot/r8168-8.024.00.tar.bz2
688 1 Mehdi Abaakouk
tar -xjf r8168-8.024.00.tar.bz2
689 1 Mehdi Abaakouk
cd r8168-8.024.00
690 1 Mehdi Abaakouk
cat > dkms.conf << EOF
691 1 Mehdi Abaakouk
PACKAGE_NAME=r8168
692 1 Mehdi Abaakouk
PACKAGE_VERSION=8.024.00
693 1 Mehdi Abaakouk
MAKE[0]="make"
694 1 Mehdi Abaakouk
BUILT_MODULE_NAME[0]=r8168
695 1 Mehdi Abaakouk
BUILT_MODULE_LOCATION[0]="src/"
696 1 Mehdi Abaakouk
DEST_MODULE_LOCATION[0]="/kernel/updates/dkms"
697 1 Mehdi Abaakouk
AUTOINSTALL="YES"
698 1 Mehdi Abaakouk
EOF
699 1 Mehdi Abaakouk
dkms add -m r8168 -v 8.024.00
700 1 Mehdi Abaakouk
dkms build -m r8168 -v 8.024.00
701 1 Mehdi Abaakouk
dkms install -m r8168 -v 8.024.00
702 1 Mehdi Abaakouk
echo "r8168" >> /etc/modules
703 1 Mehdi Abaakouk
echo "blacklist r8169" >> /etc/modprobe.d/blacklist-network.conf
704 1 Mehdi Abaakouk
update-initramfs -u
705 1 Mehdi Abaakouk
reboot
706 1 Mehdi Abaakouk
</pre>
707 1 Mehdi Abaakouk
708 1 Mehdi Abaakouk
Pour les machines a base de e1000e:
709 1 Mehdi Abaakouk
710 1 Mehdi Abaakouk
<pre>
711 1 Mehdi Abaakouk
apt-get install gcc dkms
712 1 Mehdi Abaakouk
cd /usr/src
713 1 Mehdi Abaakouk
wget http://downloadmirror.intel.com/15817/eng/e1000e-1.3.17.tar.gz
714 1 Mehdi Abaakouk
tar -xzf e1000e-1.3.17.tar.gz
715 1 Mehdi Abaakouk
cd e1000e-1.3.17
716 1 Mehdi Abaakouk
cat > dkms.conf << EOF
717 1 Mehdi Abaakouk
PACKAGE_NAME=e1000e
718 1 Mehdi Abaakouk
PACKAGE_VERSION=1.3.17
719 1 Mehdi Abaakouk
CLEAN="make -C src/ clean"
720 1 Mehdi Abaakouk
MAKE[0]="make -C src/"
721 1 Mehdi Abaakouk
BUILT_MODULE_NAME[0]=e1000e
722 1 Mehdi Abaakouk
BUILT_MODULE_LOCATION[0]="src/"
723 1 Mehdi Abaakouk
DEST_MODULE_LOCATION[0]="/kernel/updates/dkms"
724 1 Mehdi Abaakouk
AUTOINSTALL="YES"
725 1 Mehdi Abaakouk
EOF
726 1 Mehdi Abaakouk
dkms add -m e1000e -v 1.3.17
727 1 Mehdi Abaakouk
dkms build -m e1000e -v 1.3.17
728 1 Mehdi Abaakouk
dkms install -m e1000e -v 1.3.17
729 1 Mehdi Abaakouk
reboot
730 1 Mehdi Abaakouk
</pre>
731 1 Mehdi Abaakouk
732 1 Mehdi Abaakouk
733 13 Mehdi Abaakouk
h2. Annexe 
734 13 Mehdi Abaakouk
735 13 Mehdi Abaakouk
h3. Configuration réseau
736 13 Mehdi Abaakouk
737 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)
738 1 Mehdi Abaakouk
le script /etc/rc.local.conf, contient les adresses IP de la machine et les gw
739 11 Mehdi Abaakouk
740 11 Mehdi Abaakouk
h3. Protection VNC
741 11 Mehdi Abaakouk
742 11 Mehdi Abaakouk
Le VNC de kvm est utiliser sur chaque MV.
743 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
744 11 Mehdi Abaakouk
Ce script est appelé par les hooks ganeti.
745 11 Mehdi Abaakouk
746 11 Mehdi Abaakouk
h3. Mac spoofing configuration (Actuellement désactivé)
747 1 Mehdi Abaakouk
748 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.
749 1 Mehdi Abaakouk
Le fichier prends la forme suivante:
750 1 Mehdi Abaakouk
munin.tetaneutral.net:0:tap3
751 1 Mehdi Abaakouk
trac.tetaneutral.net:0:tap5
752 1 Mehdi Abaakouk
munin.tetaneutral.net:1:tap5
753 1 Mehdi Abaakouk
Les règles ebtables sont écrites par le script /etc/ganeti/spoofing/spoofing-protection avec les informations de ce fichier.
754 1 Mehdi Abaakouk
Les scripts de hook de ganeti (ie:/etc/ganeti/hook/) utilise ce script, pour lancer ou arreter le spoofing.
755 11 Mehdi Abaakouk
756 33 Mehdi Abaakouk
h3. Debootstrap du nouvelle ubuntu >= oneiric:
757 33 Mehdi Abaakouk
758 33 Mehdi Abaakouk
pour les ubuntu oneiric, precise et supérieur il faut créer des liens symbolique pour debootstrap:
759 33 Mehdi Abaakouk
760 33 Mehdi Abaakouk
<pre>
761 33 Mehdi Abaakouk
cd /usr/share/debootstrap/scripts
762 33 Mehdi Abaakouk
ln -s gutsy oneiric
763 33 Mehdi Abaakouk
ln -s gutsy precise
764 33 Mehdi Abaakouk
</pre>
765 33 Mehdi Abaakouk
766 33 Mehdi Abaakouk
ensuite la variante peux être ajouter à ganeti-instace-debootstrap dans /etc/ganeti/instace-debootstrap/variants/...
767 33 Mehdi Abaakouk
768 1 Mehdi Abaakouk
h3. Patch maison pour ganeti
769 11 Mehdi Abaakouk
770 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
771 1 Mehdi Abaakouk
Celui-ci est décrit dans l'installation d'une node aussi.
772 11 Mehdi Abaakouk
773 1 Mehdi Abaakouk
h3. J'ai n'est pas trouvé mon bonheur, comment je vais faire ?!
774 11 Mehdi Abaakouk
775 11 Mehdi Abaakouk
Voici quelques ressources:
776 11 Mehdi Abaakouk
* http://docs.ganeti.org/ganeti/current/html/
777 11 Mehdi Abaakouk
* http://docs.ganeti.org/ganeti/2.1/man/
778 11 Mehdi Abaakouk
* http://wiki.osuosl.org/public/ganeti/
779 1 Mehdi Abaakouk
Ou bien je demande à sileht d'écrire le use case qui me manque s'il à le temps
780 45 Laurent GUERBY
781 45 Laurent GUERBY
h3. Tuning IO
782 45 Laurent GUERBY
783 45 Laurent GUERBY
<pre>
784 45 Laurent GUERBY
KVM_DISKS="WDC_WD20EARS-00_WD-WMAZA0732072"
785 45 Laurent GUERBY
786 45 Laurent GUERBY
for diskname in $KVM_DISKS ; do
787 45 Laurent GUERBY
	disk=$(basename $(readlink -e /dev/disk/by-id/scsi-SATA_$diskname) 2>/dev/null)
788 45 Laurent GUERBY
	[ -z "$disk" -o ! -d "/sys/block/$disk" ] && continue
789 45 Laurent GUERBY
	echo deadline > /sys/block/${disk}/queue/scheduler
790 45 Laurent GUERBY
	echo 1 > /sys/block/${disk}/queue/iosched/fifo_batch
791 45 Laurent GUERBY
	echo 0 > /sys/block/${disk}/queue/iosched/front_merges
792 45 Laurent GUERBY
	echo 2 > /sys/block/${disk}/queue/iosched/read_expire
793 45 Laurent GUERBY
	echo 2 > /sys/block/${disk}/queue/iosched/write_expire
794 45 Laurent GUERBY
	echo 1 > /sys/block/${disk}/queue/iosched/writes_starved
795 45 Laurent GUERBY
done
796 45 Laurent GUERBY
</pre>