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