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-01 | 192.168.10.51 | CentOS 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快速实践的主要内容,如果未能解决你的问题,请参考以下文章