一定要在服务管理中关闭NetworkManager服务并禁用自动启动。
第一步:先查看下本机网卡,使用命令到network-scripts 下
[root@root~]# cd /etc/sysconfig/network-scripts/
[root@root network-scripts~]# ll
total 202
-rw-r--r--1 root root 212 Mar 15 15:40 ifcfg-eth0
-rw-r--r-- 1 root root 212 Mar 15 15:40 ifcfg-eth1
第二步:复制ifcfg-bond0或者自己创造一个都可以,下面我介绍复制的命令
[root@root network-scripts]# cp ifcfg-eth0 ifcfg-bond0
复制好了查看一下
[root@root network-scripts]# ll
total 204
-rw-r--r-- 1 root root 212 Mar 23 15.42 ifcfg-bond0
-rw-r--r--1 root root 212 Mar 15 15:40 ifcfg-eth0
-rw-r--r-- 1 root root 212 Mar 15 15:40 ifcfg-eth1
第三步:编辑ifcfg-bond0、ifcfg-eth0、ifcfg-eth1 把里面内容替换一下内容
[root@root network-scripts]# vim ifcfg-bond0 //(IP、MASK、子网掩码按自己服务器的需求来)
BOOTPROTO=none
DEVICE=bond0
ONBOOT=yes
IPADDR=172.26.5.16
NETMASK=255.255.255.128
GATEWAY=172.26.5.126
USERCTL=no
TYPE=Ethernet
IPV6INIT=no
DNS1=172.26.1.1
[root@root network-scripts]# vim ifcfg-eth0
BOOTPROTO=none
DEVICE=eth0
ONBOOT=yes
MASTER=bond0
SLAVE=yes
USERCTL=no
TYPE=Ethernet
IPV6INIT=no
[root@root network-scripts]# vim ifcfg-eth1
BOOTPROTO=none
DEVICE=eth1
ONBOOT=yes
MASTER=bond0
SLAVE=yes
USERCTL=no
TYPE=Ethernet
IPV6INIT=no
第四步:模块加载
[root@root ~]# cd /etc/modprobe.d/
切换到modprobe.d目录下
[root@root ~modprobe.d]#vi dist.conf
#加载bonding模块,对外虚拟网络接口设备为bond0,在最后加入以下2行
alias bond0 bonding
options bond0 mode=1 miimon=100
(备注本人试用mode=0,因为本人的交换机上做了双活)
说明:(这个是上网抄的,自己最好了解下)
miimon是用来进行链路监测的。比如:miimon=100,单位是ms(毫秒)这边的100,是100ms,即是0.1秒那么系统每100ms监测一次链路连接状态,如果有一条线路不通就转入另一条线路;mode的值表示工作模式,他共有0,1,2,3四种模式,常用的为0、1两种。
mode共有七种(0~6),这里解释两个常用的选项。
mode=0:表示load balancing (round-robin)为负载均衡方式,两块网卡都在工作。
mode=1:表示fault-tolerance (active-backup)提供冗余功能,工作方式是主备的工作方式,其中一块网卡在工作(若eth0断掉),则自动切换到另一个块网卡(eth1做备份)。
bonding只能提供链路监测,即从主机到交换机的链路是否接通。如果只是交换机对外的链路down掉了,而交换机本身并没有故障,那么bonding会认为链路没有问题而继续使用。
第六步:启动eth0和eth1网卡(有的人可以不用做这一步,因为本人的服务器是刚刚装的,eth0和eth1网卡都没有启动)
[root@root network-scripts]# ifconfig eth0 up
[root@root network-scripts]# ifconfig eth1 up
第七步:重启网络服务,使配置生效
[root@root network-scripts]# service network restart
Shutting down interface bond0: [正确]
Shutting down interface eth0: [正确]
Shutting down interface eth1: [正确]
Shutting down loopback interface: [正确]
Bringing up loopback interface: [正确]
Error adding address 10.1.3.210 for bond0.
RTNETLINK answers: File exists [正确]
第八步:验证是否双网卡绑定成功方法一:
[root@root network-scripts]#ifconfig 成功的话显示的内容是bond0和em1、em2网卡的MAC地址是一样的
方法二:
[root@root network-scripts]# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009)
Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: eth0 // eth0主模式
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: em1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:c9:6d:18
Slave queue ID: 0
Slave Interface: em2
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:c9:6d:22
Slave queue ID: 0
网卡绑定技术已经出来很久,在不同的平台下的叫法不同而已,在Linux下叫bonding,IBM称为etherchanel,broadcom叫team,但是名字怎么变,效果都是将两块或更多的网卡当做一块网卡使用,在增加带宽的同时也可以提高冗余性,七种模式,一般使用较多的就是来提高冗余,分别和不同交换机相连,提高可靠性,但有时服务器带宽不够了也可以增加带宽,在这里用思科交换机和HP服务器相连,思科交换机做端口汇聚,服务器做网卡绑定,配置如下:
服务器为CentOS6.2cat /etc/sysconfig/network-scripts/ifcfg-bond0DEVICE=bond0BOOTPROTO=staticTYPE=ethernetONBOOT=yesIPADDR=192.168.0.32NETMASK=255.255.192.0GATEWAY=10.10.0.1cat /etc/sysconfig/network-scripts/ifcfg-eth0DEVICE=eth0BOOTPROTO=staticTYPE=ethernetONBOOT=yesMASTER=bond0SLAVE=yesUSERCTL=nocat /etc/sysconfig/network-scripts/ifcfg-eth1DEVICE=eth0BOOTPROTO=staticTYPE=ethernetONBOOT=yesMASTER=bond0SLAVE=yesUSERCTL=novim /etc/modprobe.d/dist.confalias bond0 bondingoptions bond0 miimon=100 mode=0(0,表示平衡负载双网卡工作,RR算法,mode=1,自动主备,其中一块工作)思科交换机相应端口配置端口聚合:R1#configure terminal R1(config)#int range g0/1 - 2 R1(config-int-range)#channel-group 1 mode on将交换机g0/1-2 与服务器相应端口相连,经测试,带宽明显增加
Redhat Linux的网络配置,基本上是通过修改几个配置文件来实现的,虽然也可以用ifconfig来设置IP,用route来配置默认网关,用hostname来配置主机名,但是重启后会丢失。
相关的配置文件
/ect/hosts 配置主机名和IP地址的对应
/etc/sysconfig/network 配置主机名和网关
/etc/sysconfig/network-scripts/ifcfg-eth0 eth0配置文件,eth1则文件名为ifcfg-eth1,以此类推
一、网卡配置
假设我们要配置主机名为test,eth0的IP地址192.168.168.1/24,网关地址192.168.168.250
则/etc/sysconfig/network文件内容如下:
NETWORKING=yes
HOSTNAME=testGATEWAY=192.168.168.250
eth0对应的配置文件/etc/sysconfig/network-scripts/ifcfg-eth0内容如下:
DEVICE=eth0
BOOTPROTO=staticIPADDR=192.168.168.1NETMASK=255.255.255.0TYPE=EthernetONBOOT=yes
二、单网卡绑定多个IP
有时,我们需要在一块网卡上配置多个IP,例如,在上面的例子中,我们还需要为eth0配置IP 192.168.168.2和192.168.168.3。那么需要再在/etc/sysconfig/network-scripts下新建两个配置文件:
ifcfg-eth0:0内容如下:
DEVICE=eth0:0
BOOTPROTO=staticIPADDR=192.168.168.2NETMASK=255.255.255.0ONBOOT=yes
ifcfg-eth0:1内容如下:
DEVICE=eth0:1
BOOTPROTO=staticIPADDR=192.168.168.3NETMASK=255.255.255.0ONBOOT=yes
三、多个网卡绑定成一块虚拟网卡
为了提供网络的高可用性,我们可能需要将多块网卡绑定成一块虚拟网卡对外提供服务,这样即使其中的一块物理网卡出现故障,也不会导致连接中断。比如我们可以将eth0和eth1绑定成虚拟网卡bond0
首先在/etc/sysconfig/network-scripts/下创建虚拟网卡bond0的配置文件ifcfg-bond0,内容如下
DEVICE=bond0
BOOTPROTO=noneBROADCAST=192.168.168.255IPADDR=192.168.168.1NETMASK=255.255.255.0NETWORK=192.168.168.0ONBOOT=yesTYPE=EthernetGATEWAY=192.168.168.250USERCTL=no
然后分别修改eth0和eth1的配置文件
ifcfg-eth0内容:DEVICE=eth0
BOOTPROTO=noneONBOOT=yesUSERCTL=noMASTER=bond0SLAVE=yes
ifcfg-eth1内容
DEVICE=eth1
BOOTPROTO=noneONBOOT=yesUSERCTL=noMASTER=bond0SLAVE=yes
因为linux的虚拟网卡是在内核模块中实现的,所以需要安装的时候已经装好该module。在/etc/modules.conf文件中添加如下内容(如果没有该文件,则新建一个):
alias bond0 bonding
options bond0 miimon=100 mode=1 primary=eth0
其中miimon=100表示每100ms检查一次链路连接状态,如果不通则会切换物理网卡
mode=1表示主备模式,也就是只有一块网卡是active的,只提供失效保护。如果mode=0则是负载均衡模式的,所有的网卡都是active,还有其他一些模式很少用到primary=eth0表示主备模式下eth0为默认的active网卡miimon是毫秒数,每100毫秒触发检测线路稳定性的事件。
mode 是ifenslave的工作状态。一共有7种方式:=0: (balance-rr) Round-robin policy: (平衡抡循环策略):传输数据包顺序是依次传输,直到最后一个传输完毕, 此模式提供负载平衡和容错能力。=1: (active-backup) Active-backup policy:(主-备份策略):只有一个设备处于活动状态。 一个宕掉另一个马上由备份转换为主设备。mac地址是外部可见得。 此模式提供了容错能力。 =2:(balance-xor) XOR policy:(平衡 策略): 传输根据原地址布尔值选择传输设备。 此模式提供负载平衡和容错能力。 =3:(broadcast) broadcast policy: (广播策略):将所有数据包传输给所有接口。 此模式提供了容错能力。 =4:(802.3ad) IEEE 802.3ad Dynamic link aggregation. IEEE 802.3ad 动态链接聚合:创建共享相同的速度和双工设置的聚合组。(我不是太懂。)=5:(balance-tlb) Adaptive transmit load balancing(适配器传输负载均衡):没有特殊策略,第一个设备传不通就用另一个设备接管第一个设备正在处理的mac地址,帮助上一个传。=6:(balance-alb) Adaptive load balancing: (适配器传输负载均衡):大致意思是包括mode5,bonding驱动程序截获 ARP 在本地系统发送出的请求,用其中之一的硬件地址覆盖从属设备的原地址。就像是在服务器上不同的人使用不同的硬件地址一样。这些选项可以用命令:# modinfo bonding 来查看
最后,在/etc/rc.local中加入
modprobe bonding miimon=100 mode=1
重启机器后可以看到虚拟网卡已经生效,可以通过插拔两个物理网卡的网线来进行测试,不过linux中网卡接管的时间好象比较长
from:
====================================================
需要说明的是如果想做成负载均衡,仅仅设置这里modprode bonding miimon=100 mode=0是不够的,还需要设置交换机的端口.
从原理分析一下(bond运行在mode 0下):mode 0下bond所绑定的网卡的IP都被修改成一样的mac地址,如果这些网卡都被接在同一个交换机,那么交换机的arp表里这个mac地址对应的端口就有多个,那么交换机接受到发往这个mac地址的包应该往哪个端口转发呢?正常情况下mac地址是全球唯一的,一个mac地址对应多个端口肯定使交换机迷惑了。所以mode0下的bond如果连接到交换机,交换机这几个端口应该采取聚合方式(cisco称为ethernetchannel,foundry称为portgroup),因为交换机做了聚合后,聚合下的几个端口也被捆绑成一个mac地址由于家里没有三层交换机,这里的试验留给网友自行验证了.====================================================
在 /etc/rc.local 文件里加上一行:
/root/bonding.sh
bonding.sh文件内容:
#!/bin/sh modprobe -r bonding modprobe bonding miimon=100 mode=6 ifconfig bond0 172.16.96.46 netmask 255.255.248.0 up route add default gw 172.16.100.1 bond0 #ifenslave bond0 eth0 eth1 eth2 eth3 eth4 eth5 ifenslave bond0 eth0 eth1 service network restart
http://candon123.blog.51cto.com/704299/402677/