多网卡绑定实例

总共有7个配置文件,请参考5)
 
1)目前服务器有4张网卡
ifcfg-em1
ifcfg-em2
ifcfg-em3
ifcfg-em4
 
2)bond配置:
em1和em2网卡做bond4,配置桥接到cloudbr0  
IP配置为:172.28.101.11/24 网关为172.28.101.1
em3和em4网卡做bond4,直接配置IP
IP配置为:10.194.19.165/24 网关为10.194.19.254
 
 
 
 
注意:
1、假如上面4中网卡已经有了桥接的网卡,要先把网卡down掉(ifconfig bri-interfaces down),然后使用命令brctl delbr <bridge name>  #把桥接的网卡删除
2、注意这个配置文件假如是dos格式的,会导致启动失败,记得要使用命令
dos2unix file 转换下换行的字符
 
3)查看系统的桥接情况
[root@node-142 ~]# brctl show
bridge name    bridge id        STP enabled    interfaces
cloudbr0        8000.b82a72d04c2a    no        bond0
virbr0        8000.5254006df229    yes        virbr0-nic
 
4)最终IP显示为
[root@node-142 ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN  
    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: em1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP qlen 1000
    link/ether b8:2a:72:d0:4c:2a brd ff:ff:ff:ff:ff:ff
3: em2: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP qlen 1000
    link/ether b8:2a:72:d0:4c:2a brd ff:ff:ff:ff:ff:ff
4: em3: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond1 state UP qlen 1000
    link/ether b8:2a:72:d0:4c:2c brd ff:ff:ff:ff:ff:ff
5: em4: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond1 state UP qlen 1000
    link/ether b8:2a:72:d0:4c:2c brd ff:ff:ff:ff:ff:ff
7: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN  
    link/ether 52:54:00:6d:f2:29 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever
8: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN qlen 500
    link/ether 52:54:00:6d:f2:29 brd ff:ff:ff:ff:ff:ff
9: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue master cloudbr0 state UP  
    link/ether b8:2a:72:d0:4c:2a brd ff:ff:ff:ff:ff:ff
    inet6 fe80::ba2a:72ff:fed0:4c2a/64 scope link  
       valid_lft forever preferred_lft forever
10: bond1: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP  
    link/ether b8:2a:72:d0:4c:2c brd ff:ff:ff:ff:ff:ff
    inet 10.194.19.160/24 brd 10.194.19.255 scope global bond1
       valid_lft forever preferred_lft forever
    inet6 fe80::ba2a:72ff:fed0:4c2c/64 scope link  
       valid_lft forever preferred_lft forever
12: cloudbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP  
    link/ether b8:2a:72:d0:4c:2a brd ff:ff:ff:ff:ff:ff
    inet 172.28.101.11/24 brd 172.28.101.255 scope global cloudbr0
       valid_lft forever preferred_lft forever
    inet6 fe80::ba2a:72ff:fed0:4c2a/64 scope link  
       valid_lft forever preferred_lft forever
        
        
5)网卡配置文件
 
[root@mail bond]# cat ifcfg-em1
TYPE=Ethernet
BOOTPROTO=none
IPV6INIT=no
DEVICE=em1
ONBOOT=yes
NAME=bond0-slave
MASTER=bond0
SLAVE=yes
[root@mail bond]# cat ifcfg-em2
TYPE=Ethernet
BOOTPROTO=none
IPV6INIT=no
DEVICE=em2
ONBOOT=yes
NAME=bond0-slave
MASTER=bond0
SLAVE=yes
[root@mail bond]# cat ifcfg-em3
TYPE=Ethernet
BOOTPROTO=none
IPV6INIT=no
DEVICE=em3
ONBOOT=yes
NAME=bond1-slave
MASTER=bond1
SLAVE=yes
[root@mail bond]# cat ifcfg-em4
TYPE=Ethernet
BOOTPROTO=none
IPV6INIT=no
DEVICE=em4
ONBOOT=yes
NAME=bond1-slave
MASTER=bond1
SLAVE=yes
[root@mail bond]# cat ifcfg-bond0
DEVICE=bond0
NAME=bond0
TYPE=Bond
BONDING_MASTER=yes
ONBOOT=yes
BOOTPROTO=none
BONDING_OPTS="mode=4 miimon=100 xmit_hash_policy=1"
BRIDGE=cloudbr0
IPV6INIT=no
[root@mail bond]# cat ifcfg-bond1
DEVICE=bond1
NAME=bond1
TYPE=Bond
BONDING_MASTER=yes
ONBOOT=yes
BOOTPROTO=none
BONDING_OPTS="mode=4 miimon=100 xmit_hash_policy=1"
IPADDR=10.194.19.165
NETMASK=255.255.255.0
GATEWAY=10.194.19.254
IPV6INIT=no
[root@mail bond]# cat ifcfg-cloudbr0  
DEVICE=cloudbr0
NAME=cloudbr0
TYPE=Bridge
IPADDR=172.28.101.11
GATEWAY=172.28.101.1
PREFIX=24
ONBOOT=yes
BOOTPROTO=none
IPV6INIT=no
 
6)简单的介绍一下上面在加载bonding模块的时候,options里的一些参数的含义:
miimon: 监视网络链接的频度,单位是毫秒,我们设置的是100毫秒。
mode: bond模式,主要有以下几种,在一般的实际应用中,0和1用的比较多。
xmit_hash_policy:
 
xmit_hash_policy: 这个参数的重要性我认为仅次于mode参数,mode参数定义了分发模式 ,而这个参数定义了分发策略 ,文档上说这个参数用于mode2和mode4,我觉得还可以定义更为复杂的策略呢。
1.layer2: 使用二层帧头作为计算分发出口的参数,这导致通过同一个网关的数据流将完全从一个端口发送,为了更加细化分发策略,必须使用一些三层信息,然而却增加了计算开销,天啊,一切都要权衡!  
2.layer2+3: 在1的基础上增加了三层的ip报头信息,计算量增加了,然而负载却更加均衡了,一个个主机到主机的数据流形成并且同一个流被分发到同一个端口,根据这个思想,如果要使负载更加均衡,我们在继续增加代价的前提下可以拿到4层的信息。
3.layer3+4: 这个还用多说吗?可以形成一个个端口到端口的流,负载更加均衡。然而且慢! 事情还没有结束,虽然策略上我们不想将同一个tcp流的传输处理并行化以避免re-order或者re-transmit,因为tcp本身就是一个串行协议,比如Intel的8257X系列网卡芯片都在尽量减少将一个tcp流的包分发到不同的cpu,同样,端口聚合的环境下,同一个tcp流也应该使用本policy使用同一个端口发送,但是不要忘记,tcp要经过ip,而ip是可能要分段的,分了段的ip数据报中直到其被重组(到达对端或者到达一个使用nat的设备)都再也不能将之划为某个tcp流了。ip是一个完全无连接的协议,它只关心按照本地的mtu进行分段而不管别的,这就导致很多时候我们使用layer3+4策略不会得到完全满意的结果。可是事情又不是那么严重,因为ip只是依照本地的mtu进行分段,而tcp是端到端的,它可以使用诸如mss以及mtu发现之类的机制配合滑动窗口机制最大限度减少ip分段,因此layer3+4策略,很OK!
 
事实上这个选项的配置是 xmit_hash_policy=layer3+4 (目前配置为1,应该是等价于layer3+4 ,目前未确定)

posted @ 2017-03-15 17:07  遥远的绿洲  阅读(4198)  评论(0编辑  收藏  举报