Openstack Management TTNN » Historique » Version 52
« Précédent -
Version 52/140
(diff) -
Suivant » -
Version actuelle
Mehdi Abaakouk, 25/09/2015 16:42
- Contenu
- Openstack Management TTNN
- Opération sur les VMs (des membres)
- Console série
- Voir la console graphique sans spice-html5:
- Reboot VM en error
- Shutdown une VM
- Effacer une VM
- Disques de VM
- Offline fsck
- Agrandissement d'un disque
- Délégation /56 ipv6 d'une VM déjà créé.
- Ajout d'une interface réseau à une VM:
- Réinstallation/Réparation grub d'un VM
- Monter le disque d'un vm sur une machine hote pour dépannage.
- Convert du fs root en ext4 et passage en scsi
- Réaligne VM partition (guide pour vm avec une seul partition)
- Création/Restauration snapshot
- Exemple de migration de ganeti à openstack:
- Convertion des images rbd au format 2 (pour les premieres VMs migrées de ganeti)
- Déplacer une VM de pool ceph
- Migration de VM si le host est UP
- Migration de VM si le host est DOWN (à vérifier depuis le passage à kilo)
- VM de management (nommé openstack)
- Operations sur les hotes
- Opération sur les VMs (des membres)
Openstack Management TTNN¶
openstack tools for ttnn: http://chiliproject.tetaneutral.net/projects/git-tetaneutral-net/repository/openstack-tools
Opération sur les VMs (des membres)¶
Console série¶
Dans la VM, pour systemd:
$ systemctl enalbe serial-getty@ttyS0.service $ systemctl start serial-getty@ttyS0.service
Dans la VM, pour sysv
$ cat >> /etc/inittab <<EOF T2:2345:respawn:/sbin/getty ttyS0 115200 vt102 EOF $ init q
Sur g1:
$ /root/tools/novaconsole ns2.tetaneutral.net WARNING:novaconsole.client:connected to: ws://openstack.tetaneutral.net:6083/?token=4b10cdbe-2a69-4de1-b9e3-dc378096b104 WARNING:novaconsole.client:type "~." to disconnect Debian GNU/Linux 8 ns2 ttyS0 ns2 login:
Si le message suivant apparaît, il faut faire un hard reboot de la machine pour ajouter la console serie à la VM:
ERROR:novaconsole:failed to connect to serial console: Unavailable console type serial. (HTTP 400)
Voir la console graphique sans spice-html5:¶
Copier le script suivant 'gvnc' sur ca machine:
#!/bin/bash vm=$1 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\";'")) if [ "${info[0]}" == "mysql" ]; then echo "Error in mysql request" exit 1 fi hypervisor=${info[0]}.tetaneutral.net uuid=${info[1]} spice_port=$(ssh ${hypervisor} -p 2222 -l root virsh domdisplay ${uuid} | awk -F: '{print $3}') echo "$vm on $hypervisor port $spice_port" ssh -N $hypervisor -p 2222 -l root -L 5910:localhost:${spice_port} & pid=$! cleanup(){ kill $pid } trap cleanup EXIT sleep 2 remote-viewer spice://localhost:5910/
Puis
sudo apt-get install virt-viewer ./gvnc puppet.openstack.net
Reboot VM en error¶
nova reset-state --active xxx.tetaneutral.net nova reboot --hard --poll xxx.tetaneutral.net
Shutdown une VM¶
nova stop xxx.tetaneutral.net
A noter que suspend fait une sauvegarde de la RAM comme sur un laptop. shelve est bugué ne pas utiliser.
Effacer une VM¶
nova delete xxx.tetaneutral.net
Disques de VM¶
Pour renommer (et permettre a boot-disk de recreer) ou effacer :
cinder list cinder rename <ID> <newname> cinder delete <ID_or_Name>
Offline fsck¶
Récuperer l'id et l'hyperviseur de la VM
# nova stop VMNAME.tetaneutral.net # nova show VMNAME.tetaneutral.net | grep -e 'host ' -e ' id ' | OS-EXT-SRV-ATTR:host | g1 | | id | 918e0ec7-0909-423c-9a67-15b5ef7c7ae0 |
Aller sur l'hyperviseur en question, puis:
# guestfish -d 918e0ec7-0909-423c-9a67-15b5ef7c7ae0 ><fs> run ><fs> list-filesystems /dev/sda: iso9660 /dev/sdb1: ext4 ><fs> e2fsck-f /dev/sdb1
Si le fsck returns une erreur, c'est donc un probleme un peu plus grave on peut faire:
><fs> e2fsck /dev/sdb1 forceall:true
Agrandissement d'un disque¶
Sur la machine 'openstack':
root@openstack:~/tools ./os-grow-disk.sh usage: os-grow-disk.sh CINDER_VOLUME_ID SIZE_GB root@openstack:~/tools# ./os-grow-disk.sh bc6f01cb-c6b6-4413-b2ef-1f7df0031049 60 Cinder: bc6f01cb-c6b6-4413-b2ef-1f7df0031049 , test4-bootdisk | 40 -> 60 Enter YES to update YES Testing g3 ssh connection... Resizing the kvm blockdevice... Block device 'vda' is resized Updating cinder database with the new value... Update finish
Puis sur la VM:
Il faut avoir un 'parted' récent ou patché avec le support du 'online resizepart':
'online resizepart' est natif depuis parted >= 3.1:- debian >= jessie
- ubuntu >= 14.10
- ubuntu >= 13.10 < 14.10
Pour debian wheezy, utilisation les packages ubuntu de 14.04 devrait marcher
(pas encore testé, à voir si le kernel veut bien reload la table des partitions après)
root@test4:~# parted /dev/vda print | grep vda Disk /dev/vda: 64.4GB root@test4# parted /dev/vda resizepart 1 Warning: Partition /dev/vda1 is being used. Are you sure you want to continue? Yes/No? Yes End? [42.9GB]? 64.4GB # METTRE ICI LA TAILLE VU AU DESSUS Information: You may need to update /etc/fstab. root@test4:~# resize2fs /dev/vda1 resize2fs 1.42.9 (4-Feb-2014) Filesystem at /dev/vda1 is mounted on /; on-line resizing required old_desc_blocks = 3, new_desc_blocks = 4 The filesystem on /dev/vda1 is now 15722400 blocks long. root@test4:~# df -h | grep vda /dev/vda1 60G 797M 56G 2% /
Méthode plus risquée et manuelle pour wheezy :
sfdisk -d /dev/vda > vda.mbr cp vda.mbr vda.mbr.ori vi vda.mbr # mettre un tres grand nombre pour la fin de la partition sfdisk -L -n --no-reread /dev/vda < vda.mbr # cela va faire une erreur avec le max a mettre pour la fin de la partition # changer la fin de la partition avec ce chiffre sfdisk -L --no-reread /dev/vda < vda.mbr reboot resize2fs -p /dev/vda1
Délégation /56 ipv6 d'une VM déjà créé.¶
Récupérer les IPs actutelles de la VM:
# neutron port-show backup.tetaneutral.net-eth0 | grep ip_address | allowed_address_pairs | {"ip_address": "2a01:6600:8083:d400::/56", "mac_address": "fa:16:3e:5f:07:45"} | | fixed_ips | {"subnet_id": "1700a8e4-13d7-497c-9d2b-98f294199b36", "ip_address": "2a01:6600:8083:d400::1"} | | | {"subnet_id": "d431cacd-3b60-4ca9-af24-eacc8e5d8671", "ip_address": "89.234.156.212"} |
Mettre à jour le port avec la link local de la délégation (ici: fe80::83:d4) en plus de la liste des IPs existantes:
# neutron port-update backup.tetaneutral.net-eth0 --fixed-ips type=dict list=true ip_address=89.234.156.212 ip_address=2a01:6600:8083:d400::1 ip_address=fe80::83:d4
Vérification:
- neutron port-show backup.tetaneutral.net-eth0 | grep ip_address
allowed_address_pairs {"ip_address": "2a01:6600:8083:d400::/56", "mac_address": "fa:16:3e:5f:07:45"} fixed_ips {"subnet_id": "1700a8e4-13d7-497c-9d2b-98f294199b36", "ip_address": "2a01:6600:8083:d400::1"} {"subnet_id": "d431cacd-3b60-4ca9-af24-eacc8e5d8671", "ip_address": "89.234.156.212"} {"subnet_id": "b660afee-8866-4e0e-a783-920503aee73c", "ip_address": "fe80::83:d4"}
Ajout d'une interface réseau à une VM:¶
$ neutron net-list | grep vlan3199 | 460f49ce-f5ed-449e-9e0f-7626bcee4379 | vlan3199 | ba3f12af-074a-4a31-9a7c-a621993e13bb 192.168.99.0/24 | $ neutron port-create 460f49ce-f5ed-449e-9e0f-7626bcee4379 --name nagios-eth2 --fixed-ips type=dict list=true ip_address=192.168.99.248 Created a new port: +-----------------------+---------------------------------------------------------------------------------------+ | Field | Value | +-----------------------+---------------------------------------------------------------------------------------+ | admin_state_up | True | | allowed_address_pairs | | | binding:host_id | | | binding:profile | {} | | binding:vif_details | {} | | binding:vif_type | unbound | | binding:vnic_type | normal | | device_id | | | device_owner | | | fixed_ips | {"subnet_id": "ba3f12af-074a-4a31-9a7c-a621993e13bb", "ip_address": "192.168.99.248"} | | id | 918e0ec7-0909-423c-9a67-15b5ef7c7ae0 | | mac_address | fa:16:3e:6b:32:07 | | name | nagios-eth2 | | network_id | 460f49ce-f5ed-449e-9e0f-7626bcee4379 | | security_groups | b6d5b5fb-a053-4f97-b964-9e1a12d243b1 | | status | DOWN | | tenant_id | ed980105f9d047e2bee738b3f261f126 | +-----------------------+---------------------------------------------------------------------------------------+ $ nova interface-attach --port-id 918e0ec7-0909-423c-9a67-15b5ef7c7ae0 nagios.tetaneutral.net
Dans la VM:
$ dmesg | tail [ 1315.826088] virtio-pci 0000:00:06.0: using default PCI settings [ 1315.826102] virtio-pci 0000:00:07.0: no hotplug settings from platform [ 1315.826102] virtio-pci 0000:00:07.0: using default PCI settings [ 1315.826116] pci 0000:00:08.0: no hotplug settings from platform [ 1315.826117] pci 0000:00:08.0: using default PCI settings [ 1315.826382] virtio-pci 0000:00:08.0: enabling device (0000 -> 0003) [ 1315.829281] virtio-pci 0000:00:08.0: setting latency timer to 64 [ 1315.829535] virtio-pci 0000:00:08.0: irq 50 for MSI/MSI-X [ 1315.829555] virtio-pci 0000:00:08.0: irq 51 for MSI/MSI-X [ 1315.829563] virtio-pci 0000:00:08.0: irq 52 for MSI/MSI-X $ ip l show dev eth2 4: eth2: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 1000 link/ether fa:16:3e:6b:32:07 brd ff:ff:ff:ff:ff:ff $ tail -4 /etc/network/interfaces auto eth2 iface eth2 inet static address 192.168.99.248 netmask 255.255.255.0 $ ifup eth2 $ ping 192.169.99.250 PING 192.169.99.250 (192.169.99.250) 56(84) bytes of data. 64 bytes from 192.169.99.250: icmp_req=1 ttl=119 time=170 ms 64 bytes from 192.169.99.250: icmp_req=2 ttl=119 time=204 ms ^C
Réinstallation/Réparation grub d'un VM¶
Récuperer l'id et l'hyperviseur de la VM
# nova stop VMNAME.tetaneutral.net # nova show VMNAME.tetaneutral.net | grep -e 'host ' -e ' id ' | OS-EXT-SRV-ATTR:host | g1 | | id | 918e0ec7-0909-423c-9a67-15b5ef7c7ae0 |
Bien attendre que la VM soir éteinte, aller sur l'hyperviseur en question, et taper
virt-customize -v t-d 918e0ec7-0909-423c-9a67-15b5ef7c7ae0 --run-command 'update-grub ; grub-install /dev/sda;'
Enfin, restart la VM
# nova start VMNAME.tetaneutral.net
Monter le disque d'un vm sur une machine hote pour dépannage.¶
L’exemple montre la modification du fichier /etc/ssh/sshd_config
Récuperer l'id et l'hyperviseur de la VM
# nova stop VMNAME.tetaneutral.net # nova show VMNAME.tetaneutral.net | grep -e 'host ' -e ' id ' | OS-EXT-SRV-ATTR:host | g1 | | id | 918e0ec7-0909-423c-9a67-15b5ef7c7ae0 |
Aller sur l'hyperviseur en question, puis:
# virt-edit -d 918e0ec7-0909-423c-9a67-15b5ef7c7ae0 /etc/ssh/sshd_config
Fermer le fichier et restart la VM
# nova start VMNAME.tetaneutral.net
Convert du fs root en ext4 et passage en scsi¶
Dans la VM, préparation de grub et du fstab:
$ vi /etc/fstab # Viré /proc # Pour / (voir les autres) mettre: LABEL=cloudimg-rootfs / ext4 defaults,discard,noatime 0 0 $ e2label /dev/vda1 cloudimg-rootfs $ apt-get install grub-pc $ apt-get purge extlinux $ rm -f /extlinux.conf $ grub-install /dev/vda $ shutdown -h now
Récuperer l'id et l'hyperviseur de la VM
# nova stop VMNAME.tetaneutral.net # nova show VMNAME.tetaneutral.net | grep -e 'host ' -e ' id ' | OS-EXT-SRV-ATTR:host | g1 | | id | 918e0ec7-0909-423c-9a67-15b5ef7c7ae0 |
Aller sur l'hyperviseur en question, puis:
$ virt-rescue --suggest 918e0ec7-0909-423c-9a67-15b5ef7c7ae0 ... # /dev/sdb1 is the root of a linux operating system # type: linux, distro: debian, version: 8.0 # 8.0 mount /dev/sdb1 /sysroot/ mount --bind /dev /sysroot/dev mount --bind /dev/pts /sysroot/dev/pts mount --bind /proc /sysroot/proc mount --bind /sys /sysroot/sys
- Utiliser le device proposé pour la convertion en ext4:
$ virt-rescue 918e0ec7-0909-423c-9a67-15b5ef7c7ae0 > tune2fs -O extents,uninit_bg,dir_index /dev/sdb1 > e2fsck -fDC0 /dev/sdb1 > <CTRL+D>
Sur la vm openstack, changé l'attribut de la VM en pour le scsi:
cd /root/tools/sql_scripts ./os-use-scsi-discard.sh VMNAME.tetaneutral.net
Sur G1, restart la VM
# nova start VMNAME.tetaneutral.net
Réaligne VM partition (guide pour vm avec une seul partition)¶
Prérequies:
- VM utilse grub2 *
Récuperer l'id et l'hyperviseur de la VM, ainsi que l'id du disk
# nova stop VMNAME.tetaneutral.net # nova show VMNAME.tetaneutral.net | grep -e 'host ' -e ' id ' | OS-EXT-SRV-ATTR:host | g1 | | id | 918e0ec7-0909-423c-9a67-15b5ef7c7ae0 | # cinder list | grep puppet | 213e894e-2f20-42b5-a27b-21f5a355c722 | in-use | VMNAME.tetaneutral.net-bootdisk | 20 | ceph-ssd | true | 918e0ec7-0909-423c-9a67-15b5ef7c7ae0 |
Aller sur l'hyperviseur en question, puis vérifier l'alignement:
$ virt-alignment-scan -d 918e0ec7-0909-423c-9a67-15b5ef7c7ae0 /dev/sdb1 65536 512 bad (alignment < 4K)
Réalignemet, aller dans un espace ou il y a 2x l'espace utile de la VM, puis:
$ virt-tar-out -d 918e0ec7-0909-423c-9a67-15b5ef7c7ae0 / - | gzip --best > VMNAME.tar.gz $ rbd -p ssds info volume-213e894e-2f20-42b5-a27b-21f5a355c722 rbd image 'volume-213e894e-2f20-42b5-a27b-21f5a355c722': size 20480 MB in 5120 objects order 22 (4096 kB objects) block_name_prefix: rbd_data.996cc92ae8944a format: 2 features: layering $ virt-make-fs --label=cloudimg-rootfs --partition=mbr --type=ext4 --format=raw --size=20480 VMNAME.tar.gz VMNAME.img $ virt-customize -a VMNAME.img --run-command 'update-grub ; grub-install /dev/sda' $ rbd mv ssds/volume-213e894e-2f20-42b5-a27b-21f5a355c722 ssds/volume-213e894e-2f20-42b5-a27b-21f5a355c722.unaligned $ rbd import --image-format 2 VMNAME.img ssds/volume-213e894e-2f20-42b5-a27b-21f5a355c722
Vérification:
$ virt-alignment-scan -d 918e0ec7-0909-423c-9a67-15b5ef7c7ae0 /dev/sdb1 65536 64K ok
Création/Restauration snapshot¶
Création:
source os.conf /root/tools/os-snapshot-vm.sh pano.tetaneutral.net bootdisk / * Freezing / of pano.tetaneutral.net * Snapshoting pano.tetaneutral.net-bootdisk Snapshot pano.tetaneutral.net-bootdisk-20150125-1600 is in state creating .. * pano.tetaneutral.net-bootdisk snapshoted * / of pano.tetaneutral.net unfreezed
Restauration:
$ cinder snapshot-list ... $ cinder snapshot-show pano.tetaneutral.net-bootdisk-20150125-1600 | awk '/ id /{print $4}' 7dfbe98c-756e-47d1-a8bf-c8f2092de2f8 $ cinder create --display-name pano-restauration-test --snapshot-id 7dfbe98c-756e-47d1-a8bf-c8f2092de2f8 101 $ cinder show pano-restauration-test | awk '/ id /{print $4}' 80bb0bb2-8d37-42b2-bc8e-5e367ce2d94a $ nova volume-attach pano.tetaneutral.net 80bb0bb2-8d37-42b2-bc8e-5e367ce2d94a auto
Exemple de migration de ganeti à openstack:¶
Sur h4:
$ gnt-instance stop VMNAME.tetaneutral.net $ gnt-instance activate-disks VMNAME.tetaneutral.net h5.tetaneutral.net:disk/0:/dev/drbd34
Sur g1, mettre l'image dans cinder
name=VMNAME.tetaneutral.net
Crée un volume (remplacer 20 par la taille du disque désiré):
cinder create --volume_type ceph --display-name ${name}-bootdisk 20 # mettre ici un peu plus grand que le vrai disque. volume_id=$(cinder show ${name}-bootdisk | awk '/ id /{print $4}')
On remplace le volume rbd par le disque de la VM:
rbd -p disks mv volume-$volume_id disks/volume-${volume_id}.old socat -u tcp4-listen:505555 - | rbd -p disks import --image-format 2 - volume-$volume_id
Sur la machine hX qui as le disque (ici h5 et le disque drbd34)
cat /dev/drbd34 | socat -u - tcp4:g1:505555 # ou avec une bar de progression apt-get install pv pv /dev/drbd34 | socat -u - tcp4:g1:505555
# On peut voir l'avancement via: watch -n1 -- rbd -p disks info volume-$volume_id
On change la taille de l'image pour mettre la meme que le volume créé par openstack
$ rbd -p disks info volume-$volume_id.old rbd image 'volume-$volume_id.old': size **XXX** MB in 5120 objects order 22 (4096 kB objects) block_name_prefix: rbd_data.752a15a94252f format: 2 features: layering $ # ou bien $ rbd -p disks info --pretty-format --format json volume-$volume_id.old | grep size $ # puis $ rbd -p disks resize --size XXX volume-$volume_id
Booter la VM avec ce disque (le disque existant déjà le script l'utilisera):
/root/tools/boot-vm.sh --ip A.B.C.D --flavor Xvcpu-Yram ${name}
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)
Quand c'est fini sur h4:
gnt-instance deactivate-disks VMNAME.tetaneutral.net
S'il faut changer la RAM et vCPU
nova flavor-list nova list nova resize ${name} FLAVOR_ID --poll nova resize-confirm VM_ID
Convertion des images rbd au format 2 (pour les premieres VMs migrées de ganeti)¶
$ nova stop <vm_name> $ rbd -p disks export volume-XXXXXXXXXXXXXX - | rbd import --image-format 2 -p disks - volume-XXXXXXXXXXXXXX.converted $ rbd -p disks mv volume-XXXXXXXXXXXXXX volume-XXXXXXXXXXXXXX.old $ rbd -p disks mv volume-XXXXXXXXXXXXXX.converted volume-XXXXXXXXXXXXXX $ rbd -p disks rm volume-XXXXXXXXXXXXXX.old $ nova start <vm_name>
Déplacer une VM de pool ceph¶
root@g1:~# nova show test246.tetaneutral.net|grep flavor | flavor | 1vcpu-1024ram (a3e63391-3577-4a4e-afdb-4bc1d2c75419) | root@g1:~# cinder list|grep test246 | 15273654-af28-4ed2-b2df-0ab17ec8dd2f | in-use | test246.tetaneutral.net-bootdisk | 10 | ceph | true | 97279b50-b2c3-4d2e-9a24-8c0b80104375 | root@g1:~# cinder create --volume_type ceph-ssd --display-name test246.tetaneutral.net-bootdisk-tmp 10 root@g1:~# cinder list|grep test246 | 15273654-af28-4ed2-b2df-0ab17ec8dd2f | in-use | test246.tetaneutral.net-bootdisk | 10 | ceph | true | 97279b50-b2c3-4d2e-9a24-8c0b80104375 | | b32f6845-35cd-412e-b412-ae142234bc12 | available | test246.tetaneutral.net-bootdisk-tmp | 10 | ceph-ssd | false | | root@g1:~# nova stop test246.tetaneutral.net Request to stop server test246.tetaneutral.net has been accepted. root@g1:~# nova list|grep test246 | 97279b50-b2c3-4d2e-9a24-8c0b80104375 | test246.tetaneutral.net | ACTIVE | powering-off | Running | vlan-routed=2a01:6600:8083:f600::1, 89.234.156.246 | root@g1:~# nova list|grep test246 | 97279b50-b2c3-4d2e-9a24-8c0b80104375 | test246.tetaneutral.net | SHUTOFF | - | Shutdown | vlan-routed=2a01:6600:8083:f600::1, 89.234.156.246 | root@g1:~# rbd -p ssds mv volume-b32f6845-35cd-412e-b412-ae142234bc12 ssds/volume-b32f6845-35cd-412e-b412-ae142234bc12.old 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 Fri Jun 5 17:12:35 CEST 2015 Exporting image: 100% complete...done. Fri Jun 5 17:14:58 CEST 2015 root@g1:~# nova delete test246.tetaneutral.net Request to delete server test246.tetaneutral.net has been accepted. root@g1:~# nova list|grep test246 root@g1:~# cinder rename test246.tetaneutral.net-bootdisk test246.tetaneutral.net-bootdisk-old20150605 # or: cinder delete test246.tetaneutral.net-bootdisk root@g1:~# cinder list|grep test246 | 15273654-af28-4ed2-b2df-0ab17ec8dd2f | deleting | test246.tetaneutral.net-bootdisk | 10 | ceph | true | | | b32f6845-35cd-412e-b412-ae142234bc12 | available | test246.tetaneutral.net-bootdisk-tmp | 10 | ceph-ssd | false | | root@g1:~# cinder list|grep test246 | b32f6845-35cd-412e-b412-ae142234bc12 | available | test246.tetaneutral.net-bootdisk-tmp | 10 | ceph-ssd | false | | root@g1:~# cinder rename test246.tetaneutral.net-bootdisk-tmp test246.tetaneutral.net-bootdisk root@g1:~# cinder set-bootable b32f6845-35cd-412e-b412-ae142234bc12 true root@g1:~# /root/tools/boot-vm.sh --ip 89.234.156.246 --flavor 1vcpu-1024ram test246.tetaneutral.net # Note : for ipv6 only add --no-ip-check
Note:
root@g1:~# nova volume-detach test246.tetaneutral.net 0afab4c6-e340-4352-a609-7c43d51b5795 ERROR (Forbidden): Can't detach root device volume (HTTP 403) (Request-ID: req-98a6e8f3-8897-4361-8fd7-6f10484d51b9)
see https://bugs.launchpad.net/nova/+bug/1396965 and https://ask.openstack.org/en/question/53732/detaching-root-device-volume-of-an-instance/
Migration de VM si le host est UP¶
$ openstack ttnn evacuate HOST Migration of : - lagrandeourse.tetaneutral.net [g2/active] - pontsjumeaux.tetaneutral.net [g2/active] - log.tetaneutral.net [g2/active] - jabber.tetaneutral.net [g2/active] - vmfatal.tetaneutral.net [g2/active] - zoe.tetaneutral.net [g2/active] - pstat.tetaneutral.net [g2/active] - jenipapo.tetaneutral.net [g2/active] - tetalab.tetaneutral.net [g2/active] - gllm.tetaneutral.net [g2/verify_resize] - hybridlab.tetaneutral.net [g2/active] - winterfell.tetaneutral.net [g2/active] - pano.tetaneutral.net [g2/active] - ns2.tetaneutral.net [g2/active] - nokods.tetaneutral.net [g2/active] - puppet.tetaneutral.net [g2/active] Continue (Y/n) ? Y Live migration of lagrandeourse.tetaneutral.net [g2/active]: Complete on g2 and still alive \o/ ...
Vérifier qu'il y a plus aucune VM (en particulier les VM non managé par openstack)
virsh list --all
Migration de VM si le host est DOWN (à vérifier depuis le passage à kilo)¶
HACK pour contourner un bug neutron/nova (icehouse/obsolete)¶
nova attends que le port neutron soit UP sur la nouvelle machine, mais celui-ci reste sur l'ancienne machine DOWN,
reste à savoir si c'est nova qui change mal la conf du port, ou neutron qui ignore le changement.
Du coup pour contourner le problème, un peu de mysql:
Sur la machine "openstack", on change la host de plein de ports (de g6 vers h7 dans l'exemple):
# mysql neutron $ update ml2_port_bindings set host='h7' where host='g6';
Ensuite sur la machine destination, on restart les services pour qu'il voit le changement:
/etc/init.d/neutron-plugin-linuxrouted-agent restart /etc/init.d/neutron-plugin-openvswitch-agent restart
Commande normal pour évacuer une machine DOWN¶
Si une machine est capable de tout reprendre :
# nova host-evacuate --target_host n7 g6 +--------------------------------------+-------------------+---------------+ | Server UUID | Evacuate Accepted | Error Message | +--------------------------------------+-------------------+---------------+ | 0f50c84c-0251-40e8-86aa-aacb81d8ef8c | True | | | 8125c4ae-8cb3-4469-8718-56653342de04 | True | | | 527a46b7-0555-4351-871a-bc13a5436feb | True | | | 0e285b7a-4ea6-4352-86a2-729f1d414c82 | True | | +--------------------------------------+-------------------+---------------+
Attendre ensuite que tous les VMs soit UP niveau openstack
Sinon VM par VM :
nova evacuate VMname HOSTname
Partie normalement inutile maintenant, à vérifier:¶
Dans le cas ou certain sont UP mais ne ping pas, ne pas hésiter à refaire sur la machine destination:
/etc/init.d/neutron-plugin-linuxrouted-agent restart /etc/init.d/neutron-plugin-openvswitch-agent restart
Voir peut être reboot --hard les vms qui on pas marché du premier coup
VM de management (nommé openstack)¶
Live Migration d'un host à l'autre¶
Cela fait tout à notre place niveau kvm/libvirt/ceph
virsh migrate --persistent --undefinesource --live --p2p openstack qemu+ssh://g2:2222/system
Recover depuis une perte de la machine hote:¶
Créé un fichier openstack.xml à partir d'un backup de '/etc/libvirt/qemu/openstack.xml' ou utiliser l'exemple ici: attachment:openstack.xml
Note: il faut surement viré les uuid des interfaces openvswitch qui sont différent suivant le hosts
Puis on recréé la VM
$ virsh create openstack.xml $ virsh start openstack.xml
Operations sur les hotes¶
Reboot¶
nova list --host=n7 # list des VM xxx sur n7 for i in xxx; do nova live-migration $i stri; done # repartir sur plusieurs hosts ps fauxwww|grep kvm # verifier qu'il n'y a plus de VM for i in $(rados lspools) ; do ceph osd pool set $i min_size 1 ; done # diminuer le nombre de copies ceph osd set noout # pour prevenir que les OSD vont revenir /etc/init.d/ceph stop shutdown -h now
Post reboot remettre les min_size a 2, rappatrier les VM.