Projet

Général

Profil

Openstack Management TTNN » Historique » Version 45

Mehdi Abaakouk, 09/06/2015 09:48

1 3 Mehdi Abaakouk
{{>toc}}
2 3 Mehdi Abaakouk
3 1 Mehdi Abaakouk
h1. Openstack Management TTNN
4 1 Mehdi Abaakouk
5 11 Mehdi Abaakouk
6 11 Mehdi Abaakouk
openstack tools for ttnn:  http://chiliproject.tetaneutral.net/projects/git-tetaneutral-net/repository/openstack-tools
7 11 Mehdi Abaakouk
8 4 Mehdi Abaakouk
h2. Opération sur les VMs (des membres)
9 1 Mehdi Abaakouk
10 17 Mehdi Abaakouk
h3. Voir la console graphique sans spice-html5:
11 17 Mehdi Abaakouk
12 17 Mehdi Abaakouk
Copier le script suivant 'gvnc' sur ca machine:
13 17 Mehdi Abaakouk
14 17 Mehdi Abaakouk
<pre>
15 17 Mehdi Abaakouk
#!/bin/bash
16 17 Mehdi Abaakouk
vm=$1
17 17 Mehdi Abaakouk
info=($(ssh openstack.tetaneutral.net -p 2222 -l root -- "mysql nova --skip-column-names --batch -e 'select host, uuid from instances where display_name=\"$vm\";'"))
18 17 Mehdi Abaakouk
19 17 Mehdi Abaakouk
if [ "${info[0]}" == "mysql" ]; then
20 17 Mehdi Abaakouk
    echo "Error in mysql request"
21 17 Mehdi Abaakouk
    exit 1
22 17 Mehdi Abaakouk
fi
23 17 Mehdi Abaakouk
24 17 Mehdi Abaakouk
hypervisor=${info[0]}.tetaneutral.net
25 17 Mehdi Abaakouk
uuid=${info[1]}
26 17 Mehdi Abaakouk
spice_port=$(ssh ${hypervisor} -p 2222 -l root virsh domdisplay ${uuid} | awk -F: '{print $3}')
27 17 Mehdi Abaakouk
28 17 Mehdi Abaakouk
echo "$vm on $hypervisor port $spice_port"
29 17 Mehdi Abaakouk
ssh -N $hypervisor -p 2222 -l root -L 5910:localhost:${spice_port} &
30 17 Mehdi Abaakouk
pid=$!
31 17 Mehdi Abaakouk
32 17 Mehdi Abaakouk
33 17 Mehdi Abaakouk
cleanup(){
34 17 Mehdi Abaakouk
    kill $pid
35 17 Mehdi Abaakouk
}
36 17 Mehdi Abaakouk
37 17 Mehdi Abaakouk
trap cleanup EXIT
38 17 Mehdi Abaakouk
39 17 Mehdi Abaakouk
sleep 2
40 17 Mehdi Abaakouk
remote-viewer spice://localhost:5910/
41 17 Mehdi Abaakouk
</pre>
42 17 Mehdi Abaakouk
43 17 Mehdi Abaakouk
Puis 
44 17 Mehdi Abaakouk
45 17 Mehdi Abaakouk
<pre>
46 17 Mehdi Abaakouk
sudo apt-get install virt-viewer
47 17 Mehdi Abaakouk
./gvnc puppet.openstack.net
48 17 Mehdi Abaakouk
</pre>
49 17 Mehdi Abaakouk
50 17 Mehdi Abaakouk
51 1 Mehdi Abaakouk
h3. Reboot VM en error
52 1 Mehdi Abaakouk
53 1 Mehdi Abaakouk
<pre>
54 1 Mehdi Abaakouk
nova reset-state --active xxx.tetaneutral.net
55 1 Mehdi Abaakouk
nova reboot --hard --poll xxx.tetaneutral.net
56 1 Mehdi Abaakouk
</pre>
57 1 Mehdi Abaakouk
58 6 Laurent GUERBY
h3. Shutdown une VM
59 5 Laurent GUERBY
60 5 Laurent GUERBY
<pre>
61 5 Laurent GUERBY
nova stop xxx.tetaneutral.net
62 5 Laurent GUERBY
</pre>
63 5 Laurent GUERBY
64 5 Laurent GUERBY
A noter que suspend fait une sauvegarde de la RAM comme sur un laptop. shelve est bugué ne pas utiliser.
65 1 Mehdi Abaakouk
66 7 Laurent GUERBY
h3. Effacer une VM
67 6 Laurent GUERBY
68 6 Laurent GUERBY
<pre>
69 1 Mehdi Abaakouk
nova delete xxx.tetaneutral.net
70 7 Laurent GUERBY
</pre>
71 7 Laurent GUERBY
72 7 Laurent GUERBY
h3. Disques de VM
73 7 Laurent GUERBY
74 7 Laurent GUERBY
Pour renommer (et permettre a boot-disk de recreer) ou effacer :
75 7 Laurent GUERBY
76 7 Laurent GUERBY
<pre>
77 7 Laurent GUERBY
cinder list
78 7 Laurent GUERBY
cinder rename <ID> <newname>
79 7 Laurent GUERBY
cinder delete <ID_or_Name>
80 6 Laurent GUERBY
</pre>
81 5 Laurent GUERBY
82 1 Mehdi Abaakouk
h3. Agrandissement d'un disque
83 1 Mehdi Abaakouk
84 1 Mehdi Abaakouk
Sur la machine 'openstack':
85 1 Mehdi Abaakouk
86 1 Mehdi Abaakouk
<pre>
87 1 Mehdi Abaakouk
root@openstack:~/tools ./os-grow-disk.sh 
88 1 Mehdi Abaakouk
usage: os-grow-disk.sh CINDER_VOLUME_ID SIZE_GB
89 1 Mehdi Abaakouk
90 1 Mehdi Abaakouk
root@openstack:~/tools# ./os-grow-disk.sh bc6f01cb-c6b6-4413-b2ef-1f7df0031049 60
91 1 Mehdi Abaakouk
Cinder:
92 1 Mehdi Abaakouk
bc6f01cb-c6b6-4413-b2ef-1f7df0031049 , test4-bootdisk | 40 -> 60
93 1 Mehdi Abaakouk
 
