4.4. 使用命令行接口(CLI)

绑定是由 bonding 内核模块和名为 频道绑定接口 的特殊网络接口生成。

4.4.1. 检查是否已安装 Bonding 内核模块

在 Red Hat Enterprise Linux 7 中默认载入 bonding 模块。可作为 root 运行以下命令载入该模块:
~]# modprobe --first-time bonding
系统重启后则不会保留这个激活。有关持久载入该模块的详情请查看《Red Hat Enterprise Linux 7 系统管理员指南》。注:使用 BONDING_OPTS 指令给出正确的配置文件,则会根据需要载入绑定模式,因此不需要分别载入。
请使用以下命令显示该模块的信息:
~]$ modinfo bonding
更多命令选项请查看 modprobe(8) man page。

4.4.2. 创建频道绑定接口

要创建频道绑定接口,请在 /etc/sysconfig/network-scripts/ 目录中创建名为 ifcfg-bondN 的文件,使用接口号码替换 N,比如 0
可根据要绑定接口类型的配置文件编写该文件的内容,比如以太网接口。最主要的区别是 DEVICE 指令是 bondN(使用接口号码替换 N)和 TYPE=Bond。此外还设置 BONDING_MASTER=yes

例 4.1. ifcfg-bond0 接口配置文件示例

频道绑定接口示例。
DEVICE=bond0
NAME=bond0
TYPE=Bond
BONDING_MASTER=yes
IPADDR=192.168.1.1
PREFIX=24
ONBOOT=yes
BOOTPROTO=none
BONDING_OPTS="bonding parameters separated by spaces"
NAME 指令在 NetworkManager 命名连接配置文件时非常有用。ONBOOT 决定如何在引导时启动该配置文件(也就是说,如何自动连接某个设备)。

重要

必须在 ifcfg-bondN 接口文件的 BONDING_OPTS="bonding parameters" 指令中,使用以空格分开的列表指定 bonding 内核模块。请不要/etc/modprobe.d/bonding.conf 文件或弃用的 /etc/modprobe.conf 文件中为绑定设备指定选项。
max_bonds 参数不是具体接口的参数,且不应在使用 BONDING_OPTS 指令的 ifcfg-bondN 文件中设定,因为这个指令会让网络脚本根据需要创建绑定接口。
有关配置 bonding 模块及查看绑定参数的操作,请查看 第 4.5 节 “使用频道绑定”

4.4.3. 创建从属接口

频道绑定接口是接口,同时要绑定的接口是从属接口。创建频道绑定接口后,必须在从属接口的配置文件中添加 MASTERSLAVE 指令,以便配置要绑定在一起的接口。每个从属接口的配置文件都几乎一样。

例 4.2. 从属接口配置文件示例

例如:将两个以太网接口 eth0eth1 以频道方式绑定,它们可类似如下:
DEVICE=ethN
NAME=bond0-slave
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
在这个示例中,使用该接口的数字值替换 N。注:如果某个接口有一个以上配置文件,或配置文件中包含 ONBOOT=yes,则可能会产生彼此竞争,同时激活普通的 TYPE=Ethernet 配置文件,而不是绑定从属接口。

4.4.4. 激活频道绑定

要激活绑定,则要启动所有从属接口。请作为 root 运行以下命令:
~]# ifup ifcfg-eth0
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/7)
~]# ifup ifcfg-eth1
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/8)
注:如果为已经处于 up 的接口编辑接口文件,请首先将其设定为 down,如下:
ifdown ethN
。完成后,启动所有从属接口以便启动绑定(不将其设定为 down)。
要让 NetworkManager 了解所做更改,请在每次进行更改后,作为 root 运行一个命令:
~]# nmcli con load /etc/sysconfig/network-scripts/ifcfg-device
另外,也可以重新载入所有接口:
~]# nmcli con reload
NetworkManager 的默认行为是不会意识到所进行的更改,并继续使用旧的配置数据。这是由 NetworkManager.conf 文件中的 monitor-connection-files 选项决定。有关详情请查看 NetworkManager.conf(5) manual page。
请运行以下命令查看绑定接口的状态:
~]# ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP mode DEFAULT qlen 1000
    link/ether 52:54:00:e9:ce:d2 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP mode DEFAULT qlen 1000
    link/ether 52:54:00:38:a6:4c brd ff:ff:ff:ff:ff:ff
4: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT
    link/ether 52:54:00:38:a6:4c brd ff:ff:ff:ff:ff:ff

4.4.5. 创建多个绑定

在 Red Hat Enterprise Linux 7 中,会为每个绑定创建一个频道绑定接口,其中包括 BONDING_OPTS 指令。使用这个配置方法可让多个绑定设备使用不同的配置。请按照以下操作创建多个频道绑定接口:
  • 创建多个 ifcfg-bondN 文件,这些文件中包含 BONDING_OPTS 指令。这个指令可让网络脚本根据需要创建绑定接口。
  • 创建或编辑要绑定的现有接口配置文件,添加 SLAVE 指令。
  • 使用 MASTER 指令工具在频道绑定接口中分配要绑定的接口,即从属接口。

例 4.3. 多 ifcfg-bondN 接口配置文件示例

以下是频道绑定接口配置文件示例:
DEVICE=bondN
NAME=bondN
TYPE=Bond
BONDING_MASTER=yes
IPADDR=192.168.1.1
PREFIX=24
ONBOOT=yes
BOOTPROTO=none
BONDING_OPTS="bonding parameters separated by spaces"
在这个示例中,使用绑定接口的号码替换 N。例如:要创建两个接口,则需要使用正确的 IP 地址创建两个配置文件 ifcfg-bond0ifcfg-bond1
使用 例 4.2 “从属接口配置文件示例” 创建要绑定的接口,并根据需要使用 MASTER=bondN 指令将其分配到绑定接口。例如:在上述示例中,如果需要在每个绑定中有两个接口,则两个绑定则要创建四个接口配置文件,并使用 MASTER=bond0 分配前两个配置文件,使用 MASTER=bond1 分配后两个配置文件。