17.6. 在网络绑定上配置网桥,以将虚拟机与网络连接
网桥使用与主机相同的网络连接虚拟机。如果要将一个主机上的虚拟机连接到另一主机或另一个主机上的虚拟机,桥接会在它们之间建立通信。但是,网桥不提供故障转移机制。要处理通信中的故障,网络绑定会在网络接口失败时处理通信。要保持容错和冗余,active-backup
绑定机制决定在绑定中只有一个端口处于活跃状态,且不需要任何交换机配置。如果活动端口失败,则备用端口变为活动状态,以在网络中配置的虚拟机之间的保持通信。
17.6.1. 使用 nmcli 在网络绑定上配置网络接口 复制链接链接已复制到粘贴板!
要在命令行上配置网络绑定,请使用 nmcli
工具。
先决条件
-
在服务器上安装了两个或多个物理设备,且没有在任何
NetworkManager
连接配置文件中配置它们。
流程
创建绑定接口:
nmcli connection add type bond con-name bond0 ifname bond0 bond.options "mode=active-backup"
# nmcli connection add type bond con-name bond0 ifname bond0 bond.options "mode=active-backup"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这个命令会创建一个使用
active-backup
模式、名为bond0
的绑定。向绑定分配以太网接口:
nmcli connection add type ethernet slave-type bond con-name bond0-port1 ifname enp7s0 master bond0 nmcli connection add type ethernet slave-type bond con-name bond0-port2 ifname enp8s0 master bond0
# nmcli connection add type ethernet slave-type bond con-name bond0-port1 ifname enp7s0 master bond0 # nmcli connection add type ethernet slave-type bond con-name bond0-port2 ifname enp8s0 master bond0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这些命令为
enp7s0
和enp8s0
创建配置文件,并将它们添加到bond0
连接中。配置 IPv4 设置:
- 要使用 DHCP,不需要任何操作。
要为
bond0
连接设置静态 IPv4 地址、网络掩码、默认网关和 DNS 服务器设置,请输入:nmcli connection modify bond0 ipv4.addresses 192.0.2.1/24 ipv4.gateway 192.0.2.254 ipv4.dns 192.0.2.253 ipv4.dns-search example.com ipv4.method manual
# nmcli connection modify bond0 ipv4.addresses 192.0.2.1/24 ipv4.gateway 192.0.2.254 ipv4.dns 192.0.2.253 ipv4.dns-search example.com ipv4.method manual
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
配置 IPv6 设置:
- 要使用无状态地址自动配置(SLAAC),则不需要任何操作。
要为
bond0
连接设置静态 IPv6 地址、网络掩码、默认网关和 DNS 服务器设置,请输入:nmcli connection modify bond0 ipv6.addresses 2001:db8:1::1/64 ipv6.gateway 2001:db8:1::fffe ipv6.dns 2001:db8:1::fffd ipv6.dns-search example.com ipv6.method manual
# nmcli connection modify bond0 ipv6.addresses 2001:db8:1::1/64 ipv6.gateway 2001:db8:1::fffe ipv6.dns 2001:db8:1::fffd ipv6.dns-search example.com ipv6.method manual
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
可选:如果要在绑定端口上设置任何参数,请使用以下命令:
nmcli connection modify bond0-port1 bond-port.<parameter> <value>
# nmcli connection modify bond0-port1 bond-port.<parameter> <value>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 配置 Red Hat Enterprise Linux ,以便在绑定启用时自动启用所有端口:
nmcli connection modify bond0 connection.autoconnect-ports 1
# nmcli connection modify bond0 connection.autoconnect-ports 1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 激活网桥:
nmcli connection up bond0
# nmcli connection up bond0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
从主机中临时删除网络电缆。
请注意,无法使用软件工具正确测试链路失败事件。停用连接的工具(如 nmcli )只显示绑定驱动程序处理端口配置变化的能力,而不是实际的链接失败事件。
显示绑定状态:
cat /proc/net/bonding/bond0
# cat /proc/net/bonding/bond0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
17.6.2. 使用 nmcli 为网络绑定配置网桥 复制链接链接已复制到粘贴板!
网络绑定的网桥涉及配置一个绑定接口,该接口组合了多个网络接口,以改善流量处理。因此,虚拟机可以使用网桥,通过绑定的网络接口访问网络。nmcli
工具从命令行创建和编辑配置所需的连接文件。
流程
创建网桥接口:
nmcli connection add type bridge con-name br0 ifname br0 ipv4.method disabled ipv6.method disabled
# nmcli connection add type bridge con-name br0 ifname br0 ipv4.method disabled ipv6.method disabled
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
bond0
绑定添加到br0
网桥:nmcli connection modify bond0 master br0
# nmcli connection modify bond0 master br0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 配置 Red Hat Enterprise Linux ,以便在网桥启用时自动启用所有端口:
nmcli connection modify br0 connection.autoconnect-ports 1
# nmcli connection modify br0 connection.autoconnect-ports 1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重新激活桥接:
nmcli connection up br0
# nmcli connection up br0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
使用
ip
工具来显示作为特定网桥端口的以太网设备的链接状态:ip link show master br0
# ip link show master br0 6: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue master br0 state UP mode DEFAULT group default qlen 1000 link/ether 52:54:00:38:a9:4d brd ff:ff:ff:ff:ff:ff ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
bridge
工具来显示作为任意网桥设备端口的以太网设备状态:bridge link show
# bridge link show 6: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 master br0 state forwarding priority 32 cost 100 ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要显示特定以太网设备的状态,请使用
bridge link show dev <ethernet_device_name>
命令。
17.6.3. 使用现有绑定接口在 libvirt 中创建一个虚拟网络 复制链接链接已复制到粘贴板!
要使虚拟机(VM)使用带有绑定的 br0
网桥,首先将虚拟网络添加到使用此网桥的 libvirtd
服务中。
先决条件
-
您已安装了
libvirt
软件包。 -
您已启动并启用了
libvirtd
服务。 -
您已在 Red Hat Enterprise Linux 中使用绑定配置了
br0
设备。
流程
使用以下内容创建
~/bond0-bridge.xml
文件:<network> <name>bond0-bridge</name> <forward mode="bridge" /> <bridge name="br0" /> </network>
<network> <name>bond0-bridge</name> <forward mode="bridge" /> <bridge name="br0" /> </network>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
~/bond0-bridge.xml
文件在libvirt
中创建一个新的虚拟网络:virsh net-define ~/bond0-bridge.xml
# virsh net-define ~/bond0-bridge.xml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除
~/bond0-bridge.xml
文件:rm ~/bond0-bridge.xml
# rm ~/bond0-bridge.xml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启动
bond0-bridge
虚拟网络:virsh net-start bond0-bridge
# virsh net-start bond0-bridge
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
bond0-bridge
虚拟网络配置为在libvirtd
服务启动时自动启动:virsh net-autostart bond0-bridge
# virsh net-autostart bond0-bridge
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
显示虚拟网络列表:
virsh net-list
# virsh net-list Name State Autostart Persistent ---------------------------------------------------- bond0-bridge active yes yes ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
17.6.4. 将虚拟机配置为使用绑定接口 复制链接链接已复制到粘贴板!
要将虚拟机配置为使用主机上带有绑定接口的网桥设备,请创建一个使用 bond0-bridge
虚拟网络的新虚拟机,或更新现有虚拟机的设置以使用此网络。
在 RHEL 主机上执行此流程。
先决条件
-
您已在
libvirtd
中配置了bond0-bridge
虚拟网络。
流程
要创建新虚拟机并将其配置为使用
bond0-bridge
网络,请在创建虚拟机时将--network network:bond0-bridge
选项传给virt-install
工具:virt-install ... --network network:bond0-bridge
# virt-install ... --network network:bond0-bridge
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要更改现有虚拟机的网络设置:
将虚拟机的网络接口连接到
bond0-bridge
虚拟网络:virt-xml <example_vm> --edit --network network=bond0-bridge
# virt-xml <example_vm> --edit --network network=bond0-bridge
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
关闭虚拟机,并重新启动它:
virsh shutdown <example_vm> virsh start <example_vm>
# virsh shutdown <example_vm> # virsh start <example_vm>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
显示主机上虚拟机的虚拟网络接口:
virsh domiflist <example_vm>
# virsh domiflist <example_vm> Interface Type Source Model MAC ------------------------------------------------------------------- vnet1 bridge bond0-bridge virtio 52:54:00:c5:98:1c
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 显示附加到
br0
网桥的接口:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 请注意,
libvirtd
服务会动态更新网桥的配置。当您启动使用bond0-bridge
网络的虚拟机时,主机上相应的vnet*
设备显示为网桥的端口。