94 1 Mehdi Abaakouk
Enter YES to update
95 1 Mehdi Abaakouk
YES
96 1 Mehdi Abaakouk
Testing g3 ssh connection...
97 1 Mehdi Abaakouk
Resizing the kvm blockdevice...
98 1 Mehdi Abaakouk
Block device 'vda' is resized
99 1 Mehdi Abaakouk
Updating cinder database with the new value...
100 1 Mehdi Abaakouk
Update finish
101 1 Mehdi Abaakouk
</pre>
102 1 Mehdi Abaakouk
103 1 Mehdi Abaakouk
Puis sur la VM:
104 1 Mehdi Abaakouk
105 1 Mehdi Abaakouk
Il faut avoir un 'parted' récent ou patché avec le support du 'online resizepart':
106 1 Mehdi Abaakouk
107 1 Mehdi Abaakouk
'online resizepart' est natif depuis parted >= 3.1: 
108 1 Mehdi Abaakouk
* debian >= jessie
109 1 Mehdi Abaakouk
* ubuntu >= 14.10
110 1 Mehdi Abaakouk
111 1 Mehdi Abaakouk
'online resizepart' backporté dans:
112 1 Mehdi Abaakouk
* ubuntu >= 13.10 < 14.10 
113 1 Mehdi Abaakouk
114 1 Mehdi Abaakouk
Pour debian wheezy, utilisation les packages ubuntu de 14.04 devrait marcher 
115 1 Mehdi Abaakouk
(pas encore testé, à voir si le kernel veut bien reload la table des partitions après)
116 1 Mehdi Abaakouk
117 1 Mehdi Abaakouk
<pre> 
118 1 Mehdi Abaakouk
root@test4:~# parted /dev/vda print | grep vda
119 1 Mehdi Abaakouk
Disk /dev/vda: 64.4GB
120 1 Mehdi Abaakouk
 
121 1 Mehdi Abaakouk
root@test4# parted /dev/vda resizepart 1 
122 1 Mehdi Abaakouk
Warning: Partition /dev/vda1 is being used. Are you sure you want to continue?
123 1 Mehdi Abaakouk
Yes/No? Yes                                                               
124 1 Mehdi Abaakouk
End?  [42.9GB]? 64.4GB   # METTRE ICI LA TAILLE VU AU DESSUS                                                 
125 1 Mehdi Abaakouk
Information: You may need to update /etc/fstab.                           
126 1 Mehdi Abaakouk
127 1 Mehdi Abaakouk
root@test4:~# resize2fs /dev/vda1
128 1 Mehdi Abaakouk
resize2fs 1.42.9 (4-Feb-2014)
129 1 Mehdi Abaakouk
Filesystem at /dev/vda1 is mounted on /; on-line resizing required
130 1 Mehdi Abaakouk
old_desc_blocks = 3, new_desc_blocks = 4
131 1 Mehdi Abaakouk
The filesystem on /dev/vda1 is now 15722400 blocks long.
132 1 Mehdi Abaakouk
133 1 Mehdi Abaakouk
root@test4:~# df -h | grep vda
134 1 Mehdi Abaakouk
/dev/vda1        60G  797M   56G   2% /
135 1 Mehdi Abaakouk
</pre>
136 1 Mehdi Abaakouk
137 14 Laurent GUERBY
Méthode plus risquée et manuelle pour wheezy :
138 14 Laurent GUERBY
139 15 Laurent GUERBY
<pre>
140 14 Laurent GUERBY
sfdisk -d /dev/vda > vda.mbr
141 14 Laurent GUERBY
cp vda.mbr vda.mbr.ori
142 14 Laurent GUERBY
vi vda.mbr 
143 14 Laurent GUERBY
# mettre un tres grand nombre pour la fin de la partition
144 14 Laurent GUERBY
sfdisk -L -n --no-reread /dev/vda < vda.mbr
145 14 Laurent GUERBY
# cela va faire une erreur avec le max a mettre pour la fin de la partition
146 14 Laurent GUERBY
# changer la fin de la partition avec ce chiffre
147 14 Laurent GUERBY
sfdisk -L --no-reread /dev/vda < vda.mbr
148 14 Laurent GUERBY
reboot
149 16 Aymeric APLU
resize2fs -p /dev/vda1
150 14 Laurent GUERBY
</pre>
151 14 Laurent GUERBY
152 1 Mehdi Abaakouk
h3. Ajout d'une interface réseau à une VM:
153 1 Mehdi Abaakouk
154 1 Mehdi Abaakouk
<pre>
155 1 Mehdi Abaakouk
$ neutron net-list | grep vlan3199
156 1 Mehdi Abaakouk
| 460f49ce-f5ed-449e-9e0f-7626bcee4379 | vlan3199         | ba3f12af-074a-4a31-9a7c-a621993e13bb 192.168.99.0/24     |
157 1 Mehdi Abaakouk
158 1 Mehdi Abaakouk
$ neutron port-create 460f49ce-f5ed-449e-9e0f-7626bcee4379 --name nagios-eth2 --fixed-ips type=dict list=true ip_address=192.168.99.248
159 1 Mehdi Abaakouk
Created a new port:
160 1 Mehdi Abaakouk
+-----------------------+---------------------------------------------------------------------------------------+
161 1 Mehdi Abaakouk
| Field                 | Value                                                                                 |
162 1 Mehdi Abaakouk
+-----------------------+---------------------------------------------------------------------------------------+
163 1 Mehdi Abaakouk
| admin_state_up        | True                                                                                  |
164 1 Mehdi Abaakouk
| allowed_address_pairs |                                                                                       |
165 1 Mehdi Abaakouk
| binding:host_id       |                                                                                       |
166 1 Mehdi Abaakouk
| binding:profile       | {}                                                                                    |
167 1 Mehdi Abaakouk
| binding:vif_details   | {}                                                                                    |
168 1 Mehdi Abaakouk
| binding:vif_type      | unbound                                                                               |
169 1 Mehdi Abaakouk
| binding:vnic_type     | normal                                                                                |
170 1 Mehdi Abaakouk
| device_id             |                                                                                       |
171 1 Mehdi Abaakouk
| device_owner          |                                                                                       |
172 1 Mehdi Abaakouk
| fixed_ips             | {"subnet_id": "ba3f12af-074a-4a31-9a7c-a621993e13bb", "ip_address": "192.168.99.248"} |
173 1 Mehdi Abaakouk
| id                    | 918e0ec7-0909-423c-9a67-15b5ef7c7ae0                                                  |
174 1 Mehdi Abaakouk
| mac_address           | fa:16:3e:6b:32:07                                                                     |
175 1 Mehdi Abaakouk
| name                  | nagios-eth2                                                                           |
176 1 Mehdi Abaakouk
| network_id            | 460f49ce-f5ed-449e-9e0f-7626bcee4379                                                  |
177 1 Mehdi Abaakouk
| security_groups       | b6d5b5fb-a053-4f97-b964-9e1a12d243b1                                                  |
178 1 Mehdi Abaakouk
| status                | DOWN                                                                                  |
179 1 Mehdi Abaakouk
| tenant_id             | ed980105f9d047e2bee738b3f261f126                                                      |
180 1 Mehdi Abaakouk
+-----------------------+---------------------------------------------------------------------------------------+
181 1 Mehdi Abaakouk
182 1 Mehdi Abaakouk
$ nova interface-attach --port-id 918e0ec7-0909-423c-9a67-15b5ef7c7ae0   nagios.tetaneutral.net
183 1 Mehdi Abaakouk
</pre>
184 1 Mehdi Abaakouk
185 1 Mehdi Abaakouk
Dans la VM:
186 1 Mehdi Abaakouk
187 1 Mehdi Abaakouk
<pre>
188 1 Mehdi Abaakouk
$ dmesg | tail 
189 1 Mehdi Abaakouk
[ 1315.826088] virtio-pci 0000:00:06.0: using default PCI settings
190 1 Mehdi Abaakouk
[ 1315.826102] virtio-pci 0000:00:07.0: no hotplug settings from platform
191 1 Mehdi Abaakouk
[ 1315.826102] virtio-pci 0000:00:07.0: using default PCI settings
192 1 Mehdi Abaakouk
[ 1315.826116] pci 0000:00:08.0: no hotplug settings from platform
193 1 Mehdi Abaakouk
[ 1315.826117] pci 0000:00:08.0: using default PCI settings
194 1 Mehdi Abaakouk
[ 1315.826382] virtio-pci 0000:00:08.0: enabling device (0000 -> 0003)
195 1 Mehdi Abaakouk
[ 1315.829281] virtio-pci 0000:00:08.0: setting latency timer to 64
196 1 Mehdi Abaakouk
[ 1315.829535] virtio-pci 0000:00:08.0: irq 50 for MSI/MSI-X
197 1 Mehdi Abaakouk
[ 1315.829555] virtio-pci 0000:00:08.0: irq 51 for MSI/MSI-X
198 1 Mehdi Abaakouk
[ 1315.829563] virtio-pci 0000:00:08.0: irq 52 for MSI/MSI-X
199 1 Mehdi Abaakouk
200 1 Mehdi Abaakouk
$ ip l   show dev eth2
201 1 Mehdi Abaakouk
4: eth2: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 1000
202 1 Mehdi Abaakouk
    link/ether fa:16:3e:6b:32:07 brd ff:ff:ff:ff:ff:ff
