使用bind绑定多个网卡

由于服务器上对于可用性的要求都比较高,对于各项功能都会有有冗余设计,比如,磁盘、电源、网卡、甚至服务器本身等等,今天尝试做一下网卡绑定实现网卡的冗余。
网卡绑定的实现表面上看起来有些像是硬盘实现逻辑卷,都是通过创建一个逻辑设备来实现的。实现网卡的绑定其实还挺简单的,相比逻辑卷更容易理解。
首先,我们在/etc/sysconfig/network-scripts/目录下创建一个文件,文件名通常会叫ifcfg-bondxx,除了ifcfg-后面的内容其实都是可以自己定义的,但通常都会写成bind之类的,文件的内容其实和普通网卡配置文件的内容是一样的,就像这样

DEVICE=bond1
BOOTPROTO=static
IPADDR=172.20.16.121
GATEWAY=172.20.0.1
PREFIX=16
BONDING_OPTS="miimon=100 mode=1"

第一行的DEVICE是你给这个逻辑设备指定的名字,这个名字得和文件名的后半部分一样。
第二行是指定IP的获取方式,你也可以写dhcp让他自动获取,如果是自动获取,那么IPADDR、GATEWAY和PREFIX都不需要再填
最后一行是比较重要的,必须得填,这个是绑定网卡的选项,mode代表绑定网卡的工作模式,miimon是一个时间间隔,代表备份网卡每隔多久查询一次工作网卡的工作情况。单位是ms
以上只是第一步,逻辑网卡已经创建好了,下面就要指定那些网卡属于这个逻辑网卡了。也很简单,只要把你想加入这个逻辑网卡的物理网卡的配置文件稍微修改一下就可以了。就像这样

TYPE="Ethernet"
BOOTPROTO=static
NAME=eth1
MASTER=bond1
SLAVE=yes
USERCTL=no
DEVICE=eth1
ONBOOT=yesIPADDR=192.168.20.110
GATEWAY=192.168.0.1
PREFIX=16

其实后面的三行是无效的,不过我懒得删掉了,比较重要的是MASTER=bond1,SLAVE=yes,这两行指定了该网卡是属于逻辑网卡bond1的从属设备,DEVICE也是必须的,它指明了这个配置文件是给哪个网卡用的,其他的没有也可以,不过建议写上ONBOOT=yes
现在我们添加了第一个网卡到逻辑网卡,添加第二块的方法和第一个是一样的。换个文件而已。不在说。
然后我们就可以重启我们的网络服务了,在centos7中是用systemctl restart network之后就可以看看成果了。如果没有问题的话在执行ifconfig之后会看到下面的内容:

