Centos7多网卡绑定bond快速实践

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Centos7多网卡绑定bond快速实践相关的知识,希望对你有一定的参考价值。

参考技术A 一、准备环境

VMware软件、Centos7虚拟机

二、添加网卡

为虚拟机再添加两块网卡,查看网卡信息,可以看到有ens32、ens34、ens35三块网卡

ip addr

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000

    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

    inet 127.0.0.1/8 scope host lo

      valid_lft forever preferred_lft forever

    inet6 ::1/128 scope host

      valid_lft forever preferred_lft forever

2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000

    link/ether 00:0c:29:54:02:06 brd ff:ff:ff:ff:ff:ff

    inet 192.168.30.142/24 brd 192.168.30.255 scope global noprefixroute dynamic ens32

      valid_lft 1615sec preferred_lft 1615sec

    inet6 fe80::d089:c15:e69a:8ce4/64 scope link noprefixroute

      valid_lft forever preferred_lft forever

3: ens34: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000

    link/ether 00:0c:29:54:02:1a brd ff:ff:ff:ff:ff:ff

    inet 192.168.30.143/24 brd 192.168.30.255 scope global noprefixroute dynamic ens34

      valid_lft 1765sec preferred_lft 1765sec

    inet6 fe80::a4af:b843:9032:9dd3/64 scope link noprefixroute

      valid_lft forever preferred_lft forever

4: ens35: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000

    link/ether 00:0c:29:54:02:10 brd ff:ff:ff:ff:ff:ff

    inet 192.168.30.141/24 brd 192.168.30.255 scope global noprefixroute dynamic ens35

      valid_lft 1765sec preferred_lft 1765sec

    inet6 fe80::b7cf:76d7:23aa:63c2/64 scope link noprefixroute

      valid_lft forever preferred_lft forever

查看网卡配置文件,可以看到添加网卡后,并没有生成对应的网卡文件

ls /etc/sysconfig/network-scripts/ifcfg*

/etc/sysconfig/network-scripts/ifcfg-ens32  /etc/sysconfig/network-scripts/ifcfg-lo

可以为网卡生成配置文件,但在本文中不需要这样做

nmcli connection add type ethernet con-name ens34 ifname ens34 autoconnect yes

nmcli connection add type ethernet con-name ens35 ifname ens35 autoconnect yes

再次查看网卡配置文件,生成成功

ls /etc/sysconfig/network-scripts/ifcfg*

/etc/sysconfig/network-scripts/ifcfg-ens32  /etc/sysconfig/network-scripts/ifcfg-ens35

/etc/sysconfig/network-scripts/ifcfg-ens34  /etc/sysconfig/network-scripts/ifcfg-lo

三,选定网卡绑定模式

多网卡一共有7种bond模式,这里直接选用mode=6 (balance-alb) Adaptive load balancing(适配器适应性负载均衡),该模式不需要交换机支持

四、开始配置

1、加载bonding模块,并设置开机启动

[root@localhost ~]#lsmod|grepbonding[root@localhost ~]#modprobe bonding[root@localhost ~]#lsmod|grepbondingbonding              152979  0

启用rc.local开机启动项

chmod +x /etc/rc.d/rc.local

在文件中写入modprobe bonding

2、建立bond网口配置文件并进行配置

/etc/sysconfig/network-scripts/ifcfg-bond0

DEVICE=bond0

NAME=bond0

TYPE=Bond

BONDING_MASTER=yes

IPADDR=192.168.30.250

PREFIX=255.255.255.0

GATEWAY=192.168.30.2

DNS1=114.114.114.114

ONBOOT=yes

BOOTPROTO=none

BONDING_OPTS="mode=6  miimon=100"

3、修改三块网卡的配置

vi /etc/sysconfig/network-scripts/ifcfg-ens32

DEVICE=ens32

ONBOOT=yes

BOOTPROTO=none

TYPE=Ethernet

MASTER=bond0

SLAVE=yes

vi /etc/sysconfig/network-scripts/ifcfg-ens34

DEVICE=ens34

ONBOOT=yes

BOOTPROTO=none

TYPE=Ethernet

MASTER=bond0

SLAVE=yes

vi /etc/sysconfig/network-scripts/ifcfg-ens35

DEVICE=ens35

ONBOOT=yes

BOOTPROTO=none

TYPE=Ethernet

MASTER=bond0

SLAVE=yes

4、重新加载网络配置

注意:这一步会断网!

nmcli connection reload && systemctl restart network.service

使用新IP链接ssh

五、验证绑定是否生效

cat /proc/net/bonding/bond0

Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: adaptive load balancing

Primary Slave: None

Currently Active Slave: ens32

MII Status: up

MII Polling Interval (ms): 100

Up Delay (ms): 0

Down Delay (ms): 0

Slave Interface: ens32

MII Status: up

Speed: 1000 Mbps

Duplex: full

Link Failure Count: 0

Permanent HW addr: 00:0c:29:54:02:06

Slave queue ID: 0

Slave Interface: ens34

MII Status: up