203 1 Mehdi Abaakouk
204 1 Mehdi Abaakouk
$ tail -4 /etc/network/interfaces
205 1 Mehdi Abaakouk
auto eth2
206 1 Mehdi Abaakouk
iface eth2 inet static
207 1 Mehdi Abaakouk
   address 192.168.99.248
208 1 Mehdi Abaakouk
   netmask 255.255.255.0
209 1 Mehdi Abaakouk
210 1 Mehdi Abaakouk
$ ifup eth2
211 1 Mehdi Abaakouk
$ ping 192.169.99.250
212 1 Mehdi Abaakouk
PING 192.169.99.250 (192.169.99.250) 56(84) bytes of data.
213 1 Mehdi Abaakouk
64 bytes from 192.169.99.250: icmp_req=1 ttl=119 time=170 ms
214 1 Mehdi Abaakouk
64 bytes from 192.169.99.250: icmp_req=2 ttl=119 time=204 ms
215 1 Mehdi Abaakouk
^C
216 1 Mehdi Abaakouk
</pre>
217 1 Mehdi Abaakouk
218 19 Mehdi Abaakouk
h3. Monter le disque d'un vm sur une machine hote pour dépannage.
219 1 Mehdi Abaakouk
220 19 Mehdi Abaakouk
L’exemple montre la modification du fichier /etc/ssh/sshd_config
221 19 Mehdi Abaakouk
222 19 Mehdi Abaakouk
Récuperer l'id et l'hyperviseur de la VM
223 1 Mehdi Abaakouk
<pre>
224 20 Alexandre GUY
# nova stop VMNAME.tetaneutral.net
225 20 Alexandre GUY
# nova show VMNAME.tetaneutral.net | grep -e 'host ' -e ' id '
226 19 Mehdi Abaakouk
| OS-EXT-SRV-ATTR:host                 | g1                                                       |
227 20 Alexandre GUY
| id                                   | 918e0ec7-0909-423c-9a67-15b5ef7c7ae0                     |
228 19 Mehdi Abaakouk
</pre>
229 19 Mehdi Abaakouk
230 19 Mehdi Abaakouk
Aller sur l'hyperviseur en question, puis:
231 19 Mehdi Abaakouk
<pre>
232 20 Alexandre GUY
# virt-edit -d 918e0ec7-0909-423c-9a67-15b5ef7c7ae0 /etc/ssh/sshd_config
233 19 Mehdi Abaakouk
</pre>
234 19 Mehdi Abaakouk
235 19 Mehdi Abaakouk
Fermer le fichier et restart la VM
236 19 Mehdi Abaakouk
<pre>
237 20 Alexandre GUY
# nova start VMNAME.tetaneutral.net
238 18 Mehdi Abaakouk
</pre>
239 18 Mehdi Abaakouk
240 42 Mehdi Abaakouk
h3. Convert du fs root en ext4 et passage en scsi
241 33 Mehdi Abaakouk
242 42 Mehdi Abaakouk
Dans la VM, préparation de grub et du fstab:
243 41 Mehdi Abaakouk
244 41 Mehdi Abaakouk
<pre>
245 41 Mehdi Abaakouk
$ vi /etc/fstab
246 41 Mehdi Abaakouk
# Viré /proc
247 42 Mehdi Abaakouk
# Pour / (voir les autres) mettre: 
248 45 Mehdi Abaakouk
LABEL=cloudimg-rootfs  /  ext4   defaults,discard,noatime  0 0
249 1 Mehdi Abaakouk
250 42 Mehdi Abaakouk
$ e2label /dev/vda1 cloudimg-rootfs
251 41 Mehdi Abaakouk
$ apt-get install grub-pc
252 42 Mehdi Abaakouk
$ apt-get purge extlinux
253 42 Mehdi Abaakouk
$ rm -f /extlinux.conf 
254 41 Mehdi Abaakouk
$ grub-install /dev/vda
255 41 Mehdi Abaakouk
$ shutdown -h now
256 1 Mehdi Abaakouk
</pre>
257 41 Mehdi Abaakouk
258 41 Mehdi Abaakouk
Récuperer l'id et l'hyperviseur de la VM
259 42 Mehdi Abaakouk
260 33 Mehdi Abaakouk
<pre>
261 33 Mehdi Abaakouk
# nova stop VMNAME.tetaneutral.net
262 33 Mehdi Abaakouk
# nova show VMNAME.tetaneutral.net | grep -e 'host ' -e ' id '
263 33 Mehdi Abaakouk
| OS-EXT-SRV-ATTR:host                 | g1                                                       |
264 33 Mehdi Abaakouk
| id                                   | 918e0ec7-0909-423c-9a67-15b5ef7c7ae0                     |
265 33 Mehdi Abaakouk
</pre>
266 33 Mehdi Abaakouk
267 33 Mehdi Abaakouk
Aller sur l'hyperviseur en question, puis:
268 35 Mehdi Abaakouk
269 1 Mehdi Abaakouk
<pre>
270 35 Mehdi Abaakouk
$ virt-rescue --suggest 918e0ec7-0909-423c-9a67-15b5ef7c7ae0 
271 35 Mehdi Abaakouk
...
272 35 Mehdi Abaakouk
# /dev/sdb1 is the root of a linux operating system
273 35 Mehdi Abaakouk
# type: linux, distro: debian, version: 8.0
274 35 Mehdi Abaakouk
# 8.0
275 35 Mehdi Abaakouk
276 35 Mehdi Abaakouk
mount /dev/sdb1 /sysroot/
277 35 Mehdi Abaakouk
mount --bind /dev /sysroot/dev
278 1 Mehdi Abaakouk
mount --bind /dev/pts /sysroot/dev/pts
279 35 Mehdi Abaakouk
mount --bind /proc /sysroot/proc
280 1 Mehdi Abaakouk
mount --bind /sys /sysroot/sys
281 42 Mehdi Abaakouk
</pre>
282 1 Mehdi Abaakouk
283 42 Mehdi Abaakouk
# Utiliser le device proposé pour la convertion en ext4:
284 42 Mehdi Abaakouk
285 42 Mehdi Abaakouk
<pre>
286 1 Mehdi Abaakouk
$ virt-rescue 918e0ec7-0909-423c-9a67-15b5ef7c7ae0 
287 1 Mehdi Abaakouk
> tune2fs -O extents,uninit_bg,dir_index /dev/sdb1
288 1 Mehdi Abaakouk
> e2fsck -fDC0 /dev/sdb1
289 1 Mehdi Abaakouk
> <CTRL+D>
290 1 Mehdi Abaakouk
</pre>
291 1 Mehdi Abaakouk
292 42 Mehdi Abaakouk
Sur la vm openstack, changé l'attribut de la VM en pour le scsi:
293 42 Mehdi Abaakouk
294 42 Mehdi Abaakouk
<pre>
295 42 Mehdi Abaakouk
cd /root/tools/sql_scripts
296 42 Mehdi Abaakouk
./os-use-scsi-discard.sh VMNAME.tetaneutral.net
297 42 Mehdi Abaakouk
</pre>
298 42 Mehdi Abaakouk
299 42 Mehdi Abaakouk
Sur G1, restart la VM
300 42 Mehdi Abaakouk
301 33 Mehdi Abaakouk
<pre>
302 33 Mehdi Abaakouk
# nova start VMNAME.tetaneutral.net
303 33 Mehdi Abaakouk
</pre>
304 26 Mehdi Abaakouk
305 43 Mehdi Abaakouk
h3. Réaligne VM partition (guide pour vm avec une seul partition)
306 43 Mehdi Abaakouk
307 43 Mehdi Abaakouk
308 43 Mehdi Abaakouk
Prérequies:
309 43 Mehdi Abaakouk
310 43 Mehdi Abaakouk
* VM utilse grub2
311 43 Mehdi Abaakouk
* 
312 43 Mehdi Abaakouk
313 43 Mehdi Abaakouk
Récuperer l'id et l'hyperviseur de la VM, ainsi que l'id du disk
314 43 Mehdi Abaakouk
315 43 Mehdi Abaakouk
<pre>
316 43 Mehdi Abaakouk
# nova stop VMNAME.tetaneutral.net
317 43 Mehdi Abaakouk
# nova show VMNAME.tetaneutral.net | grep -e 'host ' -e ' id '
318 43 Mehdi Abaakouk
| OS-EXT-SRV-ATTR:host                 | g1                                                       |
319 43 Mehdi Abaakouk
| id                                   | 918e0ec7-0909-423c-9a67-15b5ef7c7ae0                     |
320 43 Mehdi Abaakouk
# cinder list | grep puppet
321 43 Mehdi Abaakouk
| 213e894e-2f20-42b5-a27b-21f5a355c722 |   in-use  |          VMNAME.tetaneutral.net-bootdisk          |  20  |     ceph-ssd    |   true   | 918e0ec7-0909-423c-9a67-15b5ef7c7ae0 |
322 43 Mehdi Abaakouk
</pre>
323 43 Mehdi Abaakouk
324 43 Mehdi Abaakouk
Aller sur l'hyperviseur en question, puis vérifier l'alignement:
325 43 Mehdi Abaakouk
326 43 Mehdi Abaakouk
<pre>
327 43 Mehdi Abaakouk
$ virt-alignment-scan -d 918e0ec7-0909-423c-9a67-15b5ef7c7ae0 
328 43 Mehdi Abaakouk
/dev/sdb1        65536           512   bad (alignment < 4K)
329 43 Mehdi Abaakouk
</pre>
330 43 Mehdi Abaakouk
331 43 Mehdi Abaakouk
Réalignemet, *aller dans un espace ou il y a 2x l'espace utile de la VM*, puis:
332 43 Mehdi Abaakouk
333 43 Mehdi Abaakouk
<pre>
334 43 Mehdi Abaakouk
$ virt-tar-out -d 918e0ec7-0909-423c-9a67-15b5ef7c7ae0 / - | gzip --best > VMNAME.tar.gz
335 43 Mehdi Abaakouk
$ rbd -p ssds info volume-213e894e-2f20-42b5-a27b-21f5a355c722
336 43 Mehdi Abaakouk
rbd image 'volume-213e894e-2f20-42b5-a27b-21f5a355c722':
337 43 Mehdi Abaakouk
        size 20480 MB in 5120 objects
