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"
这个命令会创建一个使用
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
这些命令为
enp7s0
和enp8s0
创建配置文件,并将它们添加到bond0
连接中。配置 IPv4 设置:
- 要使用 DHCP,不需要任何操作。
要为
bond0
连接设置静态 IPv4 地址、网络掩码、默认网关和 DNS 服务器设置,请输入:# nmcli connection modify bond0 ipv4.addresses
192.0.2.1/24
ipv4.gateway192.0.2.254
ipv4.dns192.0.2.253
ipv4.dns-searchexample.com
ipv4.methodmanual
配置 IPv6 设置:
- 要使用无状态地址自动配置(SLAAC),则不需要任何操作。
要为
bond0
连接设置静态 IPv6 地址、网络掩码、默认网关和 DNS 服务器设置,请输入:# nmcli connection modify bond0 ipv6.addresses
2001:db8:1::1/64
ipv6.gateway2001:db8:1::fffe
ipv6.dns2001:db8:1::fffd
ipv6.dns-searchexample.com
ipv6.methodmanual
可选:如果要在绑定端口上设置任何参数,请使用以下命令:
# nmcli connection modify bond0-port1 bond-port.<parameter> <value>
配置 Red Hat Enterprise Linux 在启用绑定时自动启用所有端口:
# nmcli connection modify bond0 connection.autoconnect-ports 1
激活网桥:
# nmcli connection up bond0
验证
从主机中临时删除网络电缆。
请注意,无法使用软件工具正确测试链路失败事件。停用连接的工具(如 nmcli )只显示绑定驱动程序处理端口配置更改的能力,而不是实际链接失败事件。
显示绑定状态:
# cat /proc/net/bonding/bond0
17.6.2. 使用 nmcli 为网络绑定配置网络桥接
网络绑定的网络桥接涉及配置绑定接口,该接口组合了多个网络接口,以改进流量处理。因此,虚拟机可以使用网桥通过绑定的网络接口访问网络。nmcli
工具从配置所需的命令行中创建和编辑连接文件。
流程
创建网桥接口:
# nmcli connection add type bridge con-name
br0
ifnamebr0
ipv4.methoddisabled
ipv6.methoddisabled
将
bond0
绑定添加到br0
网桥:# nmcli connection modify bond0 master br0
配置 Red Hat Enterprise Linux 在启用桥接时自动启用所有端口:
# nmcli connection modify br0 connection.autoconnect-ports 1
重新激活桥接:
# nmcli connection up br0
验证
使用
ip
工具来显示作为特定网桥端口的以太网设备的链接状态:# 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 ...
使用
bridge
工具来显示作为任意网桥设备端口的以太网设备状态:# bridge link show 6: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 master br0 state forwarding priority 32 cost 100 ...
要显示特定以太网设备的状态,请使用
bridge link show dev <ethernet_device_name>
命令。
其它资源
-
nm-settings(5)
手册页 -
bridge(8)
手册页
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>
使用
~/bond0-bridge.xml
文件在libvirt
中创建一个新的虚拟网络:# virsh net-define ~/bond0-bridge.xml
删除
~/bond0-bridge.xml
文件:# rm ~/bond0-bridge.xml
启动
bond0-bridge
虚拟网络:# virsh net-start bond0-bridge
将
bond0-bridge
虚拟网络配置为在libvirtd
服务启动时自动启动:# virsh net-autostart bond0-bridge
验证
显示虚拟网络列表:
# virsh net-list Name State Autostart Persistent ---------------------------------------------------- bond0-bridge active yes yes ...
其它资源
-
virsh(1)
手册页
17.6.4. 将虚拟机配置为使用绑定接口
要将虚拟机配置为使用主机上的绑定接口的网桥设备,请创建一个使用 bond0-bridge
虚拟网络的新虚拟机,或更新现有虚拟机的设置以使用此网络。
在 RHEL 主机上执行此流程。
先决条件
-
您已在
libvirtd
中配置了bond0-bridge
虚拟网络。
流程
要创建新虚拟机并将其配置为使用
bond0-bridge
网络,请在创建虚拟机时将--network network:bond0-bridge
选项传给virt-install
工具:# virt-install ... --network network:bond0-bridge
要更改现有虚拟机的网络设置:
将虚拟机的网络接口连接到
bond0-bridge
虚拟网络:# virt-xml <example_vm> --edit --network network=bond0-bridge
关闭虚拟机,并重新启动它:
# virsh shutdown <example_vm> # virsh start <example_vm>
验证
显示主机上虚拟机的虚拟网络接口:
# virsh domiflist <example_vm> Interface Type Source Model MAC ------------------------------------------------------------------- vnet1 bridge bond0-bridge virtio 52:54:00:c5:98:1c
显示附加到
br0
网桥的接口:# ip link show master br0 18: bond0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br0 state UNKNOWN mode DEFAULT group default qlen 1000 link/ether 2a:53:bd:d5:b3:0a brd ff:ff:ff:ff:ff:ff 19: vnet1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br0 state UNKNOWN mode DEFAULT group default qlen 1000 link/ether 52:54:00:c5:98:1c brd ff:ff:ff:ff:ff:ff ...
请注意,
libvirtd
服务会动态更新网桥的配置。当您启动使用bond0-bridge
网络的虚拟机时,主机上对应的vnet*
设备会显示为网桥的端口。
其它资源
-
virt-install(1)
手册页 -
virt-xml(1)
手册页 -
virsh(1)
手册页 -
arping(8)
手册页