Posted on 2009-04-13 10:38
Prayer 閱讀(399)
評(píng)論(0) 編輯 收藏 引用 所屬分類:
SOCKET
這幾天公司里的服務(wù)器要用bonding,主要是做雙網(wǎng)卡的冗余,網(wǎng)上說的最多的就是《FreeBSD上雙網(wǎng)卡綁定提高帶寬的做法》,研究了一下,把結(jié)果 給大家說說, linux的很簡單,這里就不說了,照網(wǎng)上的資料就行了。freebsd的有點(diǎn)小難度,搞了幾天,最初用lagg模塊,照手冊(cè)里的“鏈路聚合與故障轉(zhuǎn)移” 部分做,做是做成的但是就是不能冗余,拔掉網(wǎng)絡(luò)就不通了,最后決定用ng_fecg來做,下面是過程。
FreeBSD上雙網(wǎng)卡綁定提高帶寬的做法里,第3部分,《在FreeBSD5上用ng_fec實(shí)現(xiàn)雙網(wǎng)卡綁定》,腳本的第一句就是/sbin/kldload ng_fec,要加載ng_fec ,如果你沒有安裝此模塊,是加載不上的。
#使用kldstat查看模塊,沒有ng_fec,需要安裝并加載(不用帶-v參數(shù),否則出來一堆,看都看不過來)
# kldstat
Id Refs Address Size Name
1 1 0xffffffff80100000 8a2e40 kernel
#cd /usr/src/sys/modules/netgraph/
把下面三個(gè)模塊安裝了
netgraph fec socket
安裝方法如下,直接進(jìn)入到相應(yīng)的目錄,然后:
#make
#make install
#ls /boot/modules
ng_fec.ko netgraph.ko ng_socket.ko
#vi /boot/defaults/loader.conf
找到ng_fec,ether,socket并改成YES,讓它可以自帶加載(經(jīng)測試不改系統(tǒng)也能自動(dòng)加載)
ng_ether_load="YES"
ng_fec_load="YES"
ng_socket_load="YES"
然后重啟系統(tǒng)。
再用kldstat查看加載情況
-bash-3.2$ kldstat
Id Refs Address Size Name
1 4 0xffffffff80100000 8a2e40 kernel
2 1 0xffffffff809a3000 104400 ng_fec.ko
3 3 0xffffffff80aa8000 10f0d8 netgraph.ko
4 1 0xffffffff811cb000 104000 ng_socket.ko
#vi /etc/fec.sh
#!/bin/sh
/usr/sbin/ngctl mkpeer fec dummy fec
/usr/sbin/ngctl msg fec0: add_iface '"bce0"'
/usr/sbin/ngctl msg fec0: add_iface '"bce1"'
/usr/sbin/ngctl msg fec0: set_mode_inet
/sbin/ifconfig fec0 promisc
/sbin/ifconfig bce0 promisc
/sbin/ifconfig bce1 promisc
/sbin/ifconfig fec0 此處寫IP netmask 0xfffffe00
/sbin/ifconfig fec0 media 1000baseTX mediaopt full-duplex
/sbin/ifconfig fec0 up
/sbin/route add default 此外寫默認(rèn)網(wǎng)關(guān)
#vi /etc/rc.local
/etc/fec.sh
記得把rc.conf設(shè)置網(wǎng)卡的語句屏蔽掉,然后重啟系統(tǒng)。
#ifconfig
bce0: flags=28943 mtu 1500
options=3b
ether 00:1e:0b:ed:64:1c
media: Ethernet autoselect (1000baseTX )
status: active
bce1: flags=28943 mtu 1500
options=3b
ether 00:1e:0b:ed:64:1c
media: Ethernet autoselect (1000baseTX )
status: active
lo0: flags=8049 mtu 16384
inet 127.0.0.1 netmask 0xff000000
fec0: flags=28943 mtu 1500
inet xxx.xxx.xxx.xxx netmask 0xfffffe00 broadcast xxx.xxx.xxx.255
ether 00:1e:0b:ed:64:1c
media: Ethernet none
status: active