Bonding —— 绑定

就是将多块网卡(多个网络接口设备)绑定同一IP地址,对外提供网络服务;这些网卡之间可以实现负载均衡或高可用技术;


通过bonding,虚拟一个网卡对外提供服务及网络连接,所有的物理网卡都被修改为相同的MAC地址;


Bonding的工作模式:

Mode 0——负载均衡解决方案,其负载均衡的算法为balance-rr(round robin, 轮询);轮询策略意味着:从头到尾顺序的在每个slave接口上面发送数据包;该模式可以提供负载均衡以及容错的能力;


Mode 1——主备解决方案,(active-backup, master-backup),在此模式中,只有一个slave被激活,用于正常数据传输;而其他的接口都监视此接口的工作状态;当且仅当活动的slave接口失败的时候,才会从其他备份的接口中选择一个用于激活;该模式只能实现容错,无法进行负载均衡;


Mode 3——全广播解决方案,在所有的slave接口上传输全部报文;


miimon用来进行链路监测。如果miimon=100,则系统每100ms监测一次链路连接的状态;如果某个网络接口在miimon监测的结果为不连通,则进行故障倒换;


使用Bonding的时候,我们需要配置:

1.创建虚拟接口

2.选择miimon的监测时间及Bonding的工作模式;

3.选择用于此次Bonding的物理接口;


在/etc/sysconfig/network-scripts/ifcfg-bond0文件中指定Bonding的特性即可:

DEVICE=bond0

ONBOOT=yes

NM_CONTROLLED=no

BOOTPROTO=none

BONDING_OPTS="miimon=100 mode=0"

IPADDR=172.16.100.135

PREFIX=16


修改物理网卡的配置文件:/etc/sysconfig/network-scripts/ifcfg-eth1

DEVICE=eth1

BOOTROTO=none

MASTER=bond0

SLAVE=yes

USERCTL=no


修改物理网卡的配置文件:/etc/sysconfig/network-scripts/ifcfg-eth2

DEVICE=eth2

BOOTROTO=none

MASTER=bond0

SLAVE=yes

USERCTL=no


Bonding最好在CentOS6中实现。


在CentOS7中使用网络组来实现更加强大的容错;

nmcli



nmcli命令:

command‐line tool for controlling NetworkManager


nmcli  [ OPTIONS ] OBJECT { COMMAND | help }

OBJECT:connection | device 


device - show and manage network interfaces

COMMAND := { status | show | connect | disconnect | delete | wifi | wimax }


connection - start, stop, and manage network connections

COMMAND := { show | up | down | add | edit | modify | delete | reload | load

              }


          show:显示所有网络连接的属性信息;


          up|down:启用或禁用指定的网络连接;


          add:添加新的网络连接的;

          autoconnect yes|no:是否自动启动此连接,在配置文件中添加ONBOOT=yes|no;

          ifname IF_NAME:指定要创建连接的目标网络接口设备名称;

          con-name CON_NAME:为指定的网络接口设备创建一个连接名称;

          type TYPE:指定网络设备的接口类型


          示例:

          # nmcli connection add autoconnect yes ifname eno67109432 con-name eno666 type ethernet


          delete:删除指定的网络连接

          # nmcli connection delete CON_NAME


          示例:

          # nmcli connection delete eno666



          reload:不重启网络接口,但重新加载其配置文件中的配置信息;


          modify:

          modify [ id | uuid | path ] <ID> [+|-]<setting>.<property> <value>

          <setting>:

          802-3-ethernet.mtu

          connection.autoconnect

          ipv4.addresses

          ipv4.dns

          ipv4.gateway

          ipv4.method


          示例:

          # nmcli connection modify "系统\ eno50332208" ipv4.addresses 1.2.3.4/8 ipv4.dns 202.202.222.222 ipv4.gateway 1.1.1.1


nmtui:

nmtui - Text User Interface for controlling NetworkManager


CentOS6:

system-config-network[-tui]

setup --> 网络配置


注意:上述命令虽然可以使用简单的图形界面,但都是修改了配置文件,所以需要重启网络接口才能使配置生效;


网络组(Network Teaming)

网络组:是将多个网络接口设备聚合在一起的方法,其目的是实现冗余容错以及提高可用性和吞吐量;


网络组与以往的Bonding技术相比,具有更好的性能以及更好的扩展性;


在CentOS7中,网络组是由内核中的一个内核驱动和一个名为teamd的守护进程来实现的;


网络组可以实现多个工作模式,被称为“运行器(runner)”:

broadcast

roundrobin

activebackup

loadbalance

lacp(IEEE 802.3ad, Link Aggregation Control Protocol, 链路聚合控制协议)


网络组接口的特点:

1.启动网络组接口并不会自动启动网络组中的其他port接口;

2.启动网络组终端port接口,也不会自动启动网络组接口;

3.禁用网络组接口,则会立即禁用网络组中的port接口;

4.对于没有port接口的网络组接口而言,只能配置静态IP地址,不能设置从DHCP获取;如果设置了,网络组接口就会一直等待port接口的加入;


创建网络组接口的方法:

nmcli connection add type team con-name TEAM_CON_NAME ifname IF_NAME config JSON

JSON是用来指定runner的方式,其格式:

'{"runner": {"name": "METHOD"}}'


示例:

# nmcli connection add type team con-name class17 ifname class17 config '{"runner": {"name": "loadbalance"}}'


# nmcli connection modify class17 ipv4.addresses 172.16.203.205/16

# nmcli connection modify class17 ipv4.method manual


创建port接口

nmcli connection add type team-slave [con-name CON_NAME] ifname IF_NAME master TEAM_NAME


注意:如果不指定con-name,则默认的con-name为team-slave-IF_NAME


示例:

# nmcli connection add type team-slave con-name eno67109432 ifname eno67109432 master class17


# nmcli connection up class17

# nmcli connection up eno67109432

# nmcli device disconnect eno67109432


创建网络组也可以直接修改对应的连接的配置文件;

网络组接口:

DEVICE=class17

TEAM_CONFIG="{\"runner\": {\"name\": \"activebackup\"}}"

DEVICETYPE=Team

BOOTPROTO=none

NAME=class17

ONBOOT=yes

IPADDR=172.16.203.205

PREFIX=16


port接口:

NAME=team-slave-eno33554984

DEVICE=eno33554984

ONBOOT=yes

TEAM_MASTER=class17

DEVICETYPE=TeamPort