1. 自述
今天DZ君主讲的课题是:流媒体双网卡绑定之超实用绑定法
2. 案发背景
曾经DZ君刚入职不久,接下某个大盘,信通大队长是个高富帅的牛逼的人物,某日call me:这边政务网的视频怎么那么卡的啊,经常顿啊顿的,刚开始的时候平台只有两台媒体服务器,还是千兆单网卡,那个时候DZ君也不是很懂,二线给的方案是做双网卡绑定,那个时候还没有具体步骤方案,就知道百度找方法做。后来发现绑定模式有7种之多,DZ君找了其中一种方式做了,刚开始是好的,业务也正常,丫丫的,第二天业务就不正常了,发现同网段的居然ping不通了,有时候通,有时候又不通,真是蓝瘦香菇呀!
于是痛定思痛,经过几天的实验,DZ君终于找到了超实用,有效的方法。第二天高富帅就在群里说,视频丝滑的一米。果断666啊。今天DZ君就把这种方法分享给广大的监控朋友们!一起丝滑!
原理:
在监控系统中,由于流媒体服务器可能存在大量转发要求,双网卡聚合成为一种选择,实现负载均衡、线路冗余功能。下面就流媒体上采用异或策略调度模式的双网卡聚合方式配置方法介绍如下(其他服务器配置方法类似):
采用异或策略时有两种方式,
xmit_hash_policy=0 表示根据 Layer2,(源MAC地址 XOR 目标MAC地址) % slave数量。
xmit_hash_policy=1 表示Layer3+4, ((源IP XOR 目的IP)XOR(源端口 XOR 目的端口))% slave数量,
如果MS流量转发的接收者与MS不在同一个网络,则需要使用xmit_hash_policy=1 ——使用这种方式是比较优质的方式
3. 双网卡配置方法
系统: Centos x64位 可以用命令 cat /etc/issue 查看 (32位和64位都可以)
绑定模式: lay3+4(1) 同时交换机上也要配置这种模式
绑定网卡名:eth1 and eth2 or eth3 and eth4 最好不要用管理口eth0
1) 网卡bond0的配置
DEVICE=bond0
BOOTPROTO=static
TYPE=Ethernet
BROADCAST=192.168.1.255
IPADDR=192.168.1.1
NETWORK=192.168.1.0
NETMASK=255.255.255.0
NM_CONTROLLED=no
ONBOOT=yes
BONDING_OPTS="mode=2 xmit_hash_policy=1 miimon=100"
2) 网卡eth1的配置
DEVICE=eth1
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
USERCTL=no
SLAVE=yes
3) 网卡eth2的配置
DEVICE=eth2
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
USERCTL=no
SLAVE=yes
4)默认情况下,内核已支持bonding,只需要简单修改/etc/modprobe.conf(如果没有,则在/etc/modprobe.d/手动创建modprobe.conf这个文件) 这个配置文档就可以了:
vi /etc/modprobe.d/modprobe.conf
添加一行 alias bond0 bonding
5)重启网卡 service network restart
6)查看是否生效
命令: cat /proc/net/bonding/bond0
Bonding Mode: load balancing (xor)--------xor模式
Transmit Hash Policy: layer3+4 (1) --------3+4
MII Status: up-----------------------------up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: eth1----------------网卡eth1
MII Status: up----------------------网卡状态up
Speed: 1000 Mbps-----------------速率1000M
Duplex: full-------------------------全双工
Link Failure Count: 1
Permanent HW addr: 48:ea:63:67:b1:bd
Slave queue ID: 0
MII Status: up---------------------网卡状态up
Speed: 1000 Mbps----------------速率1000M
Duplex: full------------------------全双工
Link Failure Count: 1
Permanent HW addr: 48:ea:63:67:b1:be
Slave queue ID: 0
7) 查看bond0 and eth1 and eth2的硬件mac地址是否一致
[root@localhost ~]# ifconfig
bond0 Link encap:Ethernet HWaddr 48:EA:63:67:B1:BD
inet addr:173.200.2.99 Bcast:173.200.3.255 Mask:255.255.254.0
inet6 addr: fe80::4aea:63ff:fe67:b1bd/64 Scope:Link
UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1
RX packets:656079838493 errors:135 dropped:26668095 overruns:0 frame:134
TX packets:276199894685 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:150000
RX bytes:650473453115237 (591.6 TiB) TX bytes:311169287987543 (283.0 TiB)
eth1 Link encap:Ethernet HWaddr 48:EA:63:67:B1:BD
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:235935232796 errors:135 dropped:5002535 overruns:0 frame:134
TX packets:139210339998 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:150000
RX bytes:234400026297441 (213.1 TiB) TX bytes:156523007539641 (142.3 TiB)
Interrupt:18 Memory:cb400000-cb420000
eth2 Link encap:Ethernet HWaddr 48:EA:63:67:B1:BD
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:420144605699 errors:0 dropped:21665560 overruns:0 frame:0
TX packets:136989554700 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:150000
RX bytes:416073426820456 (378.4 TiB) TX bytes:154646280461524 (140.6 TiB)
Interrupt:20 Memory:ce500000-ce520000
4. 查看网卡流量
[root@localhost ~]# sar -n DEV 1 5--------命令后面 1 5 意思是:每一秒钟取一次值,取5次。
Average: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
Average: lo 2.00 2.00 0.14 0.14 0.00 0.00 0.00
Average: eth2 9075.40 6597.80 9479.70 7732.77 0.00 0.00 0.00
Average: slot0_GE4 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: slot0_GE3 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: slot0_GE2 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: slot0_GE1 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: eth1 4660.40 4596.00 5745.49 5019.62 0.00 0.00 0.00
Average: eth0 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: bond0 13735.80 11193.40 15225.19 12751.82 0.00 0.00 0.00
说明
***关注DZ君,让监控变得更简单!***