338 43 Mehdi Abaakouk
        order 22 (4096 kB objects)
339 43 Mehdi Abaakouk
        block_name_prefix: rbd_data.996cc92ae8944a
340 43 Mehdi Abaakouk
        format: 2
341 43 Mehdi Abaakouk
        features: layering
342 43 Mehdi Abaakouk
$ virt-make-fs --label=cloudimg-rootfs --partition=mbr --type=ext4 --format=raw --size=20480 VMNAME.tar.gz VMNAME.img
343 44 Mehdi Abaakouk
$ virt-customize -a VMNAME.img --run-command 'update-grub ; grub-install /dev/sda'
344 43 Mehdi Abaakouk
$ rbd mv ssds/volume-213e894e-2f20-42b5-a27b-21f5a355c722 ssds/volume-213e894e-2f20-42b5-a27b-21f5a355c722.unaligned
345 43 Mehdi Abaakouk
$ rbd import --image-format 2 VMNAME.img ssds/volume-213e894e-2f20-42b5-a27b-21f5a355c722
346 43 Mehdi Abaakouk
</pre>
347 43 Mehdi Abaakouk
348 43 Mehdi Abaakouk
Vérification:
349 43 Mehdi Abaakouk
350 43 Mehdi Abaakouk
<pre>
351 43 Mehdi Abaakouk
$ virt-alignment-scan -d 918e0ec7-0909-423c-9a67-15b5ef7c7ae0 
352 43 Mehdi Abaakouk
/dev/sdb1        65536           64K   ok
353 43 Mehdi Abaakouk
</pre>
354 43 Mehdi Abaakouk
355 26 Mehdi Abaakouk
h3. Création/Restauration snapshot
356 26 Mehdi Abaakouk
357 26 Mehdi Abaakouk
Création:
358 26 Mehdi Abaakouk
359 26 Mehdi Abaakouk
<pre>
360 26 Mehdi Abaakouk
source os.conf
361 26 Mehdi Abaakouk
/root/tools/os-snapshot-vm.sh pano.tetaneutral.net bootdisk /
362 26 Mehdi Abaakouk
* Freezing / of pano.tetaneutral.net
363 26 Mehdi Abaakouk
* Snapshoting pano.tetaneutral.net-bootdisk
364 26 Mehdi Abaakouk
Snapshot pano.tetaneutral.net-bootdisk-20150125-1600 is in state creating ..
365 26 Mehdi Abaakouk
* pano.tetaneutral.net-bootdisk snapshoted
366 26 Mehdi Abaakouk
* / of pano.tetaneutral.net unfreezed
367 26 Mehdi Abaakouk
</pre>
368 26 Mehdi Abaakouk
369 26 Mehdi Abaakouk
Restauration:
370 26 Mehdi Abaakouk
371 27 Laurent GUERBY
<pre>
372 27 Laurent GUERBY
$ cinder snapshot-list
373 26 Mehdi Abaakouk
...
374 26 Mehdi Abaakouk
$ cinder snapshot-show pano.tetaneutral.net-bootdisk-20150125-1600 | awk '/ id /{print $4}'
375 26 Mehdi Abaakouk
7dfbe98c-756e-47d1-a8bf-c8f2092de2f8
376 26 Mehdi Abaakouk
$ cinder create --display-name pano-restauration-test --snapshot-id 7dfbe98c-756e-47d1-a8bf-c8f2092de2f8 101
377 26 Mehdi Abaakouk
$ cinder show pano-restauration-test | awk '/ id /{print $4}'
378 26 Mehdi Abaakouk
80bb0bb2-8d37-42b2-bc8e-5e367ce2d94a
379 26 Mehdi Abaakouk
$ nova volume-attach pano.tetaneutral.net 80bb0bb2-8d37-42b2-bc8e-5e367ce2d94a auto
380 26 Mehdi Abaakouk
</pre>
381 2 Mehdi Abaakouk
382 2 Mehdi Abaakouk
h3. Exemple de migration de ganeti à openstack:
383 2 Mehdi Abaakouk
384 2 Mehdi Abaakouk
Sur h4:
385 2 Mehdi Abaakouk
<pre>
386 2 Mehdi Abaakouk
$ gnt-instance stop VMNAME.tetaneutral.net
387 2 Mehdi Abaakouk
$ gnt-instance activate-disks VMNAME.tetaneutral.net
388 2 Mehdi Abaakouk
h5.tetaneutral.net:disk/0:/dev/drbd34
389 2 Mehdi Abaakouk
</pre>
390 2 Mehdi Abaakouk
391 2 Mehdi Abaakouk
392 2 Mehdi Abaakouk
Sur g1, mettre l'image dans cinder
393 2 Mehdi Abaakouk
<pre>
394 2 Mehdi Abaakouk
name=VMNAME.tetaneutral.net
395 2 Mehdi Abaakouk
</pre>
396 2 Mehdi Abaakouk
397 2 Mehdi Abaakouk
Crée un volume (remplacer 20 par la taille du disque désiré):
398 2 Mehdi Abaakouk
399 2 Mehdi Abaakouk
<pre>
400 2 Mehdi Abaakouk
cinder create --volume_type ceph --display-name ${name}-bootdisk 20    # mettre ici un peu plus grand que le vrai disque.
401 2 Mehdi Abaakouk
volume_id=$(cinder show ${name}-bootdisk | awk '/ id /{print $4}')
402 2 Mehdi Abaakouk
</pre>
403 2 Mehdi Abaakouk
404 2 Mehdi Abaakouk
On remplace le volume rbd par le disque de la VM:
405 2 Mehdi Abaakouk
406 1 Mehdi Abaakouk
<pre>
407 9 Laurent GUERBY
rbd -p disks mv volume-$volume_id disks/volume-${volume_id}.old
408 2 Mehdi Abaakouk
socat -u tcp4-listen:505555 - | rbd -p disks import --image-format 2 - volume-$volume_id
409 2 Mehdi Abaakouk
</pre>
410 2 Mehdi Abaakouk
411 2 Mehdi Abaakouk
Sur la machine hX qui as le disque (ici h5 et le disque drbd34)
412 2 Mehdi Abaakouk
<pre>
413 2 Mehdi Abaakouk
cat /dev/drbd34 | socat -u - tcp4:g1:505555
414 2 Mehdi Abaakouk
# ou avec une bar de progression
415 2 Mehdi Abaakouk
apt-get install pv 
416 2 Mehdi Abaakouk
pv /dev/drbd34 | socat -u - tcp4:g1:505555
417 2 Mehdi Abaakouk
</pre>
418 2 Mehdi Abaakouk
419 2 Mehdi Abaakouk
<pre>
420 2 Mehdi Abaakouk
# On peut voir l'avancement via:
421 2 Mehdi Abaakouk
watch -n1 -- rbd -p disks info volume-$volume_id
422 2 Mehdi Abaakouk
</pre>
423 2 Mehdi Abaakouk
424 2 Mehdi Abaakouk
On change la taille de l'image pour mettre la meme que le volume créé par openstack
425 2 Mehdi Abaakouk
426 2 Mehdi Abaakouk
<pre>
427 2 Mehdi Abaakouk
$ rbd -p disks info volume-$volume_id.old
428 12 Laurent GUERBY
rbd image 'volume-$volume_id.old':
429 2 Mehdi Abaakouk
	size **XXX** MB in 5120 objects
