Projet

Général

Profil

Cluster with libvirt » Historique » Version 9

Mehdi Abaakouk, 06/06/2020 19:28

1 1 Mehdi Abaakouk
{{>toc}}
2 1 Mehdi Abaakouk
3 1 Mehdi Abaakouk
h1. Cluster with libvirt
4 1 Mehdi Abaakouk
5 9 Mehdi Abaakouk
6 9 Mehdi Abaakouk
7 9 Mehdi Abaakouk
8 9 Mehdi Abaakouk
h2. Tooling
9 9 Mehdi Abaakouk
10 9 Mehdi Abaakouk
<pre>
11 9 Mehdi Abaakouk
12 9 Mehdi Abaakouk
# cd /root/tools/libvirt/
13 9 Mehdi Abaakouk
14 9 Mehdi Abaakouk
# ./autovirsh domuuid gizmo.sileht.net
15 9 Mehdi Abaakouk
Domain gizmo.sileht.net is on g3
16 9 Mehdi Abaakouk
4baace2f-6d7c-4575-8982-bedb6065ab6b
17 9 Mehdi Abaakouk
18 9 Mehdi Abaakouk
# ./where www.tetaneutral.net
19 9 Mehdi Abaakouk
Domain www.tetaneutral.net is on g1
20 9 Mehdi Abaakouk
21 9 Mehdi Abaakouk
# ./create-vm --help
22 9 Mehdi Abaakouk
usage: create-vm --ip IP NAME
23 9 Mehdi Abaakouk
       --image debian-buster-scsi
24 9 Mehdi Abaakouk
       --ram 1     # SIZE in GiB
25 9 Mehdi Abaakouk
       --vcpu 1
26 9 Mehdi Abaakouk
       --ip <IPV4>
27 9 Mehdi Abaakouk
       --disk 20   # SIZE in GiB
28 9 Mehdi Abaakouk
       --on g1       # short name of the host
29 9 Mehdi Abaakouk
30 9 Mehdi Abaakouk
# ./migrate --help
31 9 Mehdi Abaakouk
usage: migrate NAME DEST
32 9 Mehdi Abaakouk
33 9 Mehdi Abaakouk
34 9 Mehdi Abaakouk
</pre>
35 9 Mehdi Abaakouk
36 1 Mehdi Abaakouk
h2. Fontionnement
37 1 Mehdi Abaakouk
38 1 Mehdi Abaakouk
Les VM utilisent le mode ethernet de libvirt. En gros libvirt s'attends à trouver un tap tout près pour y accrocher la VM
39 1 Mehdi Abaakouk
40 1 Mehdi Abaakouk
Just avant le boot de la VM libvirt lance:
41 1 Mehdi Abaakouk
42 1 Mehdi Abaakouk
<pre> /etc/libvirt/hooks/qemu <VM_NAME> prepare begin</pre>
43 1 Mehdi Abaakouk
44 1 Mehdi Abaakouk
Et juste après l'arret de la VM libvirt lance:
45 1 Mehdi Abaakouk
46 1 Mehdi Abaakouk
<pre> /etc/libvirt/hooks/qemu <VM_NAME> release end</pre>
47 1 Mehdi Abaakouk
48 1 Mehdi Abaakouk
49 1 Mehdi Abaakouk
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
50 2 Mehdi Abaakouk
51 2 Mehdi Abaakouk
52 2 Mehdi Abaakouk
Ce script va lire les metadatas TTNN de <VM_NAME> (e.g: virsh metadata <VM_NAME> http://tetaneutral.net/) 
53 2 Mehdi Abaakouk
54 2 Mehdi Abaakouk
<pre>
55 2 Mehdi Abaakouk
$ virsh metadata ns2.tetaneutral.net http://tetaneutral.net/
56 2 Mehdi Abaakouk
<config>
57 7 Mehdi Abaakouk
  <network mode="routed">
58 7 Mehdi Abaakouk
    <tap name="tapb0b4a106-d0">89.234.156.248</tap>
59 7 Mehdi Abaakouk
    <tap name="tapabababab-aa">89.234.156.45</tap>
60 7 Mehdi Abaakouk
  </network>
61 2 Mehdi Abaakouk
</config>
62 2 Mehdi Abaakouk
</pre>
63 2 Mehdi Abaakouk
64 2 Mehdi Abaakouk
Ensuite il va créé le tap et configurer les routes dessus avec les infos des metadata.
65 1 Mehdi Abaakouk
66 3 Mehdi Abaakouk
h2. Migration from Openstack
67 1 Mehdi Abaakouk
68 6 Mehdi Abaakouk
* convert-openstack-vm-to-libvirt 3fdad88a-dc5e-45a5-9e13-751178e15690 91.224.148.201
69 8 Mehdi Abaakouk
70 8 Mehdi Abaakouk
h2. Live migration 
71 8 Mehdi Abaakouk
72 8 Mehdi Abaakouk
73 8 Mehdi Abaakouk
<pre
74 8 Mehdi Abaakouk
virsh migrate --persistent --undefinesource --live --p2p <VM_NAME> qemu+ssh://XX.tetaneutral.net:2222/system
75 8 Mehdi Abaakouk
</pre>
76 8 Mehdi Abaakouk
77 8 Mehdi Abaakouk
Dans le cas d'une VM migré d'openstack, faire d'abord sur la machine destination:
78 8 Mehdi Abaakouk
 
79 8 Mehdi Abaakouk
<pre>mkdir -p /var/lib/nova/instances/<uuid_name></pre>
80 8 Mehdi Abaakouk
81 8 Mehdi Abaakouk
TODO(sileht): faire le MKDIR avec le hook qemu ou tous les préparer à l'avance