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