Speed: 1000 Mbps

Duplex: full

Link Failure Count: 0

Permanent HW addr: 00:0c:29:54:02:1a

Slave queue ID: 0

Slave Interface: ens35

MII Status: up

Speed: 1000 Mbps

Duplex: full

Link Failure Count: 0

Permanent HW addr: 00:0c:29:54:02:10

Slave queue ID: 0

查看网卡状态

ip addr

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000

    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

    inet 127.0.0.1/8 scope host lo

      valid_lft forever preferred_lft forever

    inet6 ::1/128 scope host

      valid_lft forever preferred_lft forever

2: ens32: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP group default qlen 1000

    link/ether 00:0c:29:54:02:06 brd ff:ff:ff:ff:ff:ff

3: ens34: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP group default qlen 1000

    link/ether 00:0c:29:54:02:1a brd ff:ff:ff:ff:ff:ff

4: ens35: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP group default qlen 1000

    link/ether 00:0c:29:54:02:10 brd ff:ff:ff:ff:ff:ff

5: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000

    link/ether 00:0c:29:54:02:06 brd ff:ff:ff:ff:ff:ff

    inet 192.168.30.250/24 brd 192.168.30.255 scope global bond0

      valid_lft forever preferred_lft forever

    inet6 fe80::20c:29ff:fe54:206/64 scope link

      valid_lft forever preferred_lft forever

查看接口带宽,带宽为3G

ethtool bond0

Settings for bond0:

        Supported ports: [ ]

        Supported link modes:  Not reported

        Supported pause frame use: No

        Supports auto-negotiation: No

        Supported FEC modes: Not reported

        Advertised link modes:  Not reported

        Advertised pause frame use: No

        Advertised auto-negotiation: No

        Advertised FEC modes: Not reported

        Speed: 3000Mb/s

        Duplex: Full

        Port: Other

        PHYAD: 0

        Transceiver: internal

        Auto-negotiation: off

        Link detected: yes

连续ping测试,并禁用第一个网卡,此时会丢一个包,网络依然正常运行

来自 192.168.30.250 的回复: 字节=32 时间<1ms TTL=64

来自 192.168.30.250 的回复: 字节=32 时间<1ms TTL=64

来自 192.168.30.250 的回复: 字节=32 时间=1ms TTL=64

请求超时。

来自 192.168.30.250 的回复: 字节=32 时间=1ms TTL=64

来自 192.168.30.250 的回复: 字节=32 时间<1ms TTL=64

完毕!

CentOS多网卡绑定

防伪码:没有相当程度的孤独是不可能有内心的平和。

1、概述

随着技术的发展,四张及以上的千兆以太网卡已经变成了服务器的标配。而在生产环境中,为了保证Linux服务器的网络稳定,会对服务器的多张网卡通过绑定一个IP来实现网卡的热备。

网卡绑定的模式(mode)共有七种(0~6) bond0、bond1、bond2、bond3、bond4、bond5、bond6

其中常用的有三种:

mode=0:平衡负载模式,有自动备援,但需要交换机支持

mode=1:active-backup,主-备份策略,自动备援模式,其中一条线若断线,其他线路将会自动切换过去。而且MAC地址是外部可见得,从外面看来,bond的MAC地址是唯一的,以避免交换机发生混乱。此模式只提供了容错能力,没有负载功能。优点是可以提供高网络连接的可用性,但是它的资源利用率较低,只有一个接口处于工作状态,在有 N 个网络接口的情况下,资源利用率为1/N。

mode=6:平衡负载模式,有自动备援,不需要交换机支持。接收负载均衡是通过ARP协商实现的。bonding驱动截获本机发送的ARP应答,并把源硬件地址改写为bond中某个slave的唯一硬件地址,从而使得不同的对端使用不同的硬件地址进行通信。

2、mode=1测试

2.1 测试环境


主机名IP系统
test-01192.168.10.51CentOS release 6.9 (Final)

本次测试通过VMware Workstation模拟。

2.2 添加网卡

在【虚拟机设置】中添加网络适配器。

技术分享

技术分享

查看网卡是否添加:

[[email protected] ~]#ifconfig -a
eth0      Link encap:Ethernet  HWaddr 00:0C:29:66:30:36
inet addr:192.168.10.51  Bcast:192.168.10.255  Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe66:3036/64 Scope:Link
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:91 errors:0 dropped:0 overruns:0 frame:0
TX packets:76 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:9813 (9.5 KiB)  TX bytes:11278 (11.0 KiB)
eth1      Link encap:Ethernet  HWaddr 00:0C:29:66:30:40
BROADCAST MULTICAST  MTU:1500  Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
lo        Link encap:Local Loopback
inet addr:127.0.0.1  Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING  MTU:65536  Metric:1
RX packets:80 errors:0 dropped:0 overruns:0 frame:0
TX packets:80 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:5360 (5.2 KiB)  TX bytes:5360 (5.2 KiB)


2.3 创建bond

