Linux bonding 和 网络组 Network Teaming的实现
作者:互联网
1、bonding
1.1、bonding聚合链路
模式 | 说明 |
---|---|
mod = 0 | (balance-rr) Round-robin policy(轮询)聚合口数据报文按包轮询从物理接口转发。 |
mod = 1 | (active-backup) Active-backup policy(主-备份策略)只有Active状态的物理接口才转发数据报文。 |
mod = 2 | (balance-xor) XOR policy(平衡策略)聚合口数据报文按源目MAC、源目IP、源目端口进行异或HASH运算得到一个值,根据该值查找接口转发数据报文 |
mod = 3 | broadcast(广播策略)这种模式的特点是一个报文会复制两份往bond下的两个接口分别发送出去 |
mod = 4 | (802.3ad) IEEE 802.3ad Dynamic link aggregation(IEEE 802.3ad 动态链接聚 合)在动态聚合模式下,聚合组内的成员端口上均启用LACP(链路汇聚控制协议)协议,其端口状态通过该协议自动进行维护 |
mod = 5 | (balance-tlb) Adaptive transmit load balancing(适配器传输负载均衡)在每个物理接口上根据当前的负载(根据速度计算)分配外出流量。 |
mod = 6 | (balance-alb) Adaptive load balancing(适配器适应性负载均衡)该模式包含了balance-tlb模式,同时加上针对IPV4流量的接收负载均衡,而且不需要任何switch(交换机)的支持。接收负载均衡是通过ARP协商实现的 |
mod=6和mod=0的区别
mod=6,先把eth0流量占满,再占eth1,….ethX;而mod=0的话,会发现2个口的流量都很稳定,基本一样的带宽。而mod=6,会发现第一个口流量很高,第2个口只占了小部分流量
说明
常用的模式为 0,1,3,6
mode 1、5、6 不需要交换机设置
mode 0、2、3、4需要交换机设置
active-backup、balance-tlb 和 balance-alb 模式不需要交换机的任何特殊配置。其他绑定模式需要配置交换机以便整合链接。如:Cisco 交换机需要在模式 0、2 和 3 中使用 EtherChannel,但在模式4中需要 LACP和 EtherChannel
1.2、bonding配置
详细帮助文档
/usr/share/doc/kernel-doc-version/Documentation/networking/bonding.txt
https://www.kernel.org/doc/Documentation/networking/bonding.txt
前提:虚拟机中有两块及以上的网卡
方法:
1.创建bonding设备的配置文件
[root@www.zhanglongjie.cn ~]#nmcli connection #查看当前连接
NAME UUID TYPE DEVICE
eth0 5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03 ethernet eth0
Wired connection 1 ba3434c4-7189-3fd6-9105-1b28769e2afc ethernet eth1
[root@www.zhanglongjie.cn ~]#vim /etc/sysconfig/network-scripts/ifcfg-bond0
[root@www.zhanglongjie.cn network-scripts]#cat ifcfg-bond0
NAME=bond0
TYPE=bond
DEVICE=bond0
BOOTPROTO=none
IPADDR=10.0.0.208
PREFIX=24
#miimon指定链路监测时间间隔。如果miimon=100,那么系统每100ms 监测一次链路连接状态,如果有一条线路不通就转入另一条线路
BONEING_OPTS="mode=1 miimon=100 fail_over_mac=1"
[root@www.zhanglongjie.cn ~]#vim /etc/sysconfig/network-scripts/ifcfg-eth0
[root@www.zhanglongjie.cn network-scripts]#cat ifcfg-eth0
DEVICE=eth0
NAME=eth0
BOOTPROTO=static
MASTER=bond0 # 需要和上面的ifcfg-bond0配置文件中的DEVICE的值对应
SLAVE=yes
ONBOOT=yes
[root@www.zhanglongjie.cn ~]#cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth1
[root@www.zhanglongjie.cn ~]#vim /etc/sysconfig/network-scripts/ifcfg-eth1
[root@www.zhanglongjie.cn network-scripts]#cat ifcfg-eth1
DEVICE=eth1
NAME=eth1
BOOTPROTO=static
MASTER=bond0 # 需要和上面的ifcfg-bond0配置文件中的DEVICE的值对应
SLAVE=yes
ONBOOT=yes
[root@www.zhanglongjie.cn ~]#nmcli connection reload
[root@www.zhanglongjie.cn ~]#nmcli connection up bond0
[root@www.zhanglongjie.cn ~]#cat /proc/net/bonding/bond0
2.nmcli实现 bonding
#添加bonding接口
[root@www.zhanglongjie.cn ~]#nmcli connection add type bond con-name mybond0 ifname bond0 mode active-backup ipv4.method manual ipv4.addresses 10.0.0.208/24
Connection 'mybond0' (fca1f616-d6da-4183-bc43-ce0543e95eaf) successfully added.
#添加从属接口,如无为从属接口提供连接名,则该名称是接口名称加类型构成
[root@www.zhanglongjie.cn ~]#nmcli connection add type bond-slave ifname eth0 master bond0
Connection 'bond-slave-eth0' (eaf5cafd-0026-46df-9cce-5d494a63eb5e) successfully added.
[root@www.zhanglongjie.cn ~]#nmcli connection add type bond-slave ifname eth1 master bond0
Connection 'bond-slave-eth1' (a135bec5-29c0-4bad-92bc-0c3d8eedc463) successfully added.
#要启动绑定,则必须首先启动从属接口
[root@www.zhanglongjie.cn ~]#nmcli con up bond-slave-eth0
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/5)
[root@www.zhanglongjie.cn ~]#nmcli con up bond-slave-eth1
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/5)
#启动绑定
[root@www.zhanglongjie.cn ~]#nmcli con up mybond0
Connection successfully activated (master waiting for slaves) (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/6)
[root@www.zhanglongjie.cn ~]#nmcli connection
NAME UUID TYPE DEVICE
mybond0 4287fb51-c99c-4653-b5b6-02d5605a7e34 bond bond0
bond-slave-eth0 056d3f09-fdb3-4d37-ab73-c795b2b7048c ethernet eth0
bond-slave-eth1 f17c9caa-2851-432a-906a-55c542aa7572 ethernet eth1
[root@www.zhanglongjie.cn ~]#ip a
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: eth0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc fq_codel master bond0 state UP group default qlen 1000
link/ether 00:0c:29:f7:6a:a4 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc fq_codel master bond0 state UP group default qlen 1000
link/ether 00:0c:29:f7:6a:a4 brd ff:ff:ff:ff:ff:ff
4: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 00:0c:29:f7:6a:a4 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.248/24 brd 10.0.0.255 scope global noprefixroute bond0
valid_lft forever preferred_lft forever
inet6 fe80::f5ed:db28:5ab2:cfd5/64 scope link noprefixroute
valid_lft forever preferred_lft forever
2、网络组 Network Teaming
2.1 Network Teaming
网络组:是将多个网卡聚合在一起方法,从而实现冗错和提高吞吐量
网络组不同于旧版中bonding技术,提供更好的性能和扩展性
网络组由内核驱动和teamd守护进程实现
多种方式 runner | 网络组特点 |
---|---|
broadcast | 启动网络组接口不会自动启动网络组中的port接口 |
roundrobin | 启动网络组接口中的port接口总会自动启动网络组接口 |
activebackup | 禁用网络组接口会自动禁用网络组中的port接口 |
loadbalance | 没有port接口的网络组接口可以启动静态IP连接 |
lacp (implements the 802.3ad Link Aggregation Control Protocol) | 启用DHCP连接时,没有port接口的网络组会等待port接口的加入 |
2.2、实现
#创建网络组接口
[root@www.zhanglongjie.cn ~]#nmcli con add type team con-name myteam0 ifname team0 config '{"runner":{"name": "loadbalance"}}' ipv4.addresses 10.0.0.248/24 ipv4.method manual
Connection 'myteam0' (67384c54-86de-4f4d-8c25-748e079f9aea) successfully added.
#创建port接口
[root@www.zhanglongjie.cn ~]#nmcli connection add con-name team0-eth0 type team-slave ifname eth0 master team0
Connection 'team0-eth0' (06a34689-ac38-4b5b-ba6d-e8a2f492b724) successfully added.
[root@www.zhanglongjie.cn ~]#nmcli connection add con-name team0-eth1 type team-slave ifname eth1 master team0
Connection 'team0-eth1' (2cd85406-1d05-4455-b88c-9983d4e7a498) successfully added.
#启动绑定
[root@www.zhanglongjie.cn ~]#nmcli con up myteam0
#启动从属接口
[root@www.zhanglongjie.cn ~]#nmcli connection up team0-eth0
[root@www.zhanglongjie.cn ~]#nmcli connection up team0-eth1
[root@www.zhanglongjie.cn ~]#nmcli connection
NAME UUID TYPE DEVICE
Wired connection 1 ba3434c4-7189-3fd6-9105-1b28769e2afc ethernet eth1
myteam0 67384c54-86de-4f4d-8c25-748e079f9aea team team0
team0-eth0 06a34689-ac38-4b5b-ba6d-e8a2f492b724 ethernet eth0
标签:www,cn,zhanglongjie,bonding,ff,Linux,eth0,root,Network 来源: https://blog.csdn.net/longjie_min/article/details/115793346