从 NSX Advanced Load Balancer 版本 22.1.1 开始,支持安装 Linux KVM 以对 virtio-net 数据网卡和从主机上的物理接口创建的 macvtap 接口(桥接模式)提供 DPDK 支持。此 macvtap 接口将用作客户机虚拟机中的接口。
有关 macvtap 接口的更多信息,请参阅 MacVTap。
必备条件
硬件
要运行 KVM,请检查您的 CPU 是否支持硬件虚拟化。您需要支持硬件虚拟化的处理器。Intel 和 AMD 都为其处理器开发了扩展,分别为 Intel VT-x 和 AMD-V。要确认处理器是否支持其中任一扩展,可以使用以下命令查看输出:
egrep -c '(vmx|svm)' /proc/cpuinfo
如果值为零,则表示 CPU 不支持硬件虚拟化。
如果值为 1 或更高,则表示 CPU 支持硬件虚拟化。但是,您需要确保在 BIOS 中启用虚拟化。
软件安装
Ubuntu 发行版
有关 KVM 安装和必备软件包安装的更多信息,请参阅 KVM/安装。
RHEL/CentOS 发行版
有关在现有 Red Hat Enterprise Linux 系统上安装 KVM 软件包以及必备软件包安装的更多信息,请参阅 KVM 与 Red Hat Enterprise Linux 新安装。
软件 [已经过测试和认证]
Ubuntu 发行版
Ubuntu ID
版本
DISTRIB_ID
Ubuntu
DISTRIB_RELEASE
18.04
DISTRIB_CODENAME
Bionic
DISTRIB_DESCRIPTION
Ubuntu 18.04 LTS
DISTRIB_ID
Ubuntu
操作系统内核版本
4.15.0-20-generic
libvirt-bin
libvirtd (libvirt) 4.0.0
qemu-kvm
QEMU 仿真器版本 2.11.1
genisomage
genisoimage 1.1.11 (Linux)
RHEL/CentOS 发行版
RHEL/CentOS ID
版本
CentOS Linux 版本
7.9 (Maipo)
操作系统内核版本
5.4.17-2136.305.5.4.el7uek.x86_64
libvirt-bin
libvirtd (libvirt) 4.5.0
qemu-kvm
QEMU 仿真器版本 2.0.0
genisomage
genisoimage 1.1.11 (Linux)
安装服务引擎和控制器虚拟机
必备条件:确保将 NSX Advanced Load Balancer se.qcow2 和 controller.qcow2 映像复制到主机的 /var/lib/libvirt/images/ 目录。如下面的“部署服务引擎”一节中所述,se.qcow2 映像在启动后可以从控制器 UI 中获取。
脚本运行:在主机上运行 kvm-dpdk-virt-install.sh 中的安装脚本,以安装控制器和 SE 虚拟机。
注:您需要先创建控制器虚拟机,然后再创建 SE 虚拟机。
部署控制器
在主机上运行上述安装脚本并选择 Create AVI Controller VM
选项,以部署控制器虚拟机。
以下是建议在创建控制器虚拟机时用于安装脚本的一些变量:
NSX Advanced Load Balancer Controller 管理 IP
NSX Advanced Load Balancer Controller 管理 IP 掩码
NSX Advanced Load Balancer Controller 默认网关
这些变量的值来自于主机管理接口配置。
- 控制器初始设置
-
以下是导航到控制器 IP 地址以执行初始设置的步骤:
配置管理员密码
设置 DNS 信息
选择“无 Orchestrator”
部署服务引擎
在控制器虚拟机启动后,可通过以下步骤上载 SE 映像以安装服务引擎:
在控制器上,导航到
。单击 Default-Cloud 行中的下载图标,然后选择 Qcow2。
将 se.qcow2 上载到主机的 /var/lib/libvirt/images/ 目录。
在主机上运行上述安装脚本并选择 Create AVI SE VM
选项,以部署 SE 虚拟机。
以下是建议在创建服务引擎虚拟机时用于安装脚本的一些变量:
NSX Advanced Load Balancer SE 管理 IP
NSX Advanced Load Balancer Controller 管理 IP 掩码
NSX Advanced Load Balancer SE 默认网关
这些变量的值来自于主机管理接口配置。
对于 SE 虚拟机创建,建议每个 macvtap 接口配置 4 个队列,以及配置 4 个或更多虚拟 CPU,以获得最佳吞吐量性能。
可按以下方式指定绑定接口序列:
- Bond-ifs 序列
-
1,2 3,4。这表示接口 1 和 2 处于绑定状态,接口 3 和 4 处于绑定状态(请注意 1,2 和 3,4 之间的空格)。
- Bond-ifs 序列
-
1,2,3,4。这表示接口 1、2、3 和 4 处于绑定状态。
可在控制器 UI 上导航到
,以验证 SE 是否能够连接到控制器(这可能需要几分钟的时间)。SE 虚拟机安装输出示例
在主机上
主机管理接口(从中创建管理 macvtap 接口)。
eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 0c:c4:7a:b4:15:b4 brd ff:ff:ff:ff:ff:ff inet 10.217.144.19/22 brd 10.217.147.255 scope global eno1
主机物理接口(从中创建数据 macvtap 接口)。
ens1f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 0c:c4:7a:bb:96:ea brd ff:ff:ff:ff:ff:ff inet 100.64.50.56/24 brd 100.64.50.255 scope global dynamic ens1f0 ens1f1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 0c:c4:7a:bb:96:eb brd ff:ff:ff:ff:ff:ff inet 100.64.67.55/24 brd 100.64.67.255 scope global dynamic ens1f1
主机上显示的 macvtap 接口(运行安装脚本后)。
macvtap0@eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 500 link/ether 52:54:00:f4:ed:9f brd ff:ff:ff:ff:ff:ff macvtap1@ens1f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 500 link/ether 52:54:00:4f:3a:2d brd ff:ff:ff:ff:ff:ff macvtap2@ens1f1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 500 link/ether 52:54:00:68:38:ef brd ff:ff:ff:ff:ff:ff
在 SE 虚拟机上(运行安装脚本后)
SE 管理接口
eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 52:54:00:f4:ed:9f brd ff:ff:ff:ff:ff:ff inet 10.217.144.251/22 brd 10.217.147.255 scope global eth0
SE 数据网卡接口(如分配 IP 地址后命名空间中所示)
root@Avi-Service-Engine:/home/admin# ip netns exec avi_ns1 bash avi_eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 52:54:00:68:38:ef brd ff:ff:ff:ff:ff:ff inet 100.64.67.22/24 brd 100.64.67.255 scope global dynamic avi_eth2 avi_eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 52:54:00:4f:3a:2d brd ff:ff:ff:ff:ff:ff inet 100.64.50.41/24 brd 100.64.50.255 scope global dynamic avi_eth0
在主机重新引导后
下面列出了每次重新引导后执行的步骤。
在重新引导后,所有虚拟机将自动处于 STOP 状态。
可以使用 virsh list 输出检查所有虚拟机名称。
使用
virsh start <VM-name>
命令启动所有虚拟机。
销毁控制器和服务引擎
可以使用上述脚本清除虚拟机及其对应的映像。
注:如果主机的磁盘空间将要用完,这可能是由于创建虚拟机期间在 /var/lib/libvirt/images/ 中使用了 N 个 qcow2。可按照上述部分中所述删除相应虚拟机,以清除所有未使用的映像。
在销毁 SE 虚拟机后,请确保手动清理(强制删除)控制器 GUI 中存在的失效服务引擎条目。