[[email protected] ~]#cd /etc/sysconfig/network-scripts/
[[email protected] network-scripts]#cp ifcfg-eth0 ifcfg-bond0
[[email protected] network-scripts]#vim ifcfg-bond0
DEVICE=bond0
TYPE=Ethernet
ONBOOT=on
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.10.51
GATEWAY=192.168.10.2
NETMASK=255.255.255.0
DNS1=223.5.5.5


修改eth0:

[[email protected] network-scripts]#vim ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=on
BOOTPROTO=none
MASTER=bond0
SLAVE=yes


修改eth1:

[[email protected] network-scripts]#vim ifcfg-eth1
DEVICE=eth1
TYPE=Ethernet
ONBOOT=on
BOOTPROTO=none
MASTER=bond0
SLAVE=yes

说明:MASTER=bond0和SLAVE=yes这两行主要是用于系统service network restart后自动启用。


2.4 模块加载

[[email protected] network-scripts]#echo "alias bond0 bonding" >>/etc/modprobe.d/dist.conf
[[email protected] network-scripts]#echo "options bond0 mode=1 miimon=100" >>/etc/modprobe.d/dist.conf

说明:miimon是用来进行链路监测的,单位是ms(毫秒),即系统每100ms监测一次链路连接状态,若有一条线路不通就转入另一条线路。


2.5 重启网卡

[[email protected] ~]#service network restart


bond0、eth0和eth1的MAC地址均变成之前eth0的MAC地址。

[[email protected] network-scripts]#ifconfig
bond0     Link encap:Ethernet  HWaddr 00:0C:29:66:30:36
inet addr:192.168.10.51  Bcast:192.168.10.255  Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe66:3036/64 Scope:Link
UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1
RX packets:33 errors:0 dropped:0 overruns:0 frame:0
TX packets:31 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:2508 (2.4 KiB)  TX bytes:3486 (3.4 KiB)
eth0      Link encap:Ethernet  HWaddr 00:0C:29:66:30:36
UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
RX packets:971 errors:0 dropped:0 overruns:0 frame:0
TX packets:686 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:91772 (89.6 KiB)  TX bytes:103730 (101.2 KiB)
eth1      Link encap:Ethernet  HWaddr 00:0C:29:66:30:36
UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
RX packets:14 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:872 (872.0 b)  TX bytes:0 (0.0 b)
lo        Link encap:Local Loopback
inet addr:127.0.0.1  Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING  MTU:65536  Metric:1
RX packets:80 errors:0 dropped:0 overruns:0 frame:0
TX packets:80 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:5360 (5.2 KiB)  TX bytes:5360 (5.2 KiB)




3、验证

3.1 断开eth0测试

宿主机ping192.168.10.51测试:

ping 192.168.10.51


断开eth0,观察到bond已经切换到eth1:

[[email protected] ~]#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: eth1
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: eth0
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 1
Permanent HW addr: 00:0c:29:66:30:36
Slave queue ID: 0
Slave Interface: eth1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 1
Permanent HW addr: 00:0c:29:66:30:40
Slave queue ID: 0


在宿主机上观察到ping有一次丢包:

正在 Ping 192.168.10.51 具有 32 字节的数据:
来自 192.168.10.51 的回复: 字节=32 时间=1ms TTL=64
来自 192.168.10.51 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.10.51 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.10.51 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.10.51 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.10.51 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.10.51 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.10.51 的回复: 字节=32 时间<1ms TTL=64
请求超时。
来自 192.168.10.51 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.10.51 的回复: 字节=32 时间<1ms TTL=64


3.2 断开eth1测试

同理,连接eth0,断开eth1,bond切换到eth0:

[[email protected] ~]#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: eth0
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: eth0
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 1
Permanent HW addr: 00:0c:29:66:30:36
Slave queue ID: 0
Slave Interface: eth1
MII Status: down
Speed: Unknown
Duplex: Unknown
Link Failure Count: 2
Permanent HW addr: 00:0c:29:66:30:40
Slave queue ID: 0


切换的时候也丢了一次包:

来自 192.168.10.51 的回复: 字节=32 时间=1ms TTL=64
来自 192.168.10.51 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.10.51 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.10.51 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.10.51 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.10.51 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.10.51 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.10.51 的回复: 字节=32 时间<1ms TTL=64
请求超时。
来自 192.168.10.51 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.10.51 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.10.51 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.10.51 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.10.51 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.10.51 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.10.51 的回复: 字节=32 时间<1ms TTL=64
请求超时。
来自 192.168.10.51 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.10.51 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.10.51 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.10.51 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.10.51 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.10.51 的回复: 字节=32 时间<1ms TTL=64



本文出自 “简明Linux” 博客,请务必保留此出处http://easylinux.blog.51cto.com/9732761/1950665

以上是关于Centos7多网卡绑定bond快速实践的主要内容,如果未能解决你的问题,请参考以下文章

CentOS7多网卡手动绑定

CentOS7多网卡手动绑定

centos7.2的双网卡怎么绑定

实现多网卡绑定bonding

Linux实现多网卡聚合绑定bonding

centos 7 下多网卡绑定