User Tools

Site Tools


virtualisation:kvm

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
virtualisation:kvm [2018/07/04 15:50]
Luc Nieland
virtualisation:kvm [2020/02/13 17:05] (current)
Luc Nieland CentOS-8: bond + vlan + bridge
Line 196: Line 196:
  
 =====Distribution:​ Ubuntu 18.04 LTS ===== =====Distribution:​ Ubuntu 18.04 LTS =====
 +
 +Install the networking software:
 +
 +  apt-get install ​ bridge-utils vlan
  
  
 ===network config=== ===network config===
-Remove all .yaml files in /​etc/​netplan/​ (or rename them to *.disabled+This uses netplan. 
 + 
 +Remove all .yaml files in /​etc/​netplan/​ (or rename them to *.disabled
 + 
 +==One network, one bridge== 
 +A simple configuration for a simple network. The server has one bridge, with a static IP on the bridge. 
 + 
 +Add to  /​etc/​netplan/​10-netconfig-bridge-static.yaml
  
-Add to  /​etc/​netplan/​10-netconfig-bridge-per-vlan.yaml 
 <​code>​ <​code>​
 network: network:
Line 210: Line 220:
       dhcp4: no       dhcp4: no
   bridges:   bridges:
-    ​br0099:+    ​br0:
       interfaces:       interfaces:
-        - vlan0099+        - eno1 
 +      addresses:​ 
 +        - 192.168.2.203/​24 
 +      gateway4: 192.168.2.1
       parameters:       parameters:
         stp: false         stp: false
         forward-delay:​ 0         forward-delay:​ 0
 +      nameservers:​
 +        addresses:
 +          - 194.109.6.66
 +          - 194.109.9.99
 +</​code>​
 +
 +==One bridge per VLAN==
 +A more complex setup. The system has one physical NIC. This is connected to a switch. This port is in trunc-mode, and has four VLANs configured on this port.
 +
 +On the server, the four VLANs are split, and for every VLAN a bridge is created. A static IP number is configured on one bridge, to access the server.
 +
 +
 +Remove alle files in /​etc/​netplan/​ and create the file /​etc/​netplan/​10-netconfig-bridge-per-vlan.yaml with the following:
 +
 +<​code>​
 +network:
 +  version: 2
 +  renderer: networkd
 +  ethernets:
 +    eno1:
       dhcp4: no       dhcp4: no
-    br0102:+      dhcp6: no 
 +  bridges: 
 +    br0010:
       interfaces:       interfaces:
-        - vlan0102+        - vlan0010
       parameters:       parameters:
         stp: false         stp: false
         forward-delay:​ 0         forward-delay:​ 0
       addresses:       addresses:
-        - 192.168.2.203/24 +        - 192.168.10.42/24 
-      gateway4: 192.168.2.1+      gateway4: 192.168.10.1
       nameservers:​       nameservers:​
         addresses:         addresses:
-          - 194.109.6.66 +          - 1.1.1.1 
-          - 194.109.9.99 +          - 8.8.8.8 
-    ​br0103:+    ​br0011: 
 +      interfaces:​ 
 +        - vlan0011 
 +      parameters:​ 
 +        stp: false 
 +        forward-delay:​ 0 
 +      dhcp4: no 
 +      dhcp6: no 
 +    br0012:
       interfaces:       interfaces:
-        - vlan0103+        - vlan0012
       parameters:       parameters:
         stp: false         stp: false
         forward-delay:​ 0         forward-delay:​ 0
       dhcp4: no       dhcp4: no
-    br1001:+      dhcp6: no 
 +    br0013:
       interfaces:       interfaces:
-        - vlan1001+        - vlan0013
       parameters:       parameters:
         stp: false         stp: false
         forward-delay:​ 0         forward-delay:​ 0
       dhcp4: no       dhcp4: no
 +      dhcp6: no
   vlans:   vlans:
-    ​vlan0099:+    ​vlan0010:
       accept-ra: no       accept-ra: no
-      id: 99+      id: 10
       link: eno1       link: eno1
-    ​vlan0102:+    ​vlan0011:
       accept-ra: no       accept-ra: no
-      id: 102+      id: 11
       link: eno1       link: eno1
-    ​vlan0103:+    ​vlan0012:
       accept-ra: no       accept-ra: no
-      id: 103+      id: 12
       link: eno1       link: eno1
-    ​vlan1001:+    ​vlan013:
       accept-ra: no       accept-ra: no
-      id: 1001+      id: 13
       link: eno1       link: eno1
 </​code>​ </​code>​
  
  
-=====Distribution:​ CentOS ​6.0 =====+And add the following file: /​etc/​systemd/​network/​10-netplan-brUp.network 
 + 
 +<​code>​ 
 +[Match] 
 +Name=br00* 
 + 
 +[Network] 
 +LinkLocalAddressing=no 
 +ConfigureWithoutCarrier=true  
 +</​code>​ 
 + 
 +Explanation. This is to bring up the anonymous bridges automatically after boot (the bridges which have no ip-address configured on it). Due to a bug in the combination of netplan and networkd, anonymous bridges will have operational status '​off'​ after boot. 
 + 
 +This can be checked with: 
 + 
 +  networkctl list 
 + 
 +This can be solved manually with: 
 + 
 +  ip link set dev br0011 up 
 +  ip link set dev br0012 up 
 +  ip link set dev br0013 up 
 + 
 +for the above netplan yaml example. 
 + 
 + 
 +===KVM software=== 
 +Install the KVM-serversoftware:​ 
 + 
 +  apt-get install ​ qemu-kvm libvirt-daemon-system virt-top 
 + 
 + 
 +And the cli administration tools: 
 + 
 +  apt-get install libvirt-clients 
 + 
 + 
 + 
 +=====Distribution:​ CentOS ===== 
 ===preparation=== ===preparation===
-Install a minimal CentOS ​6.0 system with a static IP-number.+Install a minimal CentOS system with a static IP-number.
  
 +
 +
 +
 +===network config CentOS-8===
 +
 +With nmcli
 +
 +Add to /​etc/​sysconfig/​
 +
 +Bonding:
 +<​code>​
 + nmcli con add type bond con-name bond0 ifname bond0  autoconnect yes \
 +         ​ipv4.method disabled ​ \
 +         ​ipv6.method ignore
 + nmcli con add type ethernet ifname eno1 con-name bond0-sl1 ​   master bond0
 + nmcli con add type ethernet ifname eno2 con-name bond0-sl2 ​   master bond0
 +<​code>​
 +
 +
 +Split the trunc-datastream to VLAN'​s:​
 +<​code>​
 + nmcli con add type vlan ifname vlan20 con-name vlan20 vlan.id 20 \
 +       ​vlan.parent bond0 \
 +       ​ipv4.method disabled \
 +       ​ipv6.method ignore
 + # repeat per VLAN
 +<​code>​
 +
 +
 +Create a bridge per VLAN:
 +<​code>​
 +BR_NAME="​br20"​
 +BR_INT="​vlan20"​
 +SUBNET_IP="​192.168.103.32/​24"​
 +GW="​192.168.103.1"​
 +DNS1="​192.168.102.144"​
 +DNS2="​192.168.102.146"​
 +nmcli connection add    type bridge ​ con-name ${BR_NAME} ifname ${BR_NAME} ​ autoconnect yes
 + nmcli connection modify ${BR_NAME} ipv4.method manual ​  ​ipv4.addresses ${SUBNET_IP} ​
 + nmcli connection modify ${BR_NAME} ipv4.gateway ${GW}
 + nmcli connection modify ${BR_NAME} ipv4.dns ${DNS1} +ipv4.dns ${DNS2}
 + nmcli connection up ${BR_NAME}
 +nmcli connection add type bridge-slave ​ con-name ${BR_INT} ifname ${BR_INT} master ${BR_NAME} ​   autoconnect yes
 + nmcli connection up ifname ${BR_INT}
 +#
 +ip r add default ​ via 192.168.103.1
 +#
 +<​code>​
 +
 +===hypervisor kvm===
 Install the software: Install the software:
  
   yum install kvm virt-manager libvirt   yum install kvm virt-manager libvirt
 +
 +
  
  
Line 561: Line 697:
  
  
 +
 +
 +
 +
 +======Migration of VMs to another host ======
 +Instructions how to migrate VMs to another hypervisor-host.
 +
 +====Offline====
 +
 +Create a destination KVM-hypervisor system, including bridges on the required networks and VLANs. Try to use the same names for bridges, filesystems,​ logical-volumes. Else use "virsh edit" to make the modifications befor starting the VM on the destination hypervisor.
 +
 +
 +===On the source-hypervisor===
 +
 +create a definition-file:​
 +  virsh list --all
 +  virsh dumpxml --security-info ​ vpstest2 ​ >  /​var/​lib/​libvirt/​images/​vpstest2.xml
 +  virsh shutdown vpstest2
 +  virsh destroy ​ vpstest2 ​  # if needed
 +
 +
 +===On the destination-hypervisor===
 +
 +Create the required logical-volumes,​ and symlinks:
 +  lvcreate -L 4G -n vpstest2 vg0
 +  ln -s /​dev/​mapper/​vg0-vpstest2 /​var/​lib/​libvirt/​images/​vpstest2.img
 +
 +And get the raw-logical-volume with a dd piped through ssh:
 +  ssh root@sourcehyp "dd if=/​dev/​mapper/​vg0-vpstest2"​ | dd of=/​dev/​mapper/​vg0-vpstest2
 +
 +And get the config-definition-file:​
 +  scp root@sourcehyp:/​var/​lib/​libvirt/​images/​vpstest2.xml ​ /​var/​lib/​libvirt/​images/​vpstest2.xml
 +
 +And create the VM:
 +  virsh define /​var/​lib/​libvirt/​images/​vpstest2.xml
 +
 +And start the VM:
 +  virsh start vpstest2
 +
 +
 +
 +  ​
  
  
  
virtualisation/kvm.1530712245.txt.gz · Last modified: 2018/07/04 15:50 by Luc Nieland