查看网络绑定(Network Bonding)信息
- 每个网络接口在 /sys/class/net 目录中包含一个目录。
例如:
# ls /sys/class/net bond0 bonding_masters ens33 ens36 ens37 lo
- 在本例中,存在名为“bond0”的网络绑定。
存在包含该绑定的配置信息的同名目录。
例如:
# ls /sys/class/net/bond0 addr_assign_type bonding carrier_changes dormant gro_flush_timeout iflink lower_ens37 operstate queues subsystem uevent address broadcast dev_id duplex ifalias link_mode mtu phys_port_id speed tx_queue_len addr_len carrier dev_port flags ifindex lower_ens33 netdev_group power statistics type
- 在此目录中是一个绑定目录,其中包含有关 bond0 接口的信息。
例如:
# ls /sys/class/net/bond0/bonding active_slave ad_aggregator ad_select arp_interval fail_over_mac mii_status num_unsol_na queue_id updelay ad_actor_key ad_num_ports ad_user_port_key arp_ip_target lacp_rate min_links packets_per_slave resend_igmp use_carrier ad_actor_sys_prio ad_partner_key all_slaves_active arp_validate lp_interval mode primary slaves xmit_hash_policy ad_actor_system ad_partner_mac arp_all_targets downdelay miimon num_grat_arp primary_reselect tlb_dynamic_lb
- 查看包含每个从接口信息的目录。
例如:
# ls /sys/class/net/bond0/lower_ens33 addr_assign_type bonding_slave carrier_changes dev_port flags ifindex master operstate queues subsystem uevent address broadcast device dormant gro_flush_timeout iflink mtu phys_port_id speed tx_queue_len upper_bond0 addr_len carrier dev_id duplex ifalias link_mode netdev_group power statistics type
- 以下是查看/sys/class/net 目录中文件的一些示例。
# cat /sys/class/net/bonding_masters bond0
# cat /sys/class/net/bond0/operstate up
# cat /sys/class/net/bond0/address 00:0c:29:54:f7:20
# cat /sys/class/net/bond0/bonding/active_slave ens33
# cat /sys/class/net/bond0/bonding/mode active-backup 1
# cat /sys/class/net/bond0/bonding/slaves ens33 ens37
- 以下是查看/proc/net/bonding/bond0 文件的示例。
# cat /proc/net/bonding/bond0 Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011) Bonding Mode: fault-tolerance (active-backup) Primary Slave: None Currently Active Slave: ens33 MII Status: up MII Polling Interval (ms): 100 Up Delay (ms): 0 Down Delay (ms): 0 Slave Interface: ens33 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 00:0c:29:54:f7:20 Slave queue ID: 0 Slave Interface: ens37 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 00:0c:29:54:f7:34 Slave queue ID: 0
欢迎来到之路教程(on itroad-com)
使用 nmcli 创建网络绑定(Network Bonding)
1. 创建绑定接口
- 使用不带任何参数的 nmcli connection 命令查看现有的网络连接。
我们可以将“connection”参数缩短为“con”。
例子:
# nmcli connection NAME UUID TYPE DEVICE ens33 59b61d18-90ed-4c3c-97e0-6c9e0528f25f 802-3-ethernet ens33 ens37 c09f18e1-793b-4d60-9107-98762cf593a7 802-3-ethernet ens37
- 包括“添加类型绑定”参数,以及创建网络绑定连接的任何添加信息。
下面的示例创建一个名为bond0 的绑定接口,将接口定义为bond0,将模式设置为“active-backup”,并为绑定接口分配一个IP 地址。
# nmcli con add type bond con-name bond0 ifname bond0 mode active-backup ip4 192.168.219.150/24 Connection 'bond0' (1a75eef0-f2c9-417d-81a0-fabab4a1531c) successfully added.
nmcli con 命令显示新的绑定连接。
# nmcli connection NAME UUID TYPE DEVICE bond0 1a75eef0-f2c9-417d-81a0-fabab4a1531c bond bond0 ens33 59b61d18-90ed-4c3c-97e0-6c9e0528f25f 802-3-ethernet ens33 ens37 c09f18e1-793b-4d60-9107-98762cf593a7 802-3-ethernet ens37
- 'nmcli con add type bond' 命令在 /etc/sysconfig/network-scripts 目录中创建一个接口配置文件。
例如:
# cat /etc/sysconfig/network-scripts/ifcfg-bond0 DEVICE=bond0 BONDING_OPTS=mode=active-backup TYPE=Bond BONDING_MASTER=yes BOOTPROTO=none IPADDR=192.168.219.150 PREFIX=24 DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_PEERDNS=yes IPV6_PEERROUTES=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=bond0 UUID=1a75eef0-f2c9-417d-81a0-fabab4a1531c ONBOOT=yes
- ip addr 命令显示新的 bond0 接口:
# ip addr show bond0 5: bond0: [BROADCAST,MULTICAST,MASTER,UP] mtu 1500 qdisc noqueue state DOWN qlen 1000 link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff inet 192.168.219.150/24 brd 192.168.219.255 scope global bond0 valid_lft forever preferred_lft forever
2. 创建从接口
- 对于要绑定的每个接口,使用“nmcli con add type bond-slave”命令。
以下示例将 ens33 接口添加为绑定从站。
该命令不包含 con-name 参数,因此会自动生成名称。
我们可以使用 con-name 参数为从属接口设置名称。
# nmcli con add type bond-slave ifname ens33 master bond0 Connection 'bond-slave-ens33' (79c40960-6b2c-47ba-a417-988332affed1) successfully added.
- 下面的例子将ens37接口添加为“bond-slave”。
# nmcli con add type bond-slave ifname ens37 master bond0 Connection 'bond-slave-ens37' (46222a52-f2ae-4732-bf06-ef760aea0d7b) successfully added.
- nmcli con 命令显示新连接。
# nmcli connection NAME UUID TYPE DEVICE bond0 1a75eef0-f2c9-417d-81a0-fabab4a1531c bond bond0 ens33 59b61d18-90ed-4c3c-97e0-6c9e0528f25f 802-3-ethernet ens33 ens37 c09f18e1-793b-4d60-9107-98762cf593a7 802-3-ethernet ens37 bond-slave-ens33 79c40960-6b2c-47ba-a417-988332affed1 802-3-ethernet -- bond-slave-ens37 46222a52-f2ae-4732-bf06-ef760aea0d7b 802-3-ethernet -
- nmcli con add type bond-slave 命令在 /etc/sysconfig/network-scripts 目录中创建接口配置文件。
例如:
# cat /etc/sysconfig/network-scripts/ifcfg-bond-slave-ens33 TYPE=Ethernet NAME=bond-slave-ens33 UUID=79c40960-6b2c-47ba-a417-988332affed1 DEVICE=ens33 ONBOOT=yes MASTER=bond0 SLAVE=yes
# cat /etc/sysconfig/network-scripts/ifcfg-bond-slave-ens37 TYPE=Ethernet NAME=bond-slave-ens37 UUID=46222a52-f2ae-4732-bf06-ef760aea0d7b DEVICE=ens37 ONBOOT=yes MASTER=bond0 SLAVE=yes
- ip addr 命令包括用于 ens33 和 ens37 接口的“SLAVE”,还包括“master bond0”。
3. 激活绑定接口
- 我们可以使用 nmcli 命令来建立连接。
先调出slave,然后调出bond接口。
以下命令启动从接口:
# nmcli connection up bond-slave-ens33 # nmcli connection up bond-slave-ens37
- 以下命令会打开 bond0 接口:
# nmcli con up bond0
- ip addr 命令或者 ip link 命令现在显示处于 UP 状态的从属接口和绑定接口。
# ip link 2: ens33: [BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP] mtu 1500 qdisc pfifo_fast master bond0 state UP mode DEFAULT qlen 1000 link/ether 00:0c:29:54:f7:20 brd ff:ff:ff:ff:ff:ff 3: ens37: [BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP] mtu 1500 qdisc pfifo_fast master bond0 state UP mode DEFAULT qlen 1000 link/ether 00:0c:29:54:f7:20 brd ff:ff:ff:ff:ff:ff 4: bond0: [BROADCAST,MULTICAST,MASTER,UP,LOWER_UP] mtu 1500 qdisc noqueue state UP mode DEFAULT qlen 1000 link/ether 00:0c:29:54:f7:20 brd ff:ff:ff:ff:ff:ff
如何在绑定接口上禁用 IPv4 或者 IPv6
仅当 bond1 不使用 ipv4 或者 ipv6 地址时才需要这些步骤
# nmcli connection modify bond1 ipv4.method disabled
或者
# nmcli connection modify bond1 ipv6.method ignore
Bonding的模式
根据我们的需求,可以将绑定模式设置为以下 7 种模式 之一)
模式 | 策略 | 这个怎么运作 | 容错 | 负载均衡 |
---|---|---|---|---|
0 | Round Robin | 数据包依次通过每个接口一个接一个地发送/接收。 | 是的 | 是的 |
1 | Active Backup | 一个 NIC 处于活动状态,而另一个 NIC 处于休眠状态。如果活动 NIC 出现故障,另一个 NIC 将变为活动状态。仅在 x86 环境中受支持。 | 是的 | 不 |
2 | XOR [exclusive OR] | 在这种模式下,从 NIC 的 MAC 地址与传入请求的 MAC 匹配,一旦建立此连接,同一个 NIC 将用于发送/接收目标 MAC。 | 是的 | 是的 |
3 | Broadcast | 所有传输都在所有从机上发送 | 是的 | 不 |
4 | Dynamic Link Aggregation | 聚合的 NIC 充当一个 NIC,这会导致更高的吞吐量,但也会在 NIC 发生故障的情况下提供故障转移。动态链路聚合需要支持 IEEE 802.3ad 的交换机。 | 是的 | 是的 |
5 | Transmit Load Balancing (TLB) | 根据每个从接口上的当前负载分配传出流量。当前从站接收传入流量。如果接收从站出现故障,另一个从站将接管故障从站的 MAC 地址。 | 是的 | 是的 |
6 | Adaptive Load Balancing (ALB) | 与动态链路聚合不同,自适应负载平衡不需要任何特定的交换机配置。自适应负载平衡仅在 x86 环境中受支持。接收报文通过ARP协商进行负载均衡。 | 是的 | 是的 |
为什么要使用接口绑定(Interface bonding)?
创建接口绑定(Interface bonding)的两个重要原因是:
- 提供增加的带宽
- 面对硬件故障时提供冗余
配置绑定的准备工作之一是拥有支持 EtherChannel 的网络交换机(几乎所有交换机都是如此)。
什么是接口绑定(Interface bonding)
绑定或者通道绑定(Bonding / Channel Bonding)是由 Linux 内核和红帽企业 Linux 支持的一项技术,它允许管理员组合两个或者多个网络接口以形成单个逻辑“绑定”接口以实现冗余或者增加吞吐量。
绑定接口的行为取决于模式;一般来说,模式提供热备或者负载均衡服务。
此外,它们可以提供链路完整性监控。
日期:2020-09-17 00:12:02 来源:oir作者:oir