Cluster with libvirt » Historique » Version 9
Version 8 (Mehdi Abaakouk, 06/06/2020 08:47) → Version 9/22 (Mehdi Abaakouk, 06/06/2020 19:28)
{{>toc}}
h1. Cluster with libvirt
h2. Tooling
<pre>
# cd /root/tools/libvirt/
# ./autovirsh domuuid gizmo.sileht.net
Domain gizmo.sileht.net is on g3
4baace2f-6d7c-4575-8982-bedb6065ab6b
# ./where www.tetaneutral.net
Domain www.tetaneutral.net is on g1
# ./create-vm --help
usage: create-vm --ip IP NAME
--image debian-buster-scsi
--ram 1 # SIZE in GiB
--vcpu 1
--ip <IPV4>
--disk 20 # SIZE in GiB
--on g1 # short name of the host
# ./migrate --help
usage: migrate NAME DEST
</pre>
h2. Fontionnement
Les VM utilisent le mode ethernet de libvirt. En gros libvirt s'attends à trouver un tap tout près pour y accrocher la VM
Just avant le boot de la VM libvirt lance:
<pre> /etc/libvirt/hooks/qemu <VM_NAME> prepare begin</pre>
Et juste après l'arret de la VM libvirt lance:
<pre> /etc/libvirt/hooks/qemu <VM_NAME> release end</pre>
Le script /etc/libvirt/hooks/qemu de ttnn se trouve ici: https://chiliproject.tetaneutral.net/projects/git-tetaneutral-net/repository/puppetmaster/revisions/master/entry/environments/production/manifests/files/openstack/libvirt-hooks-qemu
Ce script va lire les metadatas TTNN de <VM_NAME> (e.g: virsh metadata <VM_NAME> http://tetaneutral.net/)
<pre>
$ virsh metadata ns2.tetaneutral.net http://tetaneutral.net/
<config>
<network mode="routed">
<tap name="tapb0b4a106-d0">89.234.156.248</tap>
<tap name="tapabababab-aa">89.234.156.45</tap>
</network>
</config>
</pre>
Ensuite il va créé le tap et configurer les routes dessus avec les infos des metadata.
h2. Migration from Openstack
* convert-openstack-vm-to-libvirt 3fdad88a-dc5e-45a5-9e13-751178e15690 91.224.148.201
h2. Live migration
<pre
virsh migrate --persistent --undefinesource --live --p2p <VM_NAME> qemu+ssh://XX.tetaneutral.net:2222/system
</pre>
Dans le cas d'une VM migré d'openstack, faire d'abord sur la machine destination:
<pre>mkdir -p /var/lib/nova/instances/<uuid_name></pre>
TODO(sileht): faire le MKDIR avec le hook qemu ou tous les préparer à l'avance
h1. Cluster with libvirt
h2. Tooling
<pre>
# cd /root/tools/libvirt/
# ./autovirsh domuuid gizmo.sileht.net
Domain gizmo.sileht.net is on g3
4baace2f-6d7c-4575-8982-bedb6065ab6b
# ./where www.tetaneutral.net
Domain www.tetaneutral.net is on g1
# ./create-vm --help
usage: create-vm --ip IP NAME
--image debian-buster-scsi
--ram 1 # SIZE in GiB
--vcpu 1
--ip <IPV4>
--disk 20 # SIZE in GiB
--on g1 # short name of the host
# ./migrate --help
usage: migrate NAME DEST
</pre>
h2. Fontionnement
Les VM utilisent le mode ethernet de libvirt. En gros libvirt s'attends à trouver un tap tout près pour y accrocher la VM
Just avant le boot de la VM libvirt lance:
<pre> /etc/libvirt/hooks/qemu <VM_NAME> prepare begin</pre>
Et juste après l'arret de la VM libvirt lance:
<pre> /etc/libvirt/hooks/qemu <VM_NAME> release end</pre>
Le script /etc/libvirt/hooks/qemu de ttnn se trouve ici: https://chiliproject.tetaneutral.net/projects/git-tetaneutral-net/repository/puppetmaster/revisions/master/entry/environments/production/manifests/files/openstack/libvirt-hooks-qemu
Ce script va lire les metadatas TTNN de <VM_NAME> (e.g: virsh metadata <VM_NAME> http://tetaneutral.net/)
<pre>
$ virsh metadata ns2.tetaneutral.net http://tetaneutral.net/
<config>
<network mode="routed">
<tap name="tapb0b4a106-d0">89.234.156.248</tap>
<tap name="tapabababab-aa">89.234.156.45</tap>
</network>
</config>
</pre>
Ensuite il va créé le tap et configurer les routes dessus avec les infos des metadata.
h2. Migration from Openstack
* convert-openstack-vm-to-libvirt 3fdad88a-dc5e-45a5-9e13-751178e15690 91.224.148.201
h2. Live migration
<pre
virsh migrate --persistent --undefinesource --live --p2p <VM_NAME> qemu+ssh://XX.tetaneutral.net:2222/system
</pre>
Dans le cas d'une VM migré d'openstack, faire d'abord sur la machine destination:
<pre>mkdir -p /var/lib/nova/instances/<uuid_name></pre>
TODO(sileht): faire le MKDIR avec le hook qemu ou tous les préparer à l'avance