Cluster Ganeti » Historique » Version 62
Mehdi Abaakouk, 13/12/2013 09:38
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 | 57 | Laurent GUERBY | Ou avec parted: |
50 | 57 | Laurent GUERBY | |
51 | 57 | Laurent GUERBY | <pre> |
52 | 57 | Laurent GUERBY | (parted) mkpart primary XXgb 100% |
53 | 57 | Laurent GUERBY | (parted) set NN lvm on |
54 | 57 | Laurent GUERBY | </pre> |
55 | 57 | Laurent GUERBY | |
56 | 30 | Mehdi Abaakouk | h3. Création du VG pour ganeti |
57 | 30 | Mehdi Abaakouk | |
58 | 30 | Mehdi Abaakouk | <pre> |
59 | 57 | Laurent GUERBY | apt-get install lvm2 |
60 | 19 | Laurent GUERBY | pvcreate /dev/sda2 |
61 | 1 | Mehdi Abaakouk | vgcreate vg_ganeti /dev/sda2 |
62 | 30 | Mehdi Abaakouk | </pre> |
63 | 18 | Laurent GUERBY | |
64 | 30 | Mehdi Abaakouk | S'il existe déjà vider le volume group et le recreer |
65 | 18 | Laurent GUERBY | |
66 | 18 | Laurent GUERBY | <pre> |
67 | 18 | Laurent GUERBY | pvs |
68 | 1 | Mehdi Abaakouk | vgs |
69 | 1 | Mehdi Abaakouk | lvs |
70 | 18 | Laurent GUERBY | lvremove |
71 | 18 | Laurent GUERBY | vgcreate kvmvg /dev/sdb... #TODO check |
72 | 18 | Laurent GUERBY | </pre> |
73 | 18 | Laurent GUERBY | |
74 | 23 | Laurent GUERBY | h3. Network |
75 | 23 | Laurent GUERBY | |
76 | 20 | Laurent GUERBY | <pre> |
77 | 20 | Laurent GUERBY | # dans /etc/network/interfaces |
78 | 20 | Laurent GUERBY | # The primary network interface |
79 | 20 | Laurent GUERBY | auto eth0 |
80 | 20 | Laurent GUERBY | iface eth0 inet manual |
81 | 20 | Laurent GUERBY | |
82 | 20 | Laurent GUERBY | # dans /etc/rc.local |
83 | 20 | Laurent GUERBY | ip l set eth0 up |
84 | 20 | Laurent GUERBY | |
85 | 20 | Laurent GUERBY | brctl addbr ganeti-br0 |
86 | 20 | Laurent GUERBY | ip li set ganeti-br0 up |
87 | 1 | Mehdi Abaakouk | brctl addif ganeti-br0 eth0 |
88 | 20 | Laurent GUERBY | |
89 | 20 | Laurent GUERBY | ip a a 10.42.0.13/24 dev ganeti-br0 |
90 | 20 | Laurent GUERBY | ip r a default via 10.42.0.1 |
91 | 20 | Laurent GUERBY | |
92 | 20 | Laurent GUERBY | </pre> |
93 | 18 | Laurent GUERBY | |
94 | 23 | Laurent GUERBY | h3. DNS |
95 | 21 | Laurent GUERBY | |
96 | 1 | Mehdi Abaakouk | <pre> |
97 | 1 | Mehdi Abaakouk | # Dans /etc/hosts |
98 | 21 | Laurent GUERBY | 10.42.0.10 tmaster.thsf tmaster |
99 | 21 | Laurent GUERBY | 10.42.0.11 t1.thsf t1 |
100 | 21 | Laurent GUERBY | 10.42.0.12 t2.thsf t2 |
101 | 21 | Laurent GUERBY | 10.42.0.13 t3.thsf t3 |
102 | 21 | Laurent GUERBY | </pre> |
103 | 23 | Laurent GUERBY | |
104 | 23 | Laurent GUERBY | h3. Ganeti Service |
105 | 21 | Laurent GUERBY | |
106 | 31 | Mehdi Abaakouk | On master: |
107 | 1 | Mehdi Abaakouk | |
108 | 31 | Mehdi Abaakouk | Initialiser le cluster: |
109 | 21 | Laurent GUERBY | <pre> |
110 | 21 | Laurent GUERBY | gnt-cluster init --nic-parameters mode=bridged,link=ganeti-br0 --master-netdev=ganeti-br0 \ |
111 | 1 | Mehdi Abaakouk | --vg-name vg_ganeti --enabled-hypervisors=kvm tmaster.thsf |
112 | 31 | Mehdi Abaakouk | </pre> |
113 | 1 | Mehdi Abaakouk | |
114 | 31 | Mehdi Abaakouk | Ajouter un noeud au cluster (t2): |
115 | 31 | Mehdi Abaakouk | <pre> |
116 | 21 | Laurent GUERBY | gnt-node add t2 |
117 | 31 | Mehdi Abaakouk | </pre> |
118 | 21 | Laurent GUERBY | |
119 | 31 | Mehdi Abaakouk | Installation d'outils d'administration de ganeti: |
120 | 21 | Laurent GUERBY | |
121 | 31 | Mehdi Abaakouk | <pre>apt-get install ganeti-htools ganeti-instance-debootstrap</pre> |
122 | 21 | Laurent GUERBY | |
123 | 31 | Mehdi Abaakouk | Ajout d'une VM |
124 | 22 | Laurent GUERBY | |
125 | 31 | Mehdi Abaakouk | <pre># vi /etc/hosts |
126 | 22 | Laurent GUERBY | 10.42.0.101 vm1.thsf vm1 |
127 | 22 | Laurent GUERBY | |
128 | 22 | Laurent GUERBY | gnt-cluster copyfile /etc/hosts |
129 | 22 | Laurent GUERBY | |
130 | 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 \ |
131 | 21 | Laurent GUERBY | -t drbd -B memory=512M,vcpus=1 --disk 0:size=5G -I hail -o debootstrap+default vm1.thsf |
132 | 21 | Laurent GUERBY | </pre> |
133 | 10 | Mehdi Abaakouk | |
134 | 1 | Mehdi Abaakouk | h2. Administration des VMs |
135 | 27 | Laurent GUERBY | |
136 | 60 | Mehdi Abaakouk | |
137 | 48 | Fabien Dupont | h3. Création d'une VM sous FreeBSD (ou autre) |
138 | 48 | Fabien Dupont | |
139 | 48 | Fabien Dupont | Exemple avec la VM anapivirtua : |
140 | 48 | Fabien Dupont | |
141 | 48 | Fabien Dupont | Détermination du nÅud primaire de la VM (ici, h6) : |
142 | 48 | Fabien Dupont | |
143 | 48 | Fabien Dupont | <pre> |
144 | 48 | Fabien Dupont | # gnt-instance list anapivirtua.tetaneutral.net |
145 | 48 | Fabien Dupont | Instance Hypervisor OS Primary_node Status Memory |
146 | 48 | Fabien Dupont | anapivirtua.tetaneutral.net kvm debootstrap+squeeze64 h6.tetaneutral.net running 512M |
147 | 48 | Fabien Dupont | </pre> |
148 | 48 | Fabien Dupont | |
149 | 48 | Fabien Dupont | Téléchargement de l'ISO de FreeBSD sur le nÅud primaire : |
150 | 48 | Fabien Dupont | |
151 | 48 | Fabien Dupont | <pre> |
152 | 48 | Fabien Dupont | # cd ~/fab |
153 | 48 | Fabien Dupont | # wget http://ftp.freebsd.org/pub/FreeBSD/releases/ISO-IMAGES/9.1/FreeBSD-9.1-RELEASE-amd64-bootonly.iso |
154 | 48 | Fabien Dupont | </pre> |
155 | 48 | Fabien Dupont | |
156 | 48 | Fabien Dupont | Sur le master ganeti (h4 actuellement) : |
157 | 48 | Fabien Dupont | |
158 | 50 | Fabien Dupont | FreeBSD ne fonctionne bien qu'avec les cartes ETH émulée de type e1000 et les disques émulés en ide, de plus il ne faut pas que KVM boote un kernel et active la console : |
159 | 50 | Fabien Dupont | |
160 | 48 | Fabien Dupont | <pre> |
161 | 48 | Fabien Dupont | # gnt-instance modify -H serial_console=false anapivirtua.tetaneutral.net |
162 | 1 | Mehdi Abaakouk | # gnt-instance modify -H kernel_path="" anapivirtua.tetaneutral.net |
163 | 50 | Fabien Dupont | # gnt-instance modify -H nic_type="e1000" anapivirtua.tetaneutral.net |
164 | 50 | Fabien Dupont | # gnt-instance modify -H disk_type="ide" anapivirtua.tetaneutral.net |
165 | 1 | Mehdi Abaakouk | </pre> |
166 | 1 | Mehdi Abaakouk | |
167 | 50 | Fabien Dupont | Et on n'a plus qu'à démarrer sur le CD d'install : |
168 | 1 | Mehdi Abaakouk | |
169 | 1 | Mehdi Abaakouk | <pre> |
170 | 50 | Fabien Dupont | # gnt-instance start -H boot_order=cdrom,cdrom_image_path=/root/fab/FreeBSD-9.1-RELEASE-amd64-bootonly.iso anapivirtua.tetaneutral.net |
171 | 48 | Fabien Dupont | </pre> |
172 | 48 | Fabien Dupont | |
173 | 50 | Fabien Dupont | Retour sur le nÅud primaire, ouverture de VNC pour que l'adhérent puisse effectuer l'installation : |
174 | 48 | Fabien Dupont | |
175 | 48 | Fabien Dupont | <pre> |
176 | 48 | Fabien Dupont | # iptables -L -v -n | grep anapivirtua.tetaneutral.net |
177 | 48 | Fabien Dupont | 0 0 REJECT tcp -- * * !91.224.149.193 0.0.0.0/0 tcp dpt:12647 /* VNC for anapivirtua.tetaneutral.net */ reject-with icmp-port-unreachable |
178 | 48 | Fabien Dupont | # iptables -D INPUT -p tcp ! -s 91.224.149.193 --dport 12647 -j REJECT |
179 | 48 | Fabien Dupont | </pre> |
180 | 48 | Fabien Dupont | |
181 | 48 | Fabien Dupont | Communiquer à l'adhérent l'IP et le port pour VNC (ici h6.tetaneutral.net:12647) |
182 | 48 | Fabien Dupont | |
183 | 48 | Fabien Dupont | Une fois qu'il a fini l'installation, il faut refermer VNC et voilà ! |
184 | 48 | Fabien Dupont | |
185 | 48 | Fabien Dupont | <pre> |
186 | 51 | Fabien Dupont | # iptables -A INPUT -p tcp ! -s 91.224.149.193 --dport 12647 -j REJECT -m comment --comment "VNC for anapivirtua.tetaneutral.net" |
187 | 48 | Fabien Dupont | </pre> |
188 | 60 | Mehdi Abaakouk | |
189 | 60 | Mehdi Abaakouk | h3. Réparation de grub dans une VM debian (ou debian like) |
190 | 60 | Mehdi Abaakouk | |
191 | 60 | Mehdi Abaakouk | On va faire booter la VM sur system rescue CD: |
192 | 60 | Mehdi Abaakouk | |
193 | 60 | Mehdi Abaakouk | Sur ganeti master node: |
194 | 60 | Mehdi Abaakouk | |
195 | 60 | Mehdi Abaakouk | <pre> |
196 | 60 | Mehdi Abaakouk | gnt-instance modify -H boot_order=cdrom,cdrom_image_path=/root/systemrescuecd-x86-3.7.0.iso coop-integrale.tetaneutral.net |
197 | 60 | Mehdi Abaakouk | gnt-instance reboot --type=full --shutdown-timeout=0 coop-integrale.tetaneutral.net |
198 | 60 | Mehdi Abaakouk | </pre> |
199 | 60 | Mehdi Abaakouk | |
200 | 60 | Mehdi Abaakouk | De chez soit on se connecte au vnc de la VM |
201 | 60 | Mehdi Abaakouk | |
202 | 60 | Mehdi Abaakouk | On voit l'invite syslinux de system rescue CD, une fois l'OS démarrer, on répare Grub comme ceci: |
203 | 60 | Mehdi Abaakouk | |
204 | 60 | Mehdi Abaakouk | <pre> |
205 | 60 | Mehdi Abaakouk | mount /dev/vda1 /mnt/custom |
206 | 60 | Mehdi Abaakouk | mount -o bind /proc /mnt/custom/proc |
207 | 60 | Mehdi Abaakouk | mount -o bind /sys /mnt/custom/sys |
208 | 60 | Mehdi Abaakouk | mount -o bind /sys /mnt/custom/sys |
209 | 60 | Mehdi Abaakouk | chroot /mnt/custom /bin/bash |
210 | 60 | Mehdi Abaakouk | |
211 | 60 | Mehdi Abaakouk | dpkg-reconfigure grub-pc |
212 | 60 | Mehdi Abaakouk | |
213 | 60 | Mehdi Abaakouk | # quand debconf demande de choisir le device pour grub prendre au moins: /dev/vda |
214 | 60 | Mehdi Abaakouk | |
215 | 60 | Mehdi Abaakouk | exit |
216 | 60 | Mehdi Abaakouk | umount /mnt/custom/* |
217 | 60 | Mehdi Abaakouk | umount /mnt/custom |
218 | 60 | Mehdi Abaakouk | |
219 | 60 | Mehdi Abaakouk | reboot |
220 | 60 | Mehdi Abaakouk | </pre> |
221 | 60 | Mehdi Abaakouk | |
222 | 60 | Mehdi Abaakouk | Choisir au reboot "boot from first disk" pour tester le grub. |
223 | 60 | Mehdi Abaakouk | |
224 | 60 | Mehdi Abaakouk | |
225 | 60 | Mehdi Abaakouk | Puis on reconfigure le boot the le disque à partir du ganeti master node: |
226 | 60 | Mehdi Abaakouk | |
227 | 60 | Mehdi Abaakouk | <pre> |
228 | 60 | Mehdi Abaakouk | gnt-instance modify -H boot_order=disk,cdrom_image_path= coop-integrale.tetaneutral.net |
229 | 60 | Mehdi Abaakouk | gnt-instance reboot --type=full coop-integrale.tetaneutral.net |
230 | 60 | Mehdi Abaakouk | </pre> |
231 | 60 | Mehdi Abaakouk | |
232 | 48 | Fabien Dupont | |
233 | 46 | Laurent GUERBY | h3. Backup et effacement d'une VM |
234 | 46 | Laurent GUERBY | |
235 | 46 | Laurent GUERBY | Vers h2 : |
236 | 46 | Laurent GUERBY | <pre> |
237 | 47 | Laurent GUERBY | gnt-instance shutdown xxx |
238 | 46 | Laurent GUERBY | gnt-instance activate-disks xxx |
239 | 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 |
240 | 46 | Laurent GUERBY | DB=nnn; cat /dev/drbd$DB | gzip --fast|socat -u - tcp4:h2:50555;md5sum /dev/drbd$DB |
241 | 46 | Laurent GUERBY | gnt-instance deactivate-disks xxx |
242 | 46 | Laurent GUERBY | gnt-instance remove xxx |
243 | 46 | Laurent GUERBY | </pre> |
244 | 46 | Laurent GUERBY | |
245 | 34 | Mehdi Abaakouk | h3. Gestion d'un gnt-instance migrate qui reste bloquer |
246 | 34 | Mehdi Abaakouk | |
247 | 34 | Mehdi Abaakouk | Symptôme: la progression du "gnt-instance migrate <vmname>" ne progresse plus" |
248 | 34 | Mehdi Abaakouk | |
249 | 34 | Mehdi Abaakouk | <pre> |
250 | 34 | Mehdi Abaakouk | # gnt-instance info -s nagios | grep 'node.:' -A1 |
251 | 34 | Mehdi Abaakouk | nodeA: h4.tetaneutral.net, minor=18 |
252 | 34 | Mehdi Abaakouk | nodeB: h6.tetaneutral.net, minor=27 |
253 | 34 | Mehdi Abaakouk | port: 12589 |
254 | 34 | Mehdi Abaakouk | </pre> |
255 | 34 | Mehdi Abaakouk | |
256 | 34 | Mehdi Abaakouk | Donc si on regarde sur la machine primaire et secondaire l'état: |
257 | 34 | Mehdi Abaakouk | |
258 | 34 | Mehdi Abaakouk | <pre> |
259 | 34 | Mehdi Abaakouk | # grep '18:' -A5 /proc/drbd # (et sur la secondaire: grep '27:' -A5 /proc/drbd) |
260 | 34 | Mehdi Abaakouk | 0: cs:SyncSource st:Primary/Primary ds:UpToDate/UpToDate C r--- |
261 | 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 |
262 | 34 | Mehdi Abaakouk | [===================>] sync'ed:100.0% (965/6869678)M |
263 | 34 | Mehdi Abaakouk | stalled |
264 | 34 | Mehdi Abaakouk | </pre> |
265 | 34 | Mehdi Abaakouk | |
266 | 34 | Mehdi Abaakouk | Si on tente un commande drbd on a: |
267 | 34 | Mehdi Abaakouk | |
268 | 34 | Mehdi Abaakouk | <pre> |
269 | 34 | Mehdi Abaakouk | # drbdsetup /dev/drbd18 sh-status |
270 | 34 | Mehdi Abaakouk | (longue attente) |
271 | 34 | Mehdi Abaakouk | No response from the DRBD driver! Is the module loaded? |
272 | 34 | Mehdi Abaakouk | </pre> |
273 | 34 | Mehdi Abaakouk | |
274 | 36 | Mehdi Abaakouk | Bref Drbd est dans les choux, ca semble être un bug connu des versions <= 8.3.12 |
275 | 34 | Mehdi Abaakouk | |
276 | 37 | Laurent GUERBY | Sources : |
277 | 37 | Laurent GUERBY | # http://www.mentby.com/Group/drbd-user/recovering-from-erroneous-sync-state.html |
278 | 37 | Laurent GUERBY | # http://lists.linbit.com/pipermail/drbd-dev/2007-May/000751.html |
279 | 37 | Laurent GUERBY | # https://encrypted.google.com/search?q=drbd+stall+100%25&hl=en |
280 | 35 | Laurent GUERBY | |
281 | 34 | Mehdi Abaakouk | Pour réparer sur la machine h4, le node primaire, faire: |
282 | 34 | Mehdi Abaakouk | <pre> |
283 | 34 | Mehdi Abaakouk | # /etc/ganeti/iptables-to-reset-drbd-connection.sh 12589 # <-- 12589 le port de drbd récupéré plus haut |
284 | 34 | Mehdi Abaakouk | |
285 | 34 | Mehdi Abaakouk | ** Attention à être sur la bonne machine ** |
286 | 34 | Mehdi Abaakouk | Pour couper la connection |
287 | 34 | Mehdi Abaakouk | iptables -I INPUT -p tcp --dport 12589 -j REJECT --reject-with tcp-reset |
288 | 34 | Mehdi Abaakouk | iptables -I INPUT -p tcp --sport 12589 -j REJECT --reject-with tcp-reset |
289 | 34 | Mehdi Abaakouk | iptables -I OUTPUT -p tcp --dport 12589 -j REJECT --reject-with tcp-reset |
290 | 34 | Mehdi Abaakouk | iptables -I OUTPUT -p tcp --sport 12589 -j REJECT --reject-with tcp-reset |
291 | 34 | Mehdi Abaakouk | |
292 | 34 | Mehdi Abaakouk | Pour remettre la connection |
293 | 34 | Mehdi Abaakouk | iptables -D INPUT -p tcp --dport 12589 -j REJECT --reject-with tcp-reset |
294 | 34 | Mehdi Abaakouk | iptables -D INPUT -p tcp --sport 12589 -j REJECT --reject-with tcp-reset |
295 | 34 | Mehdi Abaakouk | iptables -D OUTPUT -p tcp --dport 12589 -j REJECT --reject-with tcp-reset |
296 | 34 | Mehdi Abaakouk | iptables -D OUTPUT -p tcp --sport 12589 -j REJECT --reject-with tcp-reset |
297 | 34 | Mehdi Abaakouk | </pre> |
298 | 34 | Mehdi Abaakouk | |
299 | 34 | Mehdi Abaakouk | Exécuter la première partie puis vérifier dans /proc/drbd qui celui-ci est en WFConnection. |
300 | 34 | Mehdi Abaakouk | |
301 | 34 | Mehdi Abaakouk | Puis rétablir la connexion avec la seconde partie et vérifier /proc/drbd que c'est bien reconnecté. |
302 | 34 | Mehdi Abaakouk | |
303 | 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: |
304 | 34 | Mehdi Abaakouk | |
305 | 34 | Mehdi Abaakouk | <pre> |
306 | 34 | Mehdi Abaakouk | # /etc/init.d/ganeti restart |
307 | 34 | Mehdi Abaakouk | </pre> |
308 | 34 | Mehdi Abaakouk | Ceci passe en error le job de migration |
309 | 34 | Mehdi Abaakouk | |
310 | 34 | Mehdi Abaakouk | Puis sur le master node, on nettoye les résidu de la migration échouée: |
311 | 34 | Mehdi Abaakouk | <pre> |
312 | 34 | Mehdi Abaakouk | # gnt-instance migrate --cleanup nagios |
313 | 34 | Mehdi Abaakouk | </pre> |
314 | 34 | Mehdi Abaakouk | |
315 | 34 | Mehdi Abaakouk | |
316 | 18 | Laurent GUERBY | h3. Gestion d'un disque en I/O error |
317 | 27 | Laurent GUERBY | |
318 | 1 | Mehdi Abaakouk | First put the disk in failure offline: |
319 | 28 | Mehdi Abaakouk | |
320 | 28 | Mehdi Abaakouk | <pre>echo offline > /sys/block/sdb/device/state</pre> |
321 | 27 | Laurent GUERBY | |
322 | 1 | Mehdi Abaakouk | Then we need to remove the volume group, here /dev/kvmvg |
323 | 27 | Laurent GUERBY | We need to do it manually because vgremove will not work in this case |
324 | 28 | Mehdi Abaakouk | |
325 | 27 | Laurent GUERBY | <pre>/dev/kvmvg# for i in *; do echo === $(date) == $i ; dmsetup remove /dev/kvmvg/"$i"; echo $?; done</pre> |
326 | 1 | Mehdi Abaakouk | |
327 | 27 | Laurent GUERBY | This will leave a few lv when ganeti hasnt detected for some reason the disk failure. |
328 | 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 |
329 | 28 | Mehdi Abaakouk | |
330 | 27 | Laurent GUERBY | <pre>drbdsetup /dev/drbd47 detach</pre> |
331 | 27 | Laurent GUERBY | |
332 | 27 | Laurent GUERBY | Then gnt-instance info VM to force ganeti to recognize the disk failure (it will take a few minutes) |
333 | 27 | Laurent GUERBY | |
334 | 27 | Laurent GUERBY | Then dmsetup remove will work. |
335 | 27 | Laurent GUERBY | |
336 | 27 | Laurent GUERBY | After the last dmsetup remove /dev/kvmvg will disappear. |
337 | 27 | Laurent GUERBY | |
338 | 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) |
339 | 27 | Laurent GUERBY | Then create a LVM partition then vgcreate kvmvg /dev/sdX |
340 | 1 | Mehdi Abaakouk | |
341 | 27 | Laurent GUERBY | Now we need to recreate redundancy |
342 | 27 | Laurent GUERBY | |
343 | 1 | Mehdi Abaakouk | On the still running VM you can use |
344 | 28 | Mehdi Abaakouk | |
345 | 27 | Laurent GUERBY | <pre>gnt-instance replace-disks --submit -a VMname</pre> |
346 | 1 | Mehdi Abaakouk | |
347 | 27 | Laurent GUERBY | On the stopped VM you need to do manually |
348 | 28 | Mehdi Abaakouk | |
349 | 28 | Mehdi Abaakouk | <pre>gnt-instance replace-disks --submit -p VMname # if primary to reconstruct |
350 | 1 | Mehdi Abaakouk | gnt-instance replace-disks --submit -s VMname # if secondary to reconstruct</pre> |
351 | 1 | Mehdi Abaakouk | |
352 | 1 | Mehdi Abaakouk | At 15 MByte/s 1 TB to reconstruct will take about 18h30. |
353 | 28 | Mehdi Abaakouk | |
354 | 27 | Laurent GUERBY | Before remove the disk from the server, we must prepare the disk for unplug: |
355 | 29 | Mehdi Abaakouk | |
356 | 28 | Mehdi Abaakouk | <pre>echo 1 > /sys/block/sdX/device/delete</pre> |
357 | 28 | Mehdi Abaakouk | |
358 | 28 | Mehdi Abaakouk | |
359 | 28 | Mehdi Abaakouk | Links: |
360 | 27 | Laurent GUERBY | |
361 | 27 | Laurent GUERBY | http://docs.ganeti.org/ganeti/2.5/html/admin.html#preparing-for-disk-operations |
362 | 27 | Laurent GUERBY | http://docs.ganeti.org/ganeti/2.5/html/admin.html#generalized-storage-handling |
363 | 28 | Mehdi Abaakouk | http://www.lancealbertson.com/2011/02/handling-hdd-failures-with-ganeti/ |
364 | 27 | Laurent GUERBY | http://www.sakana.fr/blog/2009/05/04/linux-sata-hot-plug-unplug/ |
365 | 10 | Mehdi Abaakouk | |
366 | 1 | Mehdi Abaakouk | h3. Demarrer et arrêter une instance ? |
367 | 10 | Mehdi Abaakouk | |
368 | 10 | Mehdi Abaakouk | <pre> |
369 | 10 | Mehdi Abaakouk | gnt-instance start vm1 |
370 | 10 | Mehdi Abaakouk | gnt-instance stop vm1 |
371 | 1 | Mehdi Abaakouk | </pre> |
372 | 26 | Mehdi Abaakouk | |
373 | 26 | Mehdi Abaakouk | Si pendant l'extinction de la VM le message suivant apparait: |
374 | 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> |
375 | 26 | Mehdi Abaakouk | |
376 | 26 | Mehdi Abaakouk | Sur h6 on peut remarquer que l'on a un status non nominal sur drbd: |
377 | 26 | Mehdi Abaakouk | <pre>$ grep -A4 45: /proc/drbd |
378 | 26 | Mehdi Abaakouk | 45: cs:WFConnection ro:Primary/Unknown ds:UpToDate/DUnknown C r---- |
379 | 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 |
380 | 26 | Mehdi Abaakouk | </pre> |
381 | 26 | Mehdi Abaakouk | |
382 | 26 | Mehdi Abaakouk | Pour résoudre le probléme taper: |
383 | 26 | Mehdi Abaakouk | <pre>drbdsetup /dev/drbd45 down</pre> |
384 | 26 | Mehdi Abaakouk | |
385 | 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: |
386 | 26 | Mehdi Abaakouk | <pre>dmsetup ls | grep drbd45</pre> |
387 | 26 | Mehdi Abaakouk | |
388 | 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 |
389 | 10 | Mehdi Abaakouk | |
390 | 1 | Mehdi Abaakouk | h3. Comment tout savoir sur une vm ? |
391 | 1 | Mehdi Abaakouk | |
392 | 1 | Mehdi Abaakouk | <pre> |
393 | 1 | Mehdi Abaakouk | gnt-instance info vm1 |
394 | 1 | Mehdi Abaakouk | </pre> |
395 | 10 | Mehdi Abaakouk | |
396 | 1 | Mehdi Abaakouk | h3. Déplacement le(s) disque(s) dur d'une VM |
397 | 1 | Mehdi Abaakouk | |
398 | 1 | Mehdi Abaakouk | Si la machine a ces disques au format plain (sans drbd), taper: |
399 | 1 | Mehdi Abaakouk | |
400 | 1 | Mehdi Abaakouk | <pre> |
401 | 1 | Mehdi Abaakouk | gnt-instance stop vm1 |
402 | 1 | Mehdi Abaakouk | gnt-instance move -n h6 vm1 |
403 | 1 | Mehdi Abaakouk | gnt-instance start vm1 |
404 | 1 | Mehdi Abaakouk | </pre> |
405 | 1 | Mehdi Abaakouk | |
406 | 1 | Mehdi Abaakouk | Si la machine utilise drbd (uniquement le disque de la node secondaire bascule): |
407 | 1 | Mehdi Abaakouk | |
408 | 1 | Mehdi Abaakouk | <pre> |
409 | 1 | Mehdi Abaakouk | gnt-instance replace-disks -n h6 vm1 |
410 | 10 | Mehdi Abaakouk | </pre> |
411 | 1 | Mehdi Abaakouk | |
412 | 1 | Mehdi Abaakouk | Si vous voulais déplacer l'autre disque du drbd, il faut basculer la machine, puis refaire la même chose |
413 | 10 | Mehdi Abaakouk | |
414 | 1 | Mehdi Abaakouk | h3. Basculer/migrer une machine qui utilise drbd |
415 | 1 | Mehdi Abaakouk | |
416 | 1 | Mehdi Abaakouk | Bascule avec arret de la machine: |
417 | 1 | Mehdi Abaakouk | |
418 | 1 | Mehdi Abaakouk | <pre> |
419 | 1 | Mehdi Abaakouk | gnt-instance failover vm1 |
420 | 1 | Mehdi Abaakouk | </pre> |
421 | 10 | Mehdi Abaakouk | |
422 | 10 | Mehdi Abaakouk | Sans arrêt, migration à chaud: |
423 | 1 | Mehdi Abaakouk | |
424 | 1 | Mehdi Abaakouk | <pre> |
425 | 1 | Mehdi Abaakouk | gnt-instance migrate vm1 |
426 | 10 | Mehdi Abaakouk | </pre> |
427 | 1 | Mehdi Abaakouk | |
428 | 1 | Mehdi Abaakouk | En cas de soucis primaire/secondaire: |
429 | 1 | Mehdi Abaakouk | |
430 | 1 | Mehdi Abaakouk | <pre> |
431 | 1 | Mehdi Abaakouk | gnt-instance migrate --cleanup vm1 |
432 | 1 | Mehdi Abaakouk | </pre> |
433 | 10 | Mehdi Abaakouk | |
434 | 42 | Laurent GUERBY | cleanup marche en cas de split brain, example de /proc/drbd : |
435 | 42 | Laurent GUERBY | <pre> |
436 | 42 | Laurent GUERBY | h5: cs:WFConnection ro:Primary/Unknown ds:UpToDate/DUnknown C r---- |
437 | 42 | Laurent GUERBY | h1: cs:StandAlone ro:Primary/Unknown ds:UpToDate/DUnknown r---- |
438 | 42 | Laurent GUERBY | </pre> |
439 | 42 | Laurent GUERBY | |
440 | 1 | Mehdi Abaakouk | h3. Création d'une machine |
441 | 10 | Mehdi Abaakouk | |
442 | 10 | Mehdi Abaakouk | Un script est présent sur h1 voici ca doc: |
443 | 10 | Mehdi Abaakouk | <pre> |
444 | 10 | Mehdi Abaakouk | # /root/gnt-addvm |
445 | 10 | Mehdi Abaakouk | usage: gnt-addvm [options] VIRTUAL_MACHINE_HOSTNAME |
446 | 10 | Mehdi Abaakouk | -o OS | --os OS OS can be default natty32 natty64 sid64 squeeze32 squeeze64 wheezy64 |
447 | 10 | Mehdi Abaakouk | -s SIZE | --size SIZE default SIZE is 10G |
448 | 10 | Mehdi Abaakouk | -m MEM | --mem MEM default MEM is 256M |
449 | 10 | Mehdi Abaakouk | -c CPU | --cpu CPU default CPU is 1 |
450 | 10 | Mehdi Abaakouk | -n NODES | --nodes NODES default NODES is |
451 | 10 | Mehdi Abaakouk | -d MODE | --disk MODE default MODE is drbd |
452 | 10 | Mehdi Abaakouk | -q | --quick don't wait drbd sync |
453 | 10 | Mehdi Abaakouk | --dry-run show executed command |
454 | 10 | Mehdi Abaakouk | --cdrom PATH installation from iso file |
455 | 1 | Mehdi Abaakouk | </pre> |
456 | 10 | Mehdi Abaakouk | |
457 | 10 | Mehdi Abaakouk | |
458 | 10 | Mehdi Abaakouk | h3. Supprimer une machine |
459 | 1 | Mehdi Abaakouk | |
460 | 10 | Mehdi Abaakouk | <pre> |
461 | 1 | Mehdi Abaakouk | gnt-instance remove vm1 |
462 | 1 | Mehdi Abaakouk | </pre> |
463 | 10 | Mehdi Abaakouk | |
464 | 1 | Mehdi Abaakouk | si la vm est en drbd et que une des nodes du drbd ne fonctionne plus |
465 | 10 | Mehdi Abaakouk | |
466 | 1 | Mehdi Abaakouk | <pre> |
467 | 1 | Mehdi Abaakouk | gnt-instance remove --ignore-failures vm1 |
468 | 10 | Mehdi Abaakouk | </pre> |
469 | 14 | Mehdi Abaakouk | |
470 | 10 | Mehdi Abaakouk | |
471 | 10 | Mehdi Abaakouk | h3. Changer les cractéristique d'une VM, upgrade disk, net, cpu, mem |
472 | 1 | Mehdi Abaakouk | |
473 | 10 | Mehdi Abaakouk | Et hop une nouvelle carte réseau sur le vlan tsf |
474 | 1 | Mehdi Abaakouk | <pre> |
475 | 1 | Mehdi Abaakouk | gnt-instance modify --net add:link=br1 vm1 |
476 | 10 | Mehdi Abaakouk | </pre> |
477 | 10 | Mehdi Abaakouk | |
478 | 10 | Mehdi Abaakouk | Un petit disk en plus |
479 | 10 | Mehdi Abaakouk | <pre> |
480 | 1 | Mehdi Abaakouk | gnt-instance modify --disk add:size=50G vm1 |
481 | 10 | Mehdi Abaakouk | </pre> |
482 | 10 | Mehdi Abaakouk | |
483 | 10 | Mehdi Abaakouk | Un petite upgrade cpu et mémoire |
484 | 10 | Mehdi Abaakouk | <pre> |
485 | 1 | Mehdi Abaakouk | gnt-instance modify -B vcpus=2,memory=512M vm1 |
486 | 10 | Mehdi Abaakouk | </pre> |
487 | 1 | Mehdi Abaakouk | |
488 | 10 | Mehdi Abaakouk | Reboot pour prendre en compte le tout |
489 | 1 | Mehdi Abaakouk | <pre> |
490 | 1 | Mehdi Abaakouk | gnt-instance reboot -t full vm1 |
491 | 10 | Mehdi Abaakouk | </pre> |
492 | 10 | Mehdi Abaakouk | |
493 | 1 | Mehdi Abaakouk | == Je voudrais bien booter mon kernel ! ou un cdrom== |
494 | 10 | Mehdi Abaakouk | Je peux désactivé le kernel commun pour une vm |
495 | 10 | Mehdi Abaakouk | |
496 | 10 | Mehdi Abaakouk | <pre> |
497 | 10 | Mehdi Abaakouk | gnt-instance modify -H kernel_path="" vm1 |
498 | 1 | Mehdi Abaakouk | </pre> |
499 | 1 | Mehdi Abaakouk | Ou booter sur le cdrom pour le prochain démarrage commme ceci: |
500 | 10 | Mehdi Abaakouk | |
501 | 1 | Mehdi Abaakouk | <pre> |
502 | 1 | Mehdi Abaakouk | gnt-instance start -H boot_order=cdrom,cdrom_image_path=/path/to/debian-504-amd64-netinst.iso vm1 |
503 | 10 | Mehdi Abaakouk | </pre> |
504 | 1 | Mehdi Abaakouk | |
505 | 27 | Laurent GUERBY | |
506 | 61 | Fabien Dupont | h3. Redimensionner un disque dur |
507 | 61 | Fabien Dupont | |
508 | 61 | Fabien Dupont | Il faut d'abord arrêter la VM (ici: malbec.kafe-in.net) : |
509 | 61 | Fabien Dupont | |
510 | 61 | Fabien Dupont | <pre> |
511 | 61 | Fabien Dupont | gnt-instance shutdown malbec.kafe-in.net |
512 | 61 | Fabien Dupont | </pre> |
513 | 61 | Fabien Dupont | |
514 | 61 | Fabien Dupont | Puis il faut redimensionner le disque dur (ici, on ajoute 2Go au disque 0) : |
515 | 61 | Fabien Dupont | |
516 | 61 | Fabien Dupont | <pre> |
517 | 61 | Fabien Dupont | gnt-instance grow-disk malbec.kafe-in.net 0 2G |
518 | 61 | Fabien Dupont | </pre> |
519 | 61 | Fabien Dupont | |
520 | 61 | Fabien Dupont | Pour redimensionner la partition dans le disque, il faut l'activer : |
521 | 61 | Fabien Dupont | |
522 | 61 | Fabien Dupont | <pre> |
523 | 61 | Fabien Dupont | gnt-instance activate-disks malbec.kafe-in.net |
524 | 61 | Fabien Dupont | h1.tetaneutral.net:disk/0:/dev/drbd4 |
525 | 61 | Fabien Dupont | </pre> |
526 | 61 | Fabien Dupont | |
527 | 61 | Fabien Dupont | On voit ici que le disque primaire a été activé sur h1.tetaneutral.net et c'est le device /dev/drbd4. |
528 | 61 | Fabien Dupont | |
529 | 61 | Fabien Dupont | Donc, direction h1.tetaneutral.net pour redimensionner la partition à l'aide de sfdisk : |
530 | 61 | Fabien Dupont | |
531 | 61 | Fabien Dupont | <pre> |
532 | 61 | Fabien Dupont | sfdisk -H 64 -S 32 -u S --quiet --Linux /dev/drbd4 << EOF |
533 | 61 | Fabien Dupont | 2048,,L,* |
534 | 61 | Fabien Dupont | EOF |
535 | 61 | Fabien Dupont | </pre> |
536 | 61 | Fabien Dupont | |
537 | 61 | Fabien Dupont | Ici, on a modifié la table des partitions de /dev/drbd4 pour y définir une partition démarrant au secteur 2048, de type Linux et occupant la totalité (*) du disque. |
538 | 61 | Fabien Dupont | |
539 | 61 | Fabien Dupont | Une fois la partition redimensionnée, il faut retailler le système de fichier (toujours sur h1.tetaneutral.net) : |
540 | 61 | Fabien Dupont | |
541 | 61 | Fabien Dupont | <pre> |
542 | 61 | Fabien Dupont | kpartx -a /dev/drbd4 |
543 | 61 | Fabien Dupont | fsck /dev/mapper/drbd4p1 |
544 | 61 | Fabien Dupont | resize2fs /dev/mapper/drbd4p1 |
545 | 61 | Fabien Dupont | kpartx -d /dev/drbd4 |
546 | 61 | Fabien Dupont | </pre> |
547 | 61 | Fabien Dupont | |
548 | 61 | Fabien Dupont | Et voilà , retourne sur le master du cluster, il ne reste qu'à désactiver les disques et redémarrer la VM : |
549 | 61 | Fabien Dupont | |
550 | 61 | Fabien Dupont | <pre> |
551 | 61 | Fabien Dupont | gnt-instance deactivate-disks malbec.kafe-in.net |
552 | 61 | Fabien Dupont | gnt-instance startup malbec.kafe-in.net |
553 | 61 | Fabien Dupont | </pre> |
554 | 61 | Fabien Dupont | |
555 | 10 | Mehdi Abaakouk | h3. Relocaliser les disques secondaires si un serveur est HS. |
556 | 10 | Mehdi Abaakouk | |
557 | 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 |
558 | 1 | Mehdi Abaakouk | |
559 | 10 | Mehdi Abaakouk | <pre> |
560 | 1 | Mehdi Abaakouk | gnt-instance replace-disks -I hail vm1 |
561 | 1 | Mehdi Abaakouk | </pre> |
562 | 1 | Mehdi Abaakouk | |
563 | 11 | Mehdi Abaakouk | |
564 | 11 | Mehdi Abaakouk | h3. Importer une image disque venant de lâextérieur |
565 | 11 | Mehdi Abaakouk | |
566 | 11 | Mehdi Abaakouk | Convertion de l'image au format raw (si c'est pas déjà le cas) |
567 | 11 | Mehdi Abaakouk | <pre> |
568 | 11 | Mehdi Abaakouk | kvm-img convert DISQUEVM.qcow -O raw DISQUEVM.raw |
569 | 11 | Mehdi Abaakouk | </pre> |
570 | 11 | Mehdi Abaakouk | |
571 | 11 | Mehdi Abaakouk | Copie du disque au format raw sur un lvm |
572 | 11 | Mehdi Abaakouk | <pre> |
573 | 11 | Mehdi Abaakouk | size=$(kvm-img info DISQUEVM.raw | sed -n -e 's/^virtual size:[^(]*(\([[:digit:]]*\).*)/\1/gp') |
574 | 11 | Mehdi Abaakouk | lvcreate -L ${size}b -n lv_migration_DISQUEVM kvmvg |
575 | 11 | Mehdi Abaakouk | dd if=DISQUEVM.raw of=/dev/kvmvg/lv_migration_DISQUEVM |
576 | 11 | Mehdi Abaakouk | </pre> |
577 | 11 | Mehdi Abaakouk | |
578 | 11 | Mehdi Abaakouk | Création de la VM |
579 | 11 | Mehdi Abaakouk | <pre> |
580 | 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 |
581 | 11 | Mehdi Abaakouk | </pre> |
582 | 11 | Mehdi Abaakouk | |
583 | 11 | Mehdi Abaakouk | Et pour finir, on transforme le format de disque de la VM en drbd: |
584 | 11 | Mehdi Abaakouk | <pre> |
585 | 11 | Mehdi Abaakouk | gnt-instance modify -t drbd -n h6 VMNAME.tetaneutral.net |
586 | 11 | Mehdi Abaakouk | </pre> |
587 | 17 | Mehdi Abaakouk | |
588 | 11 | Mehdi Abaakouk | h3. Copier une VM sur une autre machine |
589 | 11 | Mehdi Abaakouk | |
590 | 11 | Mehdi Abaakouk | Seul la machine *h1* a l'espace configurer pour faire des dumps de machine virtuelle. |
591 | 11 | Mehdi Abaakouk | |
592 | 11 | Mehdi Abaakouk | On lance un backup de celle-ci (attention cette commande *éteint* la machine): |
593 | 11 | Mehdi Abaakouk | <pre> |
594 | 11 | Mehdi Abaakouk | gnt-backup export -n h1 sileht2 |
595 | 11 | Mehdi Abaakouk | </pre> |
596 | 11 | Mehdi Abaakouk | |
597 | 11 | Mehdi Abaakouk | Les fichiers sont ensuite sur h1 dans /exports/sileht2.tetaneutral.net/ |
598 | 11 | Mehdi Abaakouk | |
599 | 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: |
600 | 11 | Mehdi Abaakouk | <pre> |
601 | 11 | Mehdi Abaakouk | 09d836a0-22e0-4ea4-9104-c301351bb2e2.disk0_data.snap |
602 | 11 | Mehdi Abaakouk | </pre> |
603 | 11 | Mehdi Abaakouk | |
604 | 11 | Mehdi Abaakouk | Pour la démonstration je copie ce fichier sur h2: |
605 | 11 | Mehdi Abaakouk | <pre> |
606 | 11 | Mehdi Abaakouk | scp /exportfs/sileht2.tetaneutral.net/09d836a0-22e0-4ea4-9104-c301351bb2e2.disk0_data.snap h2:/root/sileht.raw |
607 | 11 | Mehdi Abaakouk | </pre> |
608 | 11 | Mehdi Abaakouk | |
609 | 11 | Mehdi Abaakouk | Et je le test avec kvm: |
610 | 11 | Mehdi Abaakouk | <pre> |
611 | 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 |
612 | 1 | Mehdi Abaakouk | </pre> |
613 | 15 | Mehdi Abaakouk | |
614 | 15 | Mehdi Abaakouk | A savoir l'image utilise les pilotes kvm "virtio", si on souhaite utiliser la VM avec un autre logiciel de virtualisation, |
615 | 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 |
616 | 14 | Mehdi Abaakouk | |
617 | 44 | Laurent GUERBY | h3. Backup disque seul |
618 | 44 | Laurent GUERBY | |
619 | 44 | Laurent GUERBY | gnt-instance activate-disks VMNAME.tetaneutral.net |
620 | 44 | Laurent GUERBY | => affiche le drbd |
621 | 44 | Laurent GUERBY | => copie avec dd |
622 | 44 | Laurent GUERBY | puis gnt-instance deactivate-disks VMNAME.tetaneutral.net |
623 | 44 | Laurent GUERBY | |
624 | 11 | Mehdi Abaakouk | h3. Monter une partition de machine virtuelle sur la machine hôte (!Attention DANGER!) |
625 | 11 | Mehdi Abaakouk | |
626 | 43 | Mehdi Abaakouk | Sur le +master node+, arret de la machine et activation des disques |
627 | 11 | Mehdi Abaakouk | <pre> |
628 | 11 | Mehdi Abaakouk | $ gnt-instance stop VMNAME.tetaneutral.net |
629 | 11 | Mehdi Abaakouk | $ gnt-instance activate-disks VMNAME.tetaneutral.net |
630 | 43 | Mehdi Abaakouk | h5.tetaneutral.net:disk/0:/dev/drbd34 |
631 | 1 | Mehdi Abaakouk | </pre> |
632 | 1 | Mehdi Abaakouk | |
633 | 43 | Mehdi Abaakouk | Ensuite se connecter à la machine ou ganeti à préparer le disque, ici +h5+ |
634 | 43 | Mehdi Abaakouk | |
635 | 43 | Mehdi Abaakouk | Donc sur +h5+, pour voir les partitions du disque, ici le +/dev/drbd34+: |
636 | 1 | Mehdi Abaakouk | <pre> |
637 | 11 | Mehdi Abaakouk | kpartx -l /dev/drbd34 |
638 | 11 | Mehdi Abaakouk | </pre> |
639 | 11 | Mehdi Abaakouk | |
640 | 43 | Mehdi Abaakouk | Sur +h5+, on créé ensuite les partitions dans /dev avec devmapper |
641 | 1 | Mehdi Abaakouk | <pre> |
642 | 11 | Mehdi Abaakouk | kpartx -a /dev/drbd34 |
643 | 11 | Mehdi Abaakouk | ls -la /dev/mapper/drbd34* |
644 | 11 | Mehdi Abaakouk | </pre> |
645 | 11 | Mehdi Abaakouk | |
646 | 43 | Mehdi Abaakouk | Sur +h5+, a partir de maintenant on peut faire mumuse avec la partition, exemple: |
647 | 11 | Mehdi Abaakouk | <pre> |
648 | 11 | Mehdi Abaakouk | mount /dev/mapper/drbd34p1 /mnt/ |
649 | 1 | Mehdi Abaakouk | .... |
650 | 1 | Mehdi Abaakouk | umount /mnt |
651 | 1 | Mehdi Abaakouk | </pre> |
652 | 1 | Mehdi Abaakouk | |
653 | 43 | Mehdi Abaakouk | Puis *très important*, il faut nettoyer devmapper, sur +h5+ |
654 | 11 | Mehdi Abaakouk | <pre> |
655 | 11 | Mehdi Abaakouk | kpartx -d /dev/drbd34 |
656 | 43 | Mehdi Abaakouk | </pre> |
657 | 43 | Mehdi Abaakouk | |
658 | 43 | Mehdi Abaakouk | Et pour finir sur +master node+, on désactive les disques pour ganeti et on boot la vm: |
659 | 43 | Mehdi Abaakouk | <pre> |
660 | 11 | Mehdi Abaakouk | gnt-instance deactivate-disks VMNAME.tetaneutral.net |
661 | 11 | Mehdi Abaakouk | gnt-instance start VMNAME.tetaneutral.net |
662 | 11 | Mehdi Abaakouk | </pre> |
663 | 1 | Mehdi Abaakouk | |
664 | 10 | Mehdi Abaakouk | h2. Administration des serveurs/nodes |
665 | 10 | Mehdi Abaakouk | |
666 | 58 | Laurent GUERBY | h3. Fichiers |
667 | 58 | Laurent GUERBY | |
668 | 58 | Laurent GUERBY | * /var/cache/ganeti-instance-debootstrap/cache-squeeze-amd64.tar => cache de debootstrap |
669 | 58 | Laurent GUERBY | * /etc/default/ganeti-instance-debootstrap => variables de configuration dont CLEAN_CACHE pour la duree de vie du cache |
670 | 58 | Laurent GUERBY | * /var/log/ganeti/os/add-debootstrap+wheezy64-elmer.tetaneutral.net-2013-06-24_14_35_12.log => log de création de VM |
671 | 58 | Laurent GUERBY | * /etc/ganeti/instance-debootstrap/hooks => hooks de creation de VM |
672 | 59 | Laurent GUERBY | * /etc/ganeti/instance-debootstrap/variants.list => liste des version OS |
673 | 59 | Laurent GUERBY | * /etc/ganeti/instance-debootstrap/variants/wheezy64.conf => script de definition des variables de configuration specifique a chaque version OS |
674 | 58 | Laurent GUERBY | |
675 | 58 | Laurent GUERBY | |
676 | 10 | Mehdi Abaakouk | h3. Ãteindre/rebooter provisoirement un des serveurs sans coupure de service |
677 | 10 | Mehdi Abaakouk | |
678 | 10 | Mehdi Abaakouk | La procédure est la suivante: |
679 | 10 | Mehdi Abaakouk | - migration des machines virtuelles sur leurs secondaires |
680 | 10 | Mehdi Abaakouk | - Arret/Ralummage ou reboot du serveur |
681 | 1 | Mehdi Abaakouk | - remigration des machines virtuelles sur le serveur hX |
682 | 10 | Mehdi Abaakouk | |
683 | 10 | Mehdi Abaakouk | <pre> |
684 | 10 | Mehdi Abaakouk | gnt-node migrate hX |
685 | 1 | Mehdi Abaakouk | shutdown -h now # ou reboot |
686 | 1 | Mehdi Abaakouk | hbal -L --no-disk-moves -X |
687 | 10 | Mehdi Abaakouk | </pre> |
688 | 10 | Mehdi Abaakouk | |
689 | 10 | Mehdi Abaakouk | La resynchro drbd est automatique. |
690 | 10 | Mehdi Abaakouk | |
691 | 1 | Mehdi Abaakouk | h3. L'extinction d'une node proprement dans le but de la désactivé du cluster |
692 | 10 | Mehdi Abaakouk | |
693 | 10 | Mehdi Abaakouk | <pre> |
694 | 10 | Mehdi Abaakouk | gnt-node migrate hX # gnt-node failover hX |
695 | 1 | Mehdi Abaakouk | gnt-node evacuate -I hail hX |
696 | 1 | Mehdi Abaakouk | gnt-node modify -O yes hX |
697 | 10 | Mehdi Abaakouk | </pre> |
698 | 1 | Mehdi Abaakouk | |
699 | 10 | Mehdi Abaakouk | Ici toutes les VMs seront migrés et les données auront été déplacé vers les autres nodes. |
700 | 1 | Mehdi Abaakouk | |
701 | 10 | Mehdi Abaakouk | h3. Vérifier l'état du cluster |
702 | 10 | Mehdi Abaakouk | |
703 | 1 | Mehdi Abaakouk | Sur le masternode normalement h1 faire: |
704 | 10 | Mehdi Abaakouk | |
705 | 1 | Mehdi Abaakouk | <pre> |
706 | 1 | Mehdi Abaakouk | gnt-cluster verify |
707 | 10 | Mehdi Abaakouk | </pre> |
708 | 1 | Mehdi Abaakouk | |
709 | 10 | Mehdi Abaakouk | h3. Change le node principal (masternode) de "ganeti", celui qui permet de lancer des commandes ganeti. |
710 | 1 | Mehdi Abaakouk | |
711 | 1 | Mehdi Abaakouk | Allez sur un node, taper ceci et il deviendra "maternode": |
712 | 1 | Mehdi Abaakouk | |
713 | 1 | Mehdi Abaakouk | <pre> |
714 | 41 | Laurent GUERBY | gnt-cluster master-failover |
715 | 10 | Mehdi Abaakouk | </pre> |
716 | 1 | Mehdi Abaakouk | |
717 | 10 | Mehdi Abaakouk | h3. Gestion des fichiers de configuration (ie: /etc/ganeti, /etc/hosts, /etc/rc.local, ...) |
718 | 1 | Mehdi Abaakouk | |
719 | 1 | Mehdi Abaakouk | Tous les fichiers de configuration à synchroniser entre toutes les nodes du cluster sont contenues dans ce script: |
720 | 1 | Mehdi Abaakouk | |
721 | 1 | Mehdi Abaakouk | <pre> |
722 | 1 | Mehdi Abaakouk | /etc/ganeti/pushconf.sh |
723 | 10 | Mehdi Abaakouk | </pre> |
724 | 1 | Mehdi Abaakouk | |
725 | 10 | Mehdi Abaakouk | Le lancer recopie ces fichiers du masternode vers les autres nodes. |
726 | 10 | Mehdi Abaakouk | |
727 | 10 | Mehdi Abaakouk | h3. Désactiver un serveur qui serait HS du cluster provisoirement. |
728 | 10 | Mehdi Abaakouk | |
729 | 10 | Mehdi Abaakouk | On bascule les machines qui n'ont pas le failover en automatique |
730 | 10 | Mehdi Abaakouk | |
731 | 10 | Mehdi Abaakouk | <pre> |
732 | 10 | Mehdi Abaakouk | gnt-node failover [ --ignore-consistency ] h2 |
733 | 10 | Mehdi Abaakouk | </pre> |
734 | 10 | Mehdi Abaakouk | |
735 | 10 | Mehdi Abaakouk | le --ignore-consistency permet de forcer ganeti à ne pas contrôler le disk avant le basculement |
736 | 10 | Mehdi Abaakouk | |
737 | 10 | Mehdi Abaakouk | On peux (optionnellement) déplacer les disques durs secondaires des VMs |
738 | 10 | Mehdi Abaakouk | |
739 | 39 | Mehdi Abaakouk | <pre> |
740 | 1 | Mehdi Abaakouk | gnt-node evacuate [--early-release] -I hail hX |
741 | 39 | Mehdi Abaakouk | </pre> |
742 | 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) |
743 | 10 | Mehdi Abaakouk | |
744 | 10 | Mehdi Abaakouk | Puis on désactive la node: |
745 | 10 | Mehdi Abaakouk | |
746 | 10 | Mehdi Abaakouk | <pre> |
747 | 10 | Mehdi Abaakouk | gnt-node modify -O yes h2 |
748 | 10 | Mehdi Abaakouk | </pre> |
749 | 1 | Mehdi Abaakouk | |
750 | 11 | Mehdi Abaakouk | |
751 | 10 | Mehdi Abaakouk | h3. Réinsertion dans le cluster d'un node désactivé |
752 | 10 | Mehdi Abaakouk | |
753 | 10 | Mehdi Abaakouk | - On réactive la node |
754 | 10 | Mehdi Abaakouk | - On remet dessus des machines et des disques en répartissant la charge du cluster |
755 | 10 | Mehdi Abaakouk | |
756 | 10 | Mehdi Abaakouk | <pre> |
757 | 10 | Mehdi Abaakouk | gnt-node modify -O no h2 |
758 | 10 | Mehdi Abaakouk | hbal -L -X |
759 | 10 | Mehdi Abaakouk | </pre> |
760 | 10 | Mehdi Abaakouk | |
761 | 10 | Mehdi Abaakouk | |
762 | 10 | Mehdi Abaakouk | h2. Setup d'un nouveau NODE |
763 | 10 | Mehdi Abaakouk | |
764 | 10 | Mehdi Abaakouk | h3. Installation |
765 | 1 | Mehdi Abaakouk | |
766 | 1 | Mehdi Abaakouk | * Installer squeeze basique avec juste ssh |
767 | 1 | Mehdi Abaakouk | * Ajouter wheezy dans /etc/apt/sources.list |
768 | 1 | Mehdi Abaakouk | |
769 | 1 | Mehdi Abaakouk | <pre> |
770 | 1 | Mehdi Abaakouk | # deb http://ftp.fr.debian.org/debian/ squeeze main |
771 | 1 | Mehdi Abaakouk | deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free |
772 | 1 | Mehdi Abaakouk | deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free |
773 | 1 | Mehdi Abaakouk | deb http://ftp.fr.debian.org/debian/ sid main contrib non-free |
774 | 1 | Mehdi Abaakouk | deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free |
775 | 1 | Mehdi Abaakouk | deb http://ftp.de.debian.org/debian-backports/ squeeze-backports main contrib non-free |
776 | 3 | Mehdi Abaakouk | deb-src http://ftp.de.debian.org/debian-backports/ squeeze-backports main contrib non-free |
777 | 3 | Mehdi Abaakouk | deb http://security.debian.org/ squeeze/updates main |
778 | 4 | Mehdi Abaakouk | deb-src http://security.debian.org/ squeeze/updates main |
779 | 3 | Mehdi Abaakouk | # squeeze-updates, previously known as 'volatile' |
780 | 1 | Mehdi Abaakouk | deb http://ftp.fr.debian.org/debian/ squeeze-updates main |
781 | 8 | Mehdi Abaakouk | deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main |
782 | 8 | Mehdi Abaakouk | </pre> |
783 | 8 | Mehdi Abaakouk | |
784 | 8 | Mehdi Abaakouk | * Allouer un port avec 3131, 3175, 3195 tagged sur le procurve |
785 | 7 | Mehdi Abaakouk | * Monter le reseau manuellement IP X |
786 | 8 | Mehdi Abaakouk | |
787 | 7 | Mehdi Abaakouk | <pre> |
788 | 8 | Mehdi Abaakouk | ip link add link eth0 name eth0.3131 type vlan id 3131 |
789 | 7 | Mehdi Abaakouk | ip link set eth0.3131 up |
790 | 8 | Mehdi Abaakouk | ip addr add 91.224.149.15X/25 dev eth0.3131 |
791 | 8 | Mehdi Abaakouk | </pre> |
792 | 8 | Mehdi Abaakouk | |
793 | 7 | Mehdi Abaakouk | * Creer /etc/rc.local.conf avec X et Y |
794 | 5 | Mehdi Abaakouk | |
795 | 5 | Mehdi Abaakouk | <pre> |
796 | 6 | Mehdi Abaakouk | IP_3131="91.224.149.15X/25" |
797 | 5 | Mehdi Abaakouk | GW_3131="91.224.149.254" |
798 | 1 | Mehdi Abaakouk | IP_3175="192.168.3.Y/24" |
799 | 5 | Mehdi Abaakouk | KVM_DISKS="sdb" |
800 | 1 | Mehdi Abaakouk | </pre> |
801 | 1 | Mehdi Abaakouk | |
802 | 1 | Mehdi Abaakouk | * Installer les packages |
803 | 1 | Mehdi Abaakouk | |
804 | 1 | Mehdi Abaakouk | <pre> |
805 | 1 | Mehdi Abaakouk | #TODO liste en fichier commit qqpart |
806 | 1 | Mehdi Abaakouk | #TODO: passer a une version compilée en local de ganeti pour eviter les update de version wheezy |
807 | 1 | Mehdi Abaakouk | dpkg --get-selections | ssh root@h48 dpkg --set-selections |
808 | 5 | Mehdi Abaakouk | ssh root@h48 apt-get dselect-upgrade |
809 | 5 | Mehdi Abaakouk | </pre> |
810 | 6 | Mehdi Abaakouk | |
811 | 6 | Mehdi Abaakouk | |
812 | 5 | Mehdi Abaakouk | |
813 | 5 | Mehdi Abaakouk | * munin: |
814 | 5 | Mehdi Abaakouk | dans /etc/munin/munin-node.conf ajouter: allow ^91\.224\.149\.194$ |
815 | 1 | Mehdi Abaakouk | * TODO patch munin Loic |
816 | 5 | Mehdi Abaakouk | http://trac.fsffrance.org/wiki/PatchInventory#Munin |
817 | 1 | Mehdi Abaakouk | * reboot |
818 | 5 | Mehdi Abaakouk | * Installer le node dans le cluster ganeti apres s'etre assure que la version de ganeti est bien la meme |
819 | 1 | Mehdi Abaakouk | |
820 | 1 | Mehdi Abaakouk | <pre> |
821 | 5 | Mehdi Abaakouk | dpkg -l|grep -i ganeti |
822 | 5 | Mehdi Abaakouk | gnt-node add h48 |
823 | 5 | Mehdi Abaakouk | /etc/ganeti/pushconf.sh |
824 | 5 | Mehdi Abaakouk | </pre> |
825 | 5 | Mehdi Abaakouk | |
826 | 5 | Mehdi Abaakouk | Appliquer ce patch à ganeti-instance-debootstrap: |
827 | 5 | Mehdi Abaakouk | |
828 | 5 | Mehdi Abaakouk | <pre> |
829 | 5 | Mehdi Abaakouk | --- /usr/share/ganeti/os/debootstrap/common.sh.ori 2010-09-15 22:34:12.000000000 +0200 |
830 | 5 | Mehdi Abaakouk | +++ /usr/share/ganeti/os/debootstrap/common.sh 2011-07-27 12:33:55.695617766 +0200 |
831 | 5 | Mehdi Abaakouk | @@ -91,7 +91,7 @@ |
832 | 1 | Mehdi Abaakouk | # some versions of sfdisk need manual specification of |
833 | 5 | Mehdi Abaakouk | # head/sectors for devices such as drbd which don't |
834 | 5 | Mehdi Abaakouk | # report geometry |
835 | 5 | Mehdi Abaakouk | - sfdisk -H 255 -S 63 --quiet --Linux "$1" <<EOF |
836 | 6 | Mehdi Abaakouk | + sfdisk -H 255 -S 63 -D --quiet --Linux "$1" <<EOF |
837 | 5 | Mehdi Abaakouk | 0,,L,* |
838 | 3 | Mehdi Abaakouk | EOF |
839 | 1 | Mehdi Abaakouk | } |
840 | 1 | Mehdi Abaakouk | </pre> |
841 | 11 | Mehdi Abaakouk | |
842 | 3 | Mehdi Abaakouk | Ci dessous ajouter dkms et r8168 si nécessaire. |
843 | 15 | Mehdi Abaakouk | |
844 | 62 | Mehdi Abaakouk | h3. Pilotes additionnel (pour squeeze uniquement) |
845 | 1 | Mehdi Abaakouk | |
846 | 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). |
847 | 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) |
848 | 1 | Mehdi Abaakouk | |
849 | 1 | Mehdi Abaakouk | <pre> |
850 | 1 | Mehdi Abaakouk | apt-get install gcc dkms |
851 | 1 | Mehdi Abaakouk | cd /usr/src |
852 | 1 | Mehdi Abaakouk | wget http://url_to_pilot/r8168-8.024.00.tar.bz2 |
853 | 1 | Mehdi Abaakouk | tar -xjf r8168-8.024.00.tar.bz2 |
854 | 1 | Mehdi Abaakouk | cd r8168-8.024.00 |
855 | 1 | Mehdi Abaakouk | cat > dkms.conf << EOF |
856 | 1 | Mehdi Abaakouk | PACKAGE_NAME=r8168 |
857 | 1 | Mehdi Abaakouk | PACKAGE_VERSION=8.024.00 |
858 | 1 | Mehdi Abaakouk | MAKE[0]="make" |
859 | 1 | Mehdi Abaakouk | BUILT_MODULE_NAME[0]=r8168 |
860 | 1 | Mehdi Abaakouk | BUILT_MODULE_LOCATION[0]="src/" |
861 | 1 | Mehdi Abaakouk | DEST_MODULE_LOCATION[0]="/kernel/updates/dkms" |
862 | 1 | Mehdi Abaakouk | AUTOINSTALL="YES" |
863 | 1 | Mehdi Abaakouk | EOF |
864 | 1 | Mehdi Abaakouk | dkms add -m r8168 -v 8.024.00 |
865 | 1 | Mehdi Abaakouk | dkms build -m r8168 -v 8.024.00 |
866 | 1 | Mehdi Abaakouk | dkms install -m r8168 -v 8.024.00 |
867 | 1 | Mehdi Abaakouk | echo "r8168" >> /etc/modules |
868 | 1 | Mehdi Abaakouk | echo "blacklist r8169" >> /etc/modprobe.d/blacklist-network.conf |
869 | 1 | Mehdi Abaakouk | update-initramfs -u |
870 | 1 | Mehdi Abaakouk | reboot |
871 | 1 | Mehdi Abaakouk | </pre> |
872 | 1 | Mehdi Abaakouk | |
873 | 1 | Mehdi Abaakouk | Pour les machines a base de e1000e: |
874 | 1 | Mehdi Abaakouk | |
875 | 1 | Mehdi Abaakouk | <pre> |
876 | 1 | Mehdi Abaakouk | apt-get install gcc dkms |
877 | 1 | Mehdi Abaakouk | cd /usr/src |
878 | 1 | Mehdi Abaakouk | wget http://downloadmirror.intel.com/15817/eng/e1000e-1.3.17.tar.gz |
879 | 1 | Mehdi Abaakouk | tar -xzf e1000e-1.3.17.tar.gz |
880 | 1 | Mehdi Abaakouk | cd e1000e-1.3.17 |
881 | 1 | Mehdi Abaakouk | cat > dkms.conf << EOF |
882 | 1 | Mehdi Abaakouk | PACKAGE_NAME=e1000e |
883 | 1 | Mehdi Abaakouk | PACKAGE_VERSION=1.3.17 |
884 | 1 | Mehdi Abaakouk | CLEAN="make -C src/ clean" |
885 | 1 | Mehdi Abaakouk | MAKE[0]="make -C src/" |
886 | 1 | Mehdi Abaakouk | BUILT_MODULE_NAME[0]=e1000e |
887 | 1 | Mehdi Abaakouk | BUILT_MODULE_LOCATION[0]="src/" |
888 | 1 | Mehdi Abaakouk | DEST_MODULE_LOCATION[0]="/kernel/updates/dkms" |
889 | 1 | Mehdi Abaakouk | AUTOINSTALL="YES" |
890 | 1 | Mehdi Abaakouk | EOF |
891 | 1 | Mehdi Abaakouk | dkms add -m e1000e -v 1.3.17 |
892 | 1 | Mehdi Abaakouk | dkms build -m e1000e -v 1.3.17 |
893 | 1 | Mehdi Abaakouk | dkms install -m e1000e -v 1.3.17 |
894 | 1 | Mehdi Abaakouk | reboot |
895 | 1 | Mehdi Abaakouk | </pre> |
896 | 1 | Mehdi Abaakouk | |
897 | 1 | Mehdi Abaakouk | |
898 | 13 | Mehdi Abaakouk | h2. Annexe |
899 | 13 | Mehdi Abaakouk | |
900 | 13 | Mehdi Abaakouk | h3. Configuration réseau |
901 | 13 | Mehdi Abaakouk | |
902 | 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) |
903 | 1 | Mehdi Abaakouk | le script /etc/rc.local.conf, contient les adresses IP de la machine et les gw |
904 | 11 | Mehdi Abaakouk | |
905 | 11 | Mehdi Abaakouk | h3. Protection VNC |
906 | 11 | Mehdi Abaakouk | |
907 | 11 | Mehdi Abaakouk | Le VNC de kvm est utiliser sur chaque MV. |
908 | 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 |
909 | 11 | Mehdi Abaakouk | Ce script est appelé par les hooks ganeti. |
910 | 11 | Mehdi Abaakouk | |
911 | 11 | Mehdi Abaakouk | h3. Mac spoofing configuration (Actuellement désactivé) |
912 | 1 | Mehdi Abaakouk | |
913 | 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. |
914 | 1 | Mehdi Abaakouk | Le fichier prends la forme suivante: |
915 | 1 | Mehdi Abaakouk | munin.tetaneutral.net:0:tap3 |
916 | 1 | Mehdi Abaakouk | trac.tetaneutral.net:0:tap5 |
917 | 1 | Mehdi Abaakouk | munin.tetaneutral.net:1:tap5 |
918 | 1 | Mehdi Abaakouk | Les règles ebtables sont écrites par le script /etc/ganeti/spoofing/spoofing-protection avec les informations de ce fichier. |
919 | 1 | Mehdi Abaakouk | Les scripts de hook de ganeti (ie:/etc/ganeti/hook/) utilise ce script, pour lancer ou arreter le spoofing. |
920 | 11 | Mehdi Abaakouk | |
921 | 33 | Mehdi Abaakouk | h3. Debootstrap du nouvelle ubuntu >= oneiric: |
922 | 33 | Mehdi Abaakouk | |
923 | 33 | Mehdi Abaakouk | pour les ubuntu oneiric, precise et supérieur il faut créer des liens symbolique pour debootstrap: |
924 | 33 | Mehdi Abaakouk | |
925 | 33 | Mehdi Abaakouk | <pre> |
926 | 33 | Mehdi Abaakouk | cd /usr/share/debootstrap/scripts |
927 | 33 | Mehdi Abaakouk | ln -s gutsy oneiric |
928 | 33 | Mehdi Abaakouk | ln -s gutsy precise |
929 | 33 | Mehdi Abaakouk | </pre> |
930 | 33 | Mehdi Abaakouk | |
931 | 33 | Mehdi Abaakouk | ensuite la variante peux être ajouter à ganeti-instace-debootstrap dans /etc/ganeti/instace-debootstrap/variants/... |
932 | 33 | Mehdi Abaakouk | |
933 | 1 | Mehdi Abaakouk | h3. Patch maison pour ganeti |
934 | 11 | Mehdi Abaakouk | |
935 | 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 |
936 | 1 | Mehdi Abaakouk | Celui-ci est décrit dans l'installation d'une node aussi. |
937 | 11 | Mehdi Abaakouk | |
938 | 1 | Mehdi Abaakouk | h3. J'ai n'est pas trouvé mon bonheur, comment je vais faire ?! |
939 | 11 | Mehdi Abaakouk | |
940 | 11 | Mehdi Abaakouk | Voici quelques ressources: |
941 | 11 | Mehdi Abaakouk | * http://docs.ganeti.org/ganeti/current/html/ |
942 | 11 | Mehdi Abaakouk | * http://docs.ganeti.org/ganeti/2.1/man/ |
943 | 11 | Mehdi Abaakouk | * http://wiki.osuosl.org/public/ganeti/ |
944 | 1 | Mehdi Abaakouk | Ou bien je demande à sileht d'écrire le use case qui me manque s'il à le temps |
945 | 45 | Laurent GUERBY | |
946 | 45 | Laurent GUERBY | h3. Tuning IO |
947 | 45 | Laurent GUERBY | |
948 | 45 | Laurent GUERBY | <pre> |
949 | 45 | Laurent GUERBY | KVM_DISKS="WDC_WD20EARS-00_WD-WMAZA0732072" |
950 | 45 | Laurent GUERBY | |
951 | 45 | Laurent GUERBY | for diskname in $KVM_DISKS ; do |
952 | 45 | Laurent GUERBY | disk=$(basename $(readlink -e /dev/disk/by-id/scsi-SATA_$diskname) 2>/dev/null) |
953 | 45 | Laurent GUERBY | [ -z "$disk" -o ! -d "/sys/block/$disk" ] && continue |
954 | 45 | Laurent GUERBY | echo deadline > /sys/block/${disk}/queue/scheduler |
955 | 45 | Laurent GUERBY | echo 1 > /sys/block/${disk}/queue/iosched/fifo_batch |
956 | 45 | Laurent GUERBY | echo 0 > /sys/block/${disk}/queue/iosched/front_merges |
957 | 45 | Laurent GUERBY | echo 2 > /sys/block/${disk}/queue/iosched/read_expire |
958 | 45 | Laurent GUERBY | echo 2 > /sys/block/${disk}/queue/iosched/write_expire |
959 | 45 | Laurent GUERBY | echo 1 > /sys/block/${disk}/queue/iosched/writes_starved |
960 | 45 | Laurent GUERBY | done |
961 | 45 | Laurent GUERBY | </pre> |
962 | 52 | Fabien Dupont | |
963 | 52 | Fabien Dupont | h3. Hooks |
964 | 52 | Fabien Dupont | |
965 | 54 | Fabien Dupont | h4. Généralités |
966 | 54 | Fabien Dupont | |
967 | 53 | Fabien Dupont | Les hooks sont des scripts dans le répertoire /etc/ganeti/instance-debootstrap/hooks (pour les VM de type instance-debootstrap) exécutés grâce à run-parts. |
968 | 56 | Fabien Dupont | Seul les fichier exécutables (chmod +x) seront exécutés. |
969 | 53 | Fabien Dupont | |
970 | 53 | Fabien Dupont | Un hook a la forme suivante : |
971 | 53 | Fabien Dupont | |
972 | 53 | Fabien Dupont | <pre> |
973 | 53 | Fabien Dupont | #!/bin/bash |
974 | 53 | Fabien Dupont | |
975 | 53 | Fabien Dupont | set -e |
976 | 53 | Fabien Dupont | |
977 | 53 | Fabien Dupont | . common.sh |
978 | 53 | Fabien Dupont | |
979 | 53 | Fabien Dupont | CLEANUP=( ) |
980 | 53 | Fabien Dupont | set -x |
981 | 53 | Fabien Dupont | trap cleanup EXIT |
982 | 53 | Fabien Dupont | |
983 | 53 | Fabien Dupont | if [ -z "$TARGET" -o ! -d "$TARGET" ]; then |
984 | 53 | Fabien Dupont | echo "Missing target directory" |
985 | 53 | Fabien Dupont | exit 1 |
986 | 53 | Fabien Dupont | fi |
987 | 53 | Fabien Dupont | |
988 | 53 | Fabien Dupont | # Vos modifs ici |
989 | 53 | Fabien Dupont | # $TARGET contient le chemin, sur l'hôte, où est monté le disque dur de la VM |
990 | 53 | Fabien Dupont | |
991 | 53 | Fabien Dupont | cleanup |
992 | 53 | Fabien Dupont | trap - EXIT |
993 | 53 | Fabien Dupont | |
994 | 53 | Fabien Dupont | exit 0 |
995 | 53 | Fabien Dupont | </pre> |
996 | 1 | Mehdi Abaakouk | |
997 | 56 | Fabien Dupont | Les hooks sont séparés en fichiers, un par « fonction », afin d'encourager la réutilisation. |
998 | 56 | Fabien Dupont | |
999 | 56 | Fabien Dupont | <pre> |
1000 | 56 | Fabien Dupont | # ls /etc/ganeti/instance-debootstrap/hooks |
1001 | 56 | Fabien Dupont | /etc/ganeti/instance-debootstrap/hooks/10extlinux |
1002 | 56 | Fabien Dupont | /etc/ganeti/instance-debootstrap/hooks/20clear-root-password |
1003 | 56 | Fabien Dupont | /etc/ganeti/instance-debootstrap/hooks/30network-config |
1004 | 56 | Fabien Dupont | /etc/ganeti/instance-debootstrap/hooks/40locales |
1005 | 56 | Fabien Dupont | /etc/ganeti/instance-debootstrap/hooks/50apt |
1006 | 56 | Fabien Dupont | /etc/ganeti/instance-debootstrap/hooks/60openssh |
1007 | 56 | Fabien Dupont | /etc/ganeti/instance-debootstrap/hooks/90puppet |
1008 | 56 | Fabien Dupont | </pre> |
1009 | 1 | Mehdi Abaakouk | |
1010 | 55 | Fabien Dupont | *Important :* Le répertoire /etc/ganeti/instance-debootstrap/hooks doit être identique sur tous les nÅuds du cluster. Le script /etc/ganeti/pushconf.sh permet de les synchroniser. |
1011 | 55 | Fabien Dupont | |
1012 | 54 | Fabien Dupont | h4. Exemple de hook : Installation d'extlinux en tant que bootloader |
1013 | 52 | Fabien Dupont | |
1014 | 52 | Fabien Dupont | <pre> |
1015 | 52 | Fabien Dupont | #!/bin/bash |
1016 | 52 | Fabien Dupont | |
1017 | 52 | Fabien Dupont | set -e |
1018 | 52 | Fabien Dupont | |
1019 | 52 | Fabien Dupont | . common.sh |
1020 | 52 | Fabien Dupont | |
1021 | 52 | Fabien Dupont | CLEANUP=( ) |
1022 | 52 | Fabien Dupont | set -x |
1023 | 52 | Fabien Dupont | trap cleanup EXIT |
1024 | 52 | Fabien Dupont | |
1025 | 52 | Fabien Dupont | if [ -z "$TARGET" -o ! -d "$TARGET" ]; then |
1026 | 52 | Fabien Dupont | echo "Missing target directory" |
1027 | 52 | Fabien Dupont | exit 1 |
1028 | 52 | Fabien Dupont | fi |
1029 | 52 | Fabien Dupont | |
1030 | 52 | Fabien Dupont | # allow extlinux to find device |
1031 | 52 | Fabien Dupont | mount --bind /dev $TARGET/dev |
1032 | 52 | Fabien Dupont | CLEANUP+=("umount $TARGET/dev") |
1033 | 52 | Fabien Dupont | mount --bind /proc $TARGET/proc |
1034 | 52 | Fabien Dupont | CLEANUP+=("umount $TARGET/proc") |
1035 | 52 | Fabien Dupont | |
1036 | 52 | Fabien Dupont | # generate configuration |
1037 | 52 | Fabien Dupont | echo 'EXTLINUX_PARAMETERS="ro console=ttyS0,38400n8"' > $TARGET/etc/default/extlinux |
1038 | 52 | Fabien Dupont | chroot "$TARGET" extlinux-update |
1039 | 52 | Fabien Dupont | |
1040 | 52 | Fabien Dupont | # install extlinux |
1041 | 52 | Fabien Dupont | chroot "$TARGET" extlinux -i /boot/extlinux |
1042 | 52 | Fabien Dupont | |
1043 | 52 | Fabien Dupont | # install boot record |
1044 | 52 | Fabien Dupont | dd if="$TARGET/usr/lib/extlinux/mbr.bin" of=$BLOCKDEV |
1045 | 52 | Fabien Dupont | |
1046 | 52 | Fabien Dupont | cleanup |
1047 | 52 | Fabien Dupont | trap - EXIT |
1048 | 52 | Fabien Dupont | |
1049 | 52 | Fabien Dupont | exit 0 |
1050 | 52 | Fabien Dupont | </pre> |