V tomto oddílu je popsán způsob instalace qcow brány Brána SD-WAN Gateway v prostředí KVM.
Posouzení před instalací
KVM nabízí několik způsobů, jak virtuálním počítačům zajistit síťové připojení. Před konfigurací virtuálního počítače je třeba zřídit síť v libvirt. V KVM existuje několik způsobů konfigurace sítě. Chcete-li zobrazit úplnou konfiguraci možností konfigurace sítí na libvirt, navštivte tento odkaz:
https://libvirt.org/formatnetwork.html
V úplném seznamu možností doporučujeme pro VMware použít následující režimy:
- SR-IOV (tento režim je vyžadován, aby bráně Brána SD-WAN Gateway zajistil maximální propustnost, jakou určuje VMware)
- Přemostění OpenVSwitch
Pokud se rozhodnete použít režim SR-IOV, povolte SR-IOV v prostředí KVM. Informace o povolení funkce SR-IOV na KVM najdete v části Aktivace SR-IOV na KVM.
Postup instalace brány Brána SD-WAN Gateway v prostředí KVM
- Zkopírujte QCOW a soubory cloud-init vytvořené podle postupu v oddílu Vytvoření cloud-init do nového prázdného adresáře.
- Vytvořte síťová rozhraní, která budete se zařízením používat.
Použití SR-IOV (Using SR-IOV): Následuje vzorová šablona síťového rozhraní specifická pro síťové karty Intel X710/XL710 využívající funkci SR-IOV.
<interface type='hostdev' managed='yes'> <mac address='52:54:00:79:19:3d'/> <driver name='vfio'/> <source> <address type='pci' domain='0x0000' bus='0x83' slot='0x0a' function='0x0'/> </source> <model type='virtio'/> </interface>
Použití OpenVSwitch (Using OpenVSwitch): Následují vzorové šablony síťového rozhraní s použitím funkce OpenVSwitch.git ./vcg/templates/KVM_NETWORKING_SAMPLES/template_outside_openvswitch.xml
<?xml version="1.0" encoding="UTF-8"?> <network> <name>public_interface</name> <!--This is the network name--> <model type="virtio" /> <forward mode="bridge" /> <bridge name="publicinterface" /> <virtualport type="openvswitch" /> <vlan trunk="yes"> <tag id="50" /> <!--Define all the VLANS for this Bridge --> <tag id="51" /> <!--Define all the VLANS for this Bridge --> </vlan> </network>
Vytvořit síť pro
inside_interface
:git ./vcg/templates/KVM_NETWORKING_SAMPLES/template_inside_openvswitch.xml
<network> <name>inside_interface</name> <!--This is the network name--> <model type='virtio'/> <forward mode="bridge"/> <bridge name="insideinterface"/> <virtualport type='openvswitch'></virtualport> <vlan trunk='yes'></vlan> <tag id='200'/> <!—Define all the VLANS for this Bridge --> <tag id='201'/> <!—Define all the VLANS for this Bridge --> <tag id='202'/> <!—Define all the VLANS for this Bridge --> </network>
Pokud se rozhodnete použít režim OpenVSwitch, musíte ještě před spuštěním virtuálního počítače ověřit, zda jsou základní sítě vytvořeny a aktivní.Poznámka: Tento krok ověřování se netýká režimu SR-IOV, protože při něm nevytváříte žádné sítě předtím, než je virtuální počítač spuštěn. - Upravte virtuální počítač v souboru XML. Existuje několik způsobů, jak v KVM vytvořit virtuální počítač. Virtuální počítač můžete definovat v souboru XML a vytvořit ho pomocí sady libvirt, ze vzorové šablony XML s virtuálním počítačem specifické pro režim OpenVSwitch a SR-IOV.
vi my_vm.xml
Následuje vzorová šablona virtuálního počítače, která používá rozhraní OpenVSwitch. Tuto šablonu můžete použít k provádění úprav, kdykoli je to zapotřebí.<?xml version="1.0" encoding="UTF-8"?> <domain type="kvm"> <name>#domain_name#</name> <memory unit="KiB">8388608</memory> <currentMemory unit="KiB">8388608</currentMemory> <vcpu>8</vcpu> <cputune> <vcpupin vcpu="0" cpuset="0" /> <vcpupin vcpu="1" cpuset="1" /> <vcpupin vcpu="2" cpuset="2" /> <vcpupin vcpu="3" cpuset="3" /> <vcpupin vcpu="4" cpuset="4" /> <vcpupin vcpu="5" cpuset="5" /> <vcpupin vcpu="6" cpuset="6" /> <vcpupin vcpu="7" cpuset="7" /> </cputune> <resource> <partition>/machine</partition> </resource> <os> <type>hvm</type> </os> <features> <acpi /> <apic /> <pae /> </features> <cpu mode="host-passthrough" /> <clock offset="utc" /> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>restart</on_crash> <devices> <emulator>/usr/bin/kvm-spice</emulator> <disk type="file" device="disk"> <driver name="qemu" type="qcow2" /> <source file="#folder#/#qcow_root#" /> <target dev="hda" bus="ide" /> <alias name="ide0-0-0" /> <address type="drive" controller="0" bus="0" target="0" unit="0" /> </disk> <disk type="file" device="cdrom"> <driver name="qemu" type="raw" /> <source file="#folder#/#Cloud_ INIT_ ISO#" /> <target dev="sdb" bus="sata" /> <readonly /> <alias name="sata1-0-0" /> <address type="drive" controller="1" bus="0" target="0" unit="0" /> </disk> <controller type="usb" index="0"> <alias name="usb0" /> <address type="pci" domain="0x0000" bus="0x00" slot="0x01" function="0x2" /> </controller> <controller type="pci" index="0" model="pci-root"> <alias name="pci.0" /> </controller> <controller type="ide" index="0"> <alias name="ide0" /> <address type="pci" domain="0x0000" bus="0x00" slot="0x01" function="0x1" /> </controller> <interface type="network"> <source network="public_interface" /> <vlan> <tag id="#public_vlan#" /> </vlan> <alias name="hostdev1" /> <address type="pci" domain="0x0000" bus="0x00" slot="0x11" function="0x0" /> </interface> <interface type="network"> <source network="inside_interface" /> <alias name="hostdev2" /> <address type="pci" domain="0x0000" bus="0x00" slot="0x12" function="0x0" /> </interface> <serial type="pty"> <source path="/dev/pts/3" /> <target port="0" /> <alias name="serial0" /> </serial> <console type="pty" tty="/dev/pts/3"> <source path="/dev/pts/3" /> <target type="serial" port="0" /> <alias name="serial0" /> </console> <memballoon model="none" /> </devices> <seclabel type="none" /> </domain>
Následuje vzorová šablona virtuálního počítače, která používá rozhraní SR-IOV. Tuto šablonu můžete použít k provádění úprav, kdykoli je to zapotřebí.<?xml version="1.0" encoding="UTF-8"?> <domain type="kvm"> <name>#domain_name#</name> <memory unit="KiB">8388608</memory> <currentMemory unit="KiB">8388608</currentMemory> <vcpu>8</vcpu> <cputune> <vcpupin vcpu="0" cpuset="0" /> <vcpupin vcpu="1" cpuset="1" /> <vcpupin vcpu="2" cpuset="2" /> <vcpupin vcpu="3" cpuset="3" /> <vcpupin vcpu="4" cpuset="4" /> <vcpupin vcpu="5" cpuset="5" /> <vcpupin vcpu="6" cpuset="6" /> <vcpupin vcpu="7" cpuset="7" /> </cputune> <resource> <partition>/machine</partition> </resource> <os> <type>hvm</type> </os> <features> <acpi /> <apic /> <pae /> </features> <cpu mode="host-passthrough" /> <clock offset="utc" /> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>restart</on_crash> <devices> <emulator>/usr/bin/kvm-spice</emulator> <disk type="file" device="disk"> <driver name="qemu" type="qcow2" /> <source file="#folder#/#qcow_root#" /> <target dev="hda" bus="ide" /> <alias name="ide0-0-0" /> <address type="drive" controller="0" bus="0" target="0" unit="0" /> </disk> <disk type="file" device="cdrom"> <driver name="qemu" type="raw" /> <source file="#folder#/#Cloud_ INIT_ ISO#" /> <target dev="sdb" bus="sata" /> <readonly /> <alias name="sata1-0-0" /> <address type="drive" controller="1" bus="0" target="0" unit="0" /> </disk> <controller type="usb" index="0"> <alias name="usb0" /> <address type="pci" domain="0x0000" bus="0x00" slot="0x01" function="0x2" /> </controller> <controller type="pci" index="0" model="pci-root"> <alias name="pci.0" /> </controller> <controller type="ide" index="0"> <alias name="ide0" /> <address type="pci" domain="0x0000" bus="0x00" slot="0x01" function="0x1" /> </controller> <interface type='hostdev' managed='yes'> <mac address='52:54:00:79:19:3d'/> <driver name='vfio'/> <source> <address type='pci' domain='0x0000' bus='0x83' slot='0x0a' function='0x0'/> </source> <model type='virtio'/> </interface> <interface type='hostdev' managed='yes'> <mac address='52:54:00:74:69:4d'/> <driver name='vfio'/> <source> <address type='pci' domain='0x0000' bus='0x83' slot='0x0a' function='0x1'/> </source> <model type='virtio'/> </interface> <serial type="pty"> <source path="/dev/pts/3" /> <target port="0" /> <alias name="serial0" /> </serial> <console type="pty" tty="/dev/pts/3"> <source path="/dev/pts/3" /> <target type="serial" port="0" /> <alias name="serial0" /> </console> <memballoon model="none" /> </devices> <seclabel type="none" /> </domain>
- Virtuální počítač spusťte provedením následujících kroků:
- Ujistěte se, že se ve vašem adresáři nachází následující tři soubory uvedené na tomto vzorovém snímku obrazovky:
- qcow – vcg-root
- cloud-init – vcg-test.iso
- Soubor XML domény test_vcg.xml (kde test_vcg představuje název domény), který definuje virtuální počítač
- Definujte virtuální počítač.
velocloud@KVMperf2:/tmp/VeloCloudGateway$ virsh define test_vcg.xml Domain test_vcg defined from test_vcg.xml
- Nastavte virtuální počítač na autostart.
velocloud@KVMperf2:/tmp/VeloCloudGateway$ virsh autostart test_vcg
- Spusťte virtuální počítač.
velocloud@KVMperf2:/tmp/VeloCloudGateway$ virsh start test_vcg
- Ujistěte se, že se ve vašem adresáři nachází následující tři soubory uvedené na tomto vzorovém snímku obrazovky:
- Pokud používáte režim SR-IOV, po spuštění virtuálního počítače upravte následující parametry použitých virtuálních funkcí:
- Vypněte kontrolu spoofingu.
ip link set eth1 vf 0 spoofchk off
- Aktivujte důvěryhodný režim.
ip link set dev eth1 vf 0 trust on
- Podle potřeby nastavte síť VLAN.
ip link set eth1 vf 0 vlan 3500
Poznámka: Krok konfigurace virtuálních funkcí se v případě režimu OpenVSwitch (OVS) nepoužívá - Vypněte kontrolu spoofingu.
- Virtuální počítač otevřete z konzoly.
virsh list Id Name State ---------------------------------------------------- 25 test_vcg running velocloud@KVMperf2$ virsh console 25 Connected to domain test_vcg Escape character is ^]
Zvláštnosti pro hostitele KVM (Special Consideration for KVM Host)
- Deaktivujte GRO (Generic Receive Offload) na fyzických rozhraních (aby nedošlo ke zbytečné refragmentaci v Brána SD-WAN Gateway).
ethtool –K <interface> gro off tx off
- Deaktivujte C-stavy procesoru (stavy napájení ovlivňují výkon v reálném čase). Obvykle to lze provést v rámci možností spouštění jádra přidáním
processor.max_cstate=1
nebo pouhou deaktivací v systému BIOS. -
K nasazení produkce musí být CPU připnuta k instanci. Oversubskripce jader by měla být zakázána.