Linux 双网卡绑定高可用说明
- 目标
为了提供网络的高可用性,我们可能需要将多块网卡绑定成一块虚拟网卡对外提供服务,这样即使其中的一块物理网卡出现故障,也不会导致连接中断。多网卡绑定这个词在不同的平台有不同叫法,在Linux下叫bonding,IBM称为etherchanel,broadcom叫team,但是名字怎么变,效果都是将两块或更多的网卡当做一块网卡使用,在增加带宽的同时也可以提高冗余性。比如我们在RHEL6下可以将eth0和eth1绑定成虚拟网卡bond0。
网卡配置文件说明:
# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0 # 设备名
BOOTPROTO=none #设置为none禁止DHCP,设置为static启用静态IP地址,设置为dhcp开启DHCP服务
IPADDR=192.168.0.21 # IP地址
NETMASK=255.255.255.0 #子网掩码
HWADDR=00:0C:29:CE:D9:79 # 网卡MAC地址
ONBOOT=yes # 是否开机启动
GATEWAY=192.168.0.1 #网关
TYPE=Ethernet #网络类型为:Ethernet 默认 以太网
# USERCTL=no #是否允许非root用户控制该设备,设置为no,只能用root用户更改 yes --非root用户可以控制该设备。
# IPV6INIT=no #禁止IPV6
# PEERDNS=yes #自动DNS
- 操作步骤
- 添加虚拟网卡
添加虚拟网卡bond0
vi /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.10.200
NETMASK=255.255.255.0
GATEWAY=192.168.10.1
- 配置本地网卡信息
1、配置eth0网卡信息
vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
TYPE=Ethernet
BOOTPROTO=static
ONBOOT="yes"
MASTER=bond0
SLAVE=yes
2、配置eth1网卡信息
vi /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE="eth1"
TYPE=Ethernet
BOOTPROTO=static
ONBOOT="yes"
MASTER=bond0
SLAVE=yes
- 模块加载
1、vi /etc/modprobe.d/dist.conf
alias bond0 bonding #添加 bond0 的驱动模块
options bond0 miimon=100 mode=0 #每100毫秒监控。
[root@mq02 ~]# modprobe bonding #加载模块
[root@mq02 ~]# lsmod |grep bonding #显示模块信息
bonding 127060 0
8021q 25058 1 bonding
ipv6 322541 147 bonding
miimon是指多久时间要检查网络一次,单位是ms(毫秒)这边的100,是100ms,即是0.1秒
mode共有七种(0~6),这里解释两个常用的选项。
mode=0:表示load balancing (round-robin)为负载均衡方式,两块网卡都工作。
mode=1:表示fault-tolerance (active-backup) 自动主备模式,其中一块网卡在工作(若eth0断掉),则自动切换到另一个块网卡(eth1做备份)。
- 重启网络服务,使配置生效
[root@mq02 ~]# service network restart
[root@mq02 ~]# cat /proc/net/bonding/bond0 可以看到当前网卡处于负载均衡模式
- 测试
1、当网卡处于负载均衡模式时,停掉其中一块网卡eth1时,网络还能继续通信。
[root@mq02 ~]# ifdown eth1
可以看到网络还可以继续ping通。
2、当网卡处于fault-tolerance (active-backup) 自动主备模式时,即mode=1时,停掉其中一块网卡时,不会出现网络中断,系统会按照/etc/rc.d/rc.local里指定网卡的顺序工作,机器仍能对外服务,起到了失效保护的功能。
[root@mq02 ~]# vi /etc/rc.d/rc.local
ifenslave bond0 eth0 eth1
[root@mq02 ~]# vi /etc/host.conf
order hosts,bind #指定网卡的顺序
下面可以看到网卡处于fault-tolerance (active-backup) 自动主备模式,当前Active的网卡为eth0。
停掉网卡eth0时,网卡切换到eth1,当前Active的网卡为eth1。
继续把eth0 up起来,可以看到下面eth0的状态是up的。
[root@mq02 ~]# ifup eth0