430 2 Mehdi Abaakouk
	order 22 (4096 kB objects)
431 2 Mehdi Abaakouk
	block_name_prefix: rbd_data.752a15a94252f
432 1 Mehdi Abaakouk
	format: 2
433 12 Laurent GUERBY
	features: layering
434 13 Laurent GUERBY
$ # ou bien
435 12 Laurent GUERBY
$ rbd -p disks info --pretty-format --format json volume-$volume_id.old | grep size
436 12 Laurent GUERBY
$ # puis
437 2 Mehdi Abaakouk
$ rbd -p disks resize --size XXX volume-$volume_id
438 2 Mehdi Abaakouk
</pre>
439 2 Mehdi Abaakouk
440 2 Mehdi Abaakouk
Booter la VM avec ce disque (le disque existant déjà le script l'utilisera):
441 2 Mehdi Abaakouk
442 8 Laurent GUERBY
<pre>
443 2 Mehdi Abaakouk
/root/tools/boot-vm.sh --ip A.B.C.D --flavor Xvcpu-Yram ${name}
444 2 Mehdi Abaakouk
</pre>
445 2 Mehdi Abaakouk
446 2 Mehdi Abaakouk
_Note: Si le disque a été agrandi, on peut utiliser dans la VM "growpart /dev/vda 1" ou 'parted resizepart' pour récupérer l'espace disponible (fonctionne bien sous jessie ou dernier ubuntu)_
447 2 Mehdi Abaakouk
448 2 Mehdi Abaakouk
Quand c'est fini sur h4:
449 2 Mehdi Abaakouk
450 2 Mehdi Abaakouk
<pre>
451 2 Mehdi Abaakouk
gnt-instance deactivate-disks VMNAME.tetaneutral.net
452 2 Mehdi Abaakouk
</pre>
453 2 Mehdi Abaakouk
454 2 Mehdi Abaakouk
S'il faut changer la RAM et vCPU
455 2 Mehdi Abaakouk
456 2 Mehdi Abaakouk
<pre>
457 2 Mehdi Abaakouk
nova flavor-list
458 2 Mehdi Abaakouk
nova list
459 2 Mehdi Abaakouk
nova resize ${name} FLAVOR_ID --poll
460 1 Mehdi Abaakouk
nova resize-confirm VM_ID
461 1 Mehdi Abaakouk
</pre>
462 10 Mehdi Abaakouk
463 10 Mehdi Abaakouk
h3. Convertion des images rbd au format 2 (pour les premieres VMs migrées de ganeti)
464 10 Mehdi Abaakouk
465 10 Mehdi Abaakouk
<pre>
466 10 Mehdi Abaakouk
$ nova stop <vm_name>
467 10 Mehdi Abaakouk
$ rbd -p disks export volume-XXXXXXXXXXXXXX - | rbd import --image-format 2 -p disks - volume-XXXXXXXXXXXXXX.converted
468 10 Mehdi Abaakouk
$ rbd -p disks mv volume-XXXXXXXXXXXXXX volume-XXXXXXXXXXXXXX.old
469 10 Mehdi Abaakouk
$ rbd -p disks mv volume-XXXXXXXXXXXXXX.converted volume-XXXXXXXXXXXXXX
470 10 Mehdi Abaakouk
$ rbd -p disks rm volume-XXXXXXXXXXXXXX.old
471 10 Mehdi Abaakouk
$ nova start <vm_name>
472 10 Mehdi Abaakouk
</pre>
473 22 Mehdi Abaakouk
474 37 Laurent GUERBY
h3. Déplacer une VM de pool ceph
475 21 Mehdi Abaakouk
476 36 Laurent GUERBY
477 1 Mehdi Abaakouk
<pre>
478 36 Laurent GUERBY
root@g1:~# nova show test246.tetaneutral.net|grep flavor
479 36 Laurent GUERBY
| flavor                               | 1vcpu-1024ram (a3e63391-3577-4a4e-afdb-4bc1d2c75419)     |
480 36 Laurent GUERBY
root@g1:~# cinder list|grep test246
481 36 Laurent GUERBY
| 15273654-af28-4ed2-b2df-0ab17ec8dd2f |   in-use  |       test246.tetaneutral.net-bootdisk       |  10  |     ceph    |   true   | 97279b50-b2c3-4d2e-9a24-8c0b80104375 |
482 36 Laurent GUERBY
root@g1:~# cinder create --volume_type ceph-ssd --display-name test246.tetaneutral.net-bootdisk-tmp 10
483 36 Laurent GUERBY
root@g1:~# cinder list|grep test246
484 36 Laurent GUERBY
| 15273654-af28-4ed2-b2df-0ab17ec8dd2f |   in-use  |       test246.tetaneutral.net-bootdisk       |  10  |     ceph    |   true   | 97279b50-b2c3-4d2e-9a24-8c0b80104375 |
485 36 Laurent GUERBY
| b32f6845-35cd-412e-b412-ae142234bc12 | available |     test246.tetaneutral.net-bootdisk-tmp     |  10  |   ceph-ssd  |  false   |                                      |
486 38 Laurent GUERBY
root@g1:~# nova stop test246.tetaneutral.net
487 39 Laurent GUERBY
Request to stop server test246.tetaneutral.net has been accepted.
488 39 Laurent GUERBY
root@g1:~# nova list|grep test246
489 39 Laurent GUERBY
| 97279b50-b2c3-4d2e-9a24-8c0b80104375 | test246.tetaneutral.net             | ACTIVE | powering-off | Running     | vlan-routed=2a01:6600:8083:f600::1, 89.234.156.246                                                                         |
490 39 Laurent GUERBY
root@g1:~# nova list|grep test246
491 39 Laurent GUERBY
| 97279b50-b2c3-4d2e-9a24-8c0b80104375 | test246.tetaneutral.net             | SHUTOFF | -          | Shutdown    | vlan-routed=2a01:6600:8083:f600::1, 89.234.156.246                                                                         |
492 36 Laurent GUERBY
root@g1:~# rbd -p ssds mv volume-b32f6845-35cd-412e-b412-ae142234bc12 ssds/volume-b32f6845-35cd-412e-b412-ae142234bc12.old
493 36 Laurent GUERBY
root@g1:~# date;rbd -p disks export volume-15273654-af28-4ed2-b2df-0ab17ec8dd2f - | rbd import --image-format 2 -p ssds - volume-b32f6845-35cd-412e-b412-ae142234bc12 ;date
494 36 Laurent GUERBY
Fri Jun  5 17:12:35 CEST 2015
495 36 Laurent GUERBY
Exporting image: 100% complete...done.
496 36 Laurent GUERBY
Fri Jun  5 17:14:58 CEST 2015
497 36 Laurent GUERBY
root@g1:~# nova delete test246.tetaneutral.net
498 36 Laurent GUERBY
Request to delete server test246.tetaneutral.net has been accepted.
499 36 Laurent GUERBY
root@g1:~# nova list|grep test246
500 40 Laurent GUERBY
root@g1:~# cinder rename test246.tetaneutral.net-bootdisk test246.tetaneutral.net-bootdisk-old20150605 # or: cinder delete test246.tetaneutral.net-bootdisk
501 36 Laurent GUERBY
root@g1:~# cinder list|grep test246
502 36 Laurent GUERBY
| 15273654-af28-4ed2-b2df-0ab17ec8dd2f |  deleting |       test246.tetaneutral.net-bootdisk       |  10  |     ceph    |   true   |                                      |
503 36 Laurent GUERBY
| b32f6845-35cd-412e-b412-ae142234bc12 | available |     test246.tetaneutral.net-bootdisk-tmp     |  10  |   ceph-ssd  |  false   |                                      |
504 36 Laurent GUERBY
root@g1:~# cinder list|grep test246
505 36 Laurent GUERBY
| b32f6845-35cd-412e-b412-ae142234bc12 | available |     test246.tetaneutral.net-bootdisk-tmp     |  10  |   ceph-ssd  |  false   |                                      |
506 36 Laurent GUERBY
root@g1:~# cinder rename test246.tetaneutral.net-bootdisk-tmp test246.tetaneutral.net-bootdisk
507 36 Laurent GUERBY
root@g1:~# cinder set-bootable b32f6845-35cd-412e-b412-ae142234bc12 true
508 36 Laurent GUERBY
root@g1:~# /root/tools/boot-vm.sh --ip 89.234.156.246 --flavor 1vcpu-1024ram test246.tetaneutral.net
509 40 Laurent GUERBY
# Note : for ipv6 only add --no-ip-check 
510 36 Laurent GUERBY
</pre>
511 25 Laurent GUERBY
512 36 Laurent GUERBY
Note:
513 36 Laurent GUERBY
<pre>
514 28 Mehdi Abaakouk
root@g1:~# nova volume-detach test246.tetaneutral.net 0afab4c6-e340-4352-a609-7c43d51b5795
515 25 Laurent GUERBY
ERROR (Forbidden): Can't detach root device volume (HTTP 403) (Request-ID: req-98a6e8f3-8897-4361-8fd7-6f10484d51b9)
516 32 Mehdi Abaakouk
</pre>
517 36 Laurent GUERBY
see https://bugs.launchpad.net/nova/+bug/1396965 and https://ask.openstack.org/en/question/53732/detaching-root-device-volume-of-an-instance/
518 29 Mehdi Abaakouk
519 29 Mehdi Abaakouk
h2. Migration de VM si le host est DOWN
520 29 Mehdi Abaakouk
521 29 Mehdi Abaakouk
h3. HACK pour contourner un bug neutron/nova (icehouse/obsolete)
522 29 Mehdi Abaakouk
523 29 Mehdi Abaakouk
nova attends que le port neutron soit UP sur la nouvelle machine, mais celui-ci reste sur l'ancienne machine DOWN,
524 29 Mehdi Abaakouk
reste à savoir si c'est nova qui change mal la conf du port, ou neutron qui ignore le changement.
525 1 Mehdi Abaakouk
526 29 Mehdi Abaakouk
Du coup pour contourner le problème, un peu de mysql:
527 29 Mehdi Abaakouk
528 29 Mehdi Abaakouk
Sur la machine "openstack", on change la host de plein de ports (de g6 vers h7 dans l'exemple):
529 29 Mehdi Abaakouk
530 29 Mehdi Abaakouk
<pre>
531 29 Mehdi Abaakouk
# mysql neutron
532 29 Mehdi Abaakouk
$ update ml2_port_bindings set host='h7' where host='g6';
533 29 Mehdi Abaakouk
</pre>
534 29 Mehdi Abaakouk
535 29 Mehdi Abaakouk
Ensuite sur la machine destination, on restart les services pour qu'il voit le changement:
536 29 Mehdi Abaakouk
537 29 Mehdi Abaakouk
<pre>
538 29 Mehdi Abaakouk
/etc/init.d/neutron-plugin-linuxrouted-agent restart
539 31 Laurent GUERBY
/etc/init.d/neutron-plugin-openvswitch-agent restart
540 31 Laurent GUERBY
</pre>
541 29 Mehdi Abaakouk
542 29 Mehdi Abaakouk
h3. Commande normal pour évacuer une machine DOWN
543 28 Mehdi Abaakouk
544 28 Mehdi Abaakouk
Si une machine est capable de tout reprendre :
545 28 Mehdi Abaakouk
546 28 Mehdi Abaakouk
<pre>
547 28 Mehdi Abaakouk
# nova host-evacuate --target_host n7 g6
548 28 Mehdi Abaakouk
+--------------------------------------+-------------------+---------------+
549 28 Mehdi Abaakouk
| Server UUID                          | Evacuate Accepted | Error Message |
550 28 Mehdi Abaakouk
+--------------------------------------+-------------------+---------------+
551 1 Mehdi Abaakouk
| 0f50c84c-0251-40e8-86aa-aacb81d8ef8c | True              |               |
552 29 Mehdi Abaakouk
| 8125c4ae-8cb3-4469-8718-56653342de04 | True              |               |
553 29 Mehdi Abaakouk
| 527a46b7-0555-4351-871a-bc13a5436feb | True              |               |
554 31 Laurent GUERBY
| 0e285b7a-4ea6-4352-86a2-729f1d414c82 | True              |               |
555 31 Laurent GUERBY
+--------------------------------------+-------------------+---------------+
556 31 Laurent GUERBY
</pre>
557 31 Laurent GUERBY
558 31 Laurent GUERBY
Attendre ensuite que tous les VMs soit UP niveau openstack
559 31 Laurent GUERBY
560 29 Mehdi Abaakouk
Sinon VM par VM :
561 30 Mehdi Abaakouk
562 29 Mehdi Abaakouk
<pre>
563 29 Mehdi Abaakouk
nova evacuate VMname HOSTname
564 29 Mehdi Abaakouk
</pre>
565 29 Mehdi Abaakouk
566 29 Mehdi Abaakouk
h3. Partie normalement inutile maintenant, à vérifier:
567 29 Mehdi Abaakouk
568 29 Mehdi Abaakouk
Dans le cas ou certain sont UP mais ne ping pas, ne pas hésiter à refaire sur la machine destination:
569 29 Mehdi Abaakouk
570 29 Mehdi Abaakouk
<pre>
571 21 Mehdi Abaakouk
/etc/init.d/neutron-plugin-linuxrouted-agent restart
572 1 Mehdi Abaakouk
/etc/init.d/neutron-plugin-openvswitch-agent restart
573 1 Mehdi Abaakouk
</pre>
574 1 Mehdi Abaakouk
575 1 Mehdi Abaakouk
Voir peut être reboot --hard les vms qui on pas marché du premier coup
576 1 Mehdi Abaakouk
577 1 Mehdi Abaakouk
h2. VM de management (nommé openstack)
578 1 Mehdi Abaakouk
579 1 Mehdi Abaakouk
h3. Live Migration d'un host à l'autre
580 1 Mehdi Abaakouk
581 1 Mehdi Abaakouk
Cela fait tout à notre place niveau kvm/libvirt/ceph
582 1 Mehdi Abaakouk
583 1 Mehdi Abaakouk
<pre>
584 1 Mehdi Abaakouk
virsh migrate --persistent --undefinesource --live --p2p openstack qemu+ssh://g2:2222/system
585 1 Mehdi Abaakouk
</pre>
586 1 Mehdi Abaakouk
587 1 Mehdi Abaakouk
h3. Recover depuis une perte de la machine hote:
588 1 Mehdi Abaakouk
589 1 Mehdi Abaakouk
Créé un fichier openstack.xml à partir d'un backup de '/etc/libvirt/qemu/openstack.xml' ou utiliser l'exemple ici: attachment:openstack.xml
590 1 Mehdi Abaakouk
591 1 Mehdi Abaakouk
_Note: il faut surement viré les uuid des interfaces openvswitch qui sont différent suivant le hosts_
592 1 Mehdi Abaakouk
593 1 Mehdi Abaakouk
Puis on recréé la VM
594 23 Laurent GUERBY
595 23 Laurent GUERBY
<pre>
596 23 Laurent GUERBY
$ virsh create openstack.xml
597 23 Laurent GUERBY
$ virsh start openstack.xml
598 23 Laurent GUERBY
</pre>
599 23 Laurent GUERBY
600 23 Laurent GUERBY
h2. Operations sur les hotes
601 23 Laurent GUERBY
602 23 Laurent GUERBY
h3. Reboot
603 23 Laurent GUERBY
604 23 Laurent GUERBY
<pre>
605 23 Laurent GUERBY
nova list --host=n7 # list des VM xxx sur n7
606 23 Laurent GUERBY
for i in xxx; do nova live-migration $i stri; done # repartir sur plusieurs hosts
607 23 Laurent GUERBY
ps fauxwww|grep kvm # verifier qu'il n'y a plus de VM
608 23 Laurent GUERBY
for i in $(rados lspools) ; do ceph osd pool set $i min_size 1 ; done # diminuer le nombre de copies
609 23 Laurent GUERBY
ceph osd set noout # pour prevenir que les OSD vont revenir
610 1 Mehdi Abaakouk
/etc/init.d/ceph stop 
611 1 Mehdi Abaakouk
shutdown -h now
612 1 Mehdi Abaakouk
</pre>
613 1 Mehdi Abaakouk
614 1 Mehdi Abaakouk
Post reboot remettre les min_size a 2, rappatrier les VM.