[root@cent7 network-scripts]# ifconfig
bond1: flags=5187<UP,BROADCAST,RUNNING,MASTER,MULTICAST>  mtu 1500inet 172.20.16.121  netmask 255.255.0.0  broadcast 172.20.255.255inet6 fe80::250:56ff:fe3b:6a38  prefixlen 64  scopeid 0x20<link>ether 00:50:56:3b:6a:38  txqueuelen 1000  (Ethernet)RX packets 212  bytes 21252 (20.7 KiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 13  bytes 1000 (1000.0 B)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0……eth1: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST>  mtu 1500ether 00:50:56:3b:6a:38  txqueuelen 1000  (Ethernet)RX packets 1224  bytes 176616 (172.4 KiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 265  bytes 73426 (71.7 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0eth2: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST>  mtu 1500ether 00:50:56:3b:6a:38  txqueuelen 1000  (Ethernet)RX packets 286  bytes 35478 (34.6 KiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 62  bytes 5878 (5.7 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

最明显的就是多了一个叫bond1的网卡,而且是有IP的,eth1和2有同样的mac地址,并且都没有IP,我们可以通过查看 /proc/net/bonding/bond1 这个文件中的内容来看bond1的工作情况,如果你乐意还可以手工下线一个网卡看看这个绑定的设备的工作情况。
还记得bond1配置文件中的BONDING_OPTS="miimon=100 mode=1"这一行吗 ,其实这个mode是有好几种的,不过我们常用的并不多,比如mode0是轮巡代表数据包会从头到尾经过每一个网卡,这种模式提供了负载均衡的能力和一定的容错性,还有mode3,这种模式数据包会独立通过每一个网卡,每个网卡也会给一个响应,具体体现就是数据的每一个请求都会得到多个回应。如果你想知道更多,下面有一个官方的文档。
https://www.kernel.org/doc/Documentation/networking/bonding.txt

使用team绑定多个网卡

在centos7中也可以使用bond进行多网卡绑定,不过centos7中有更好的实现方法,建议在centos7中使用。首先还是修改配置文件的方法进行绑定。其格式和步骤和bond并没有什么区别。看一下文件格式。
首先是team0也就是那个逻辑网卡配置文件的格式

DEVICE=team0
DEVICETYPE=Team
TEAM_CONFIG="{\"runner\":{\"name\":\"activebackup\"}}"
BOOTPROTO=none
IPADDR=172.20.16.121
PREFIX=16
NAME=team0
ONBOOT=yes

大部分内容都是一样的,只有第三行的TEAM_CONFIG有些差别,不过第三行除了activebackup这个单词,其他部分是不需要变动的,这个单词对应的就是mode部分,比如activebackup对应mode1,其他还有比如:broadcast roundrobin activebackup loadbalance
然后就是从网卡的配置,也是差不多的

DEVICE=eth1
DEVICETYPE=TeamPort
TEAM_MASTER=team0
NAME=eth1
ONBOOT=yes

配置文件修改之后就可以重启网络服务生效了。完成之后的ifconfig和之前的并无太大差别:

[root@cent7 network-scripts]# ifconfig
eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500ether be:27:a5:16:09:f8  txqueuelen 1000  (Ethernet)RX packets 1280  bytes 182697 (178.4 KiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 299  bytes 75980 (74.1 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0eth2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500ether be:27:a5:16:09:f8  txqueuelen 1000  (Ethernet)RX packets 359  bytes 42823 (41.8 KiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 72  bytes 6582 (6.4 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0…team0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 172.20.16.121  netmask 255.255.0.0  broadcast 172.20.255.255inet6 fe80::bc27:a5ff:fe16:9f8  prefixlen 64  scopeid 0x20<link>ether be:27:a5:16:09:f8  txqueuelen 1000  (Ethernet)RX packets 36  bytes 3261 (3.1 KiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 19  bytes 1326 (1.2 KiB)TX errors 0  dropped 2 overruns 0  carrier 0  collisions 0

或者也可以使用nmcli命令直接生成对应的配置文件

nmcli con add type team con-name team0 ifname team0 config '{"runner": {"name": "loadbalance"}}'
nmcli con mod team0 ipv4.addresses 192.168.1.100/24
nmcli con mod team0 ipv4.method manual
nmcli con add con-name eth1 type team-slave ifname eth1 master team0
nmcli con add con-name eth2 type team-slave ifname eth2 master team0
nmcli con up team0
nmcli con up eth1
nmcli con up eth2

上面的前三行是可以合成一行的,只是太长了,
add是增加
type team 表示增加的是一个team类型的
con-name team0 指定连接名称
ifname team0 表示指定接口,
config 这部分是配置信息,和之前手写配置文件内容格式相同
mod是修改指定连接
ipv4.addresses 指定ip地址
ipv4.method manual 表示手动指定ip,如果为空则自动选择(如果使用手动ip,此选项必须添加)
之后的两行
type team-slave 表示该设备是从属设备
master team0 指定设备连接属于谁
最后三行启用相关设备。
使用teamdctl team0 stat 可以查看team连接的详细信息

转载于:https://blog.51cto.com/13672361/2112273

Linux下实现多网卡绑定相关推荐

  1. Linux下实现一个网卡绑定多个IP地址

    在我们用Linux来架设Web服务器和FTP服务器的时候有可能会遇到在一台服务其上实现多个站点的需要(虚拟主机),这种情况下我们可以通过增加物理网卡,来解决.但是我们的服务器上会有多少多余的扩展槽呢? ...

  2. linux 双网卡bond命令,Linux下bond双网卡绑定(示例代码)

    bond,是一种双网卡绑定技术.即将多块物理网卡绑定成一个逻辑网卡,并实现网卡冗余.流量均衡等的一种可靠性强且高可用技术. 七种bond模式: 一.mod=0即banlance-rr(平衡轮循环策略) ...

  3. 在Linux中实现多网卡绑定

    在Linux中实现多网卡绑定 一.原理介绍: 1.什么是bonding? Linux bonding 驱动提供了一个把多个网络接口设备捆绑为单个的网络接口设置来使用,用于网络负载均衡及网络冗余: Li ...

  4. linux网卡永久生效命令,Linux/CentOS服务器 一个网卡绑定多IP地址(永久设置)

    Linux/CentOS服务器 一个网卡绑定多IP地址(永久设置) 有时我们在使用 Linux 服务器时需要配置多个IP地址.如果要配置多个IP地址是否需要多块网卡呢?答案是否定的.以 CentOS ...

  5. linux内核设置mac地址,Linux下如何修改网卡MAC地址

    Red Hat Linux下如何修改网卡MAC地址 OS版本:Red Hat Enterprise Linux AS4 核心:Kernel 2.6.9-42 网上有很多关于linux下修改MAC地址的 ...

  6. linux 安装水星无线网卡驱动,Linux下安装RTL8188CE网卡驱动(Mercury MW150U)

    先说明下我的系统: kernel: 3.0.0-32-generic 今天买了个无线网卡Mercury 150Mbps MW150U系列,我发现在我的笔记本的Ubuntu 12.10下不用安装驱动就能 ...

  7. linux 网卡强制千兆,linux下如何看网卡是千兆还是百兆的

    linux下如何看网卡是千兆还是百兆的方法如下:使用ethtool命令.ethtool是Linux下用于查询及设置网卡参数的命令.举例:[root@hvrhub~]#ethtooleth0Settin ...

  8. linux格式化gat分区,Linux 下使用udev永久绑定带库设备方法

    Linux 下使用udev永久绑定带库设备方法 在Linux 系统下配置带库设备,传统的方法是当安装完lin_tape驱动后会在/dev/路径下生成IBMtape,IBMchanger 这样的驱动设备 ...

  9. linux 服务器 安装网卡驱动,linux下安装编译网卡驱动的方法

    安装linux操作系统后发现没有网卡驱动,表现为 system → Administration → Network下Hardware列表为空. 以下为安装编译网卡驱动的过程,本人是菜鸟,以下是我从网 ...

最新文章

  1. 计时器StopWatch示例
  2. Maven项目不能编译jsp解决方法:Unable to compile class for JSP
  3. Python:pmml格式文件的简介、安装、使用方法(利用python将机器学习模型转为Java常用的pmml格式文件)之详细攻略
  4. 三面美团Java岗,java多线程匿名内部类
  5. 需要写的一些pycoe
  6. react月份选择控件_看我的案例:用react写一个日历控件!
  7. 关于滤波电容、去耦电容、旁路电容作用
  8. python怎么读取excel-python怎么读取excel表格
  9. matlab中的欧拉法,欧拉法函数
  10. servlet原理及访问时序图
  11. 微信小程序获取unionid
  12. 有限元基础及ANSYS应用 - 第8节 - 梁系结构的ANSYS分析
  13. 杨强教授漫谈《西部世界》、生成式对抗网络及迁移学习
  14. python打印数字对应的星号_python打印表格式数据-星号或注释
  15. 人有多大胆,地有多大产
  16. 下列关于python运算符的使用描述正确的是_以下关于 Python 字符串的描述中,正确的是( )...
  17. 《向上生长》读书摘记
  18. 数据分析在互联网金融的应用
  19. 到底怎么买保险?附保险配置实战
  20. 工业相机分类、相关参数含义

热门文章

  1. C++学习手记四:继承和多态
  2. tableView相关
  3. Flat - Music scores and guitar tabs editor(乐谱编辑器)
  4. *:学习心得——C语言----S1T62班 王作舟
  5. 数据库学习day_02:表格相关sql语句 / 表格数据相关sql语句 / sql中的数据类型 / 导入外部sql文件 / 去重.是否为null.and与or.in.[x,y]
  6. python中struct_Python的Struct模块,用法以及个人理解
  7. Kali Linux发布2020.1a版本
  8. mysql数据类型默认长度_mysql数据类型长度
  9. 注释工具_干货:PS工具介绍“计算工具+注释工具”
  10. go python php 压力测试_pyLot 基于python的压力测试工具