17.6. 在网络绑定上配置网桥,以将虚拟机与网络连接


网桥将虚拟机与主机相同的网络连接。如果要将一个主机上的虚拟机连接到另一个主机上的另一主机或虚拟机,则桥接会在它们之间建立通信。但是,网桥不提供故障转移机制。为了处理通信中的故障,网络绑定会在网络接口失败时处理通信。为保持容错和冗余,active-backup 绑定机制决定在绑定中只有一个端口处于活跃状态,不需要任何交换机配置。如果活动端口失败,则备用端口将变为活动状态,以保留网络中配置的虚拟机之间的通信。

17.6.1. 使用 nmcli 在网络绑定上配置网络接口

要在命令行上配置网络绑定,请使用 nmcli 工具。

先决条件

  • 在服务器上安装两个或者两个物理设备,它们不会在任何 NetworkManager 连接配置文件中配置。

流程

  1. 创建绑定接口:

    # nmcli connection add type bond con-name bond0 ifname bond0 bond.options "mode=active-backup"

    这个命令会创建一个使用 active-backup 模式、名为 bond0 的绑定。

  2. 为绑定分配以太网接口:

    # 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

    这些命令为 enp7s0enp8s0 创建配置文件,并将它们添加到 bond0 连接中。

  3. 配置 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
  4. 配置 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
  5. 可选:如果要在绑定端口上设置任何参数,请使用以下命令:

    # nmcli connection modify bond0-port1 bond-port.<parameter> <value>
  6. 配置 Red Hat Enterprise Linux 在启用绑定时自动启用所有端口:

    # nmcli connection modify bond0 connection.autoconnect-ports 1
  7. 激活网桥:

    # nmcli connection up bond0

验证

  1. 从主机中临时删除网络电缆。

    请注意,无法使用软件工具正确测试链路失败事件。停用连接的工具(如 nmcli )只显示绑定驱动程序处理端口配置更改的能力,而不是实际链接失败事件。

  2. 显示绑定状态:

    # cat /proc/net/bonding/bond0

17.6.2. 使用 nmcli 为网络绑定配置网络桥接

网络绑定的网络桥接涉及配置绑定接口,该接口组合了多个网络接口,以改进流量处理。因此,虚拟机可以使用网桥通过绑定的网络接口访问网络。nmcli 工具从配置所需的命令行中创建和编辑连接文件。

流程

  1. 创建网桥接口:

    # nmcli connection add type bridge con-name br0 ifname br0 ipv4.method disabled ipv6.method disabled
  2. bond0 绑定添加到 br0 网桥:

    # nmcli connection modify bond0 master br0
  3. 配置 Red Hat Enterprise Linux 在启用桥接时自动启用所有端口:

    # nmcli connection modify br0 connection.autoconnect-ports 1
  4. 重新激活桥接:

    # 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 设备。

流程

  1. 使用以下内容创建 ~/bond0-bridge.xml 文件:

    <network>
    	<name>bond0-bridge</name>
    	<forward mode="bridge" />
    	<bridge name="br0" />
    </network>
  2. 使用 ~/bond0-bridge.xml 文件在 libvirt 中创建一个新的虚拟网络:

    # virsh net-define ~/bond0-bridge.xml
  3. 删除 ~/bond0-bridge.xml 文件:

    # rm ~/bond0-bridge.xml
  4. 启动 bond0-bridge 虚拟网络:

    # virsh net-start bond0-bridge
  5. 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 虚拟网络。

流程

  1. 要创建新虚拟机并将其配置为使用 bond0-bridge 网络,请在创建虚拟机时将-- network network:bond0-bridge 选项传给 virt-install 工具:

    # virt-install ... --network network:bond0-bridge
  2. 要更改现有虚拟机的网络设置:

    1. 将虚拟机的网络接口连接到 bond0-bridge 虚拟网络:

      # virt-xml <example_vm> --edit --network network=bond0-bridge
  3. 关闭虚拟机,并重新启动它:

    # 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) 手册页
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.