linux rac 網路卡繫結

zhengbao_jun發表於2011-07-27

       RAC 對節點之間的內部通訊要求比較高,如果內部節點通訊出現問題,可能會導致節點的重啟。 所以保證RAC 節點之間的正常也是一項重要的工作。

 

       如果只用單網路卡來作為節點之間的通訊,就不能100%的保證節點之間的通訊正常,只要這個網路卡出現問題,RAC 節點之間的通訊就會出現問題。 所以這裡就提到了網路卡繫結,就是將多個物理網路卡繫結到一個虛擬網路卡上,由虛擬網路卡提供服務。

 

       網路卡繫結有幾種,常用主備模式和負載均衡模式。 但是在Linux 下,負載均衡的效果並不明顯。 網上的說法,AIXetherchannelhpuxapa能做到load balance 這個沒有條件去做測試。

      

       先舉例說明一下,假設一個伺服器上有4塊網路卡: eth0,eth1,eth2eth3.

可以將eth0 eth1 繫結成 bond0.  作為RACprivate-ip 提供內部通訊。

eth2eth3 繫結成bond1,作為public-ip

 

       這個如果在RAC安裝之間就進行了繫結, 就可以使用bond0bond1 來安裝RAC. 如果是在RAC 安裝之後進行的繫結,還需要修改RAC IP的相關引數。

 

如對private 網路卡進行繫結,修改如下:

[root@raw1 bin]# ./oifcfg getif

[root@raw1 bin]# ./oifcfg delif -global eth1

-- 重新新增

[root@raw1 bin]# ./oifcfg setif -global eth1/192.168.1.0:cluster_interconnect

--這裡原來是eth1,就需要修改成對應的繫結地址,如bond0

 

修改public IP的繫結也這樣修改,另外還需要修改一下VIP 因為VIP裡指定的publicIP.

 

如:

[root@raw1 bin]# ./srvctl modify nodeapps -n raw1 -A 10.85.10.222/255.255.255.0/eth0  --eth0 改成bond1

[root@raw1 bin]# ./srvctl modify nodeapps -n raw2 -A 10.85.10.223/255.255.255.0/eth0  --eth0 改成bond1

 

       具體的RAC IP 的修改可以參考我的Blog

              Oracle RAC 修改 IP 地址

              http://blog.csdn.net/tianlesoftware/archive/2010/03/09/5362925.aspx

 

 

       下面來看一下Linux Redhat 5.4 下的一個繫結測試。 2個網路卡繫結成bond0

 

1. /etc/sysconfig/network-scripts/下建立虛擬網路卡bond0的配置檔案ifcfg-bond0

 

[root@singledb doc]# cat /etc/sysconfig/network-scripts/ifcfg-bond0

DEVICE=bond0

BOOTPROTO=none

BROADCAST=192.168.6.255

IPADDR=192.168.6.200

NETMASK=255.255.255.0

ONBOOT=yes

TYPE=Ethernet

GATEWAY=192.168.6.254

USERCTL=no

IPV6INIT=no

PEERDNS=yes

 

引數說明:

DEVICE=物理裝置名
IPADDR=IP
地址

NETMASK=
掩碼值

NETWORK=
網路地址

BROADCAST=
廣播地址

GATEWAY=
閘道器地址

ONBOOT=[yes|no]
(引導時是否啟用裝置)

USERCTL=[yes|no]
(非root使用者是否可以控制該裝置)

BOOTPROTO=[none|static|bootp|dhcp]
(引導時不使用協議|靜態分配|BOOTP協議|DHCP協議)

HWADDR =
你的MAC地址

 

2. 分別修改原來網路卡配置檔案的資訊,刪除其中的IP 地址、子網掩碼等資訊

 

[root@singledb doc]# cat /etc/sysconfig/network-scripts/ifcfg-eth0

# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]

DEVICE=eth0

BOOTPROTO=none

ONBOOT=yes

TYPE=Ethernet

[root@singledb doc]# cat /etc/sysconfig/network-scripts/ifcfg-eth1

# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]

DEVICE=eth1

BOOTPROTO=none

ONBOOT=yes

TYPE=Ethernet

[root@singledb doc]#

 

3. 配置 驅動模組引數:/etc/modprobe.conf

/etc/modules.conf檔案中新增如下內容:

 

[root@singledb doc]# cat /etc/modprobe.conf  

alias eth0 pcnet32

alias eth1 pcnet32

alias scsi_hostadapter mptbase

alias scsi_hostadapter1 mptspi

alias scsi_hostadapter2 ata_piix

alias peth0 pcnet32

alias bond0 bonding

options bond0 miimon=100 mode=0

 

說明:

1)、miimon 是鏈路監測的時間間隔單位是毫秒,miimon=100的意思就是,每100毫秒檢測網路卡和交換機之間是否連通,如不通則使用另外的鏈路。

2)mode=0 表示負載均衡方式,兩塊網路卡都工作,需要交換機作支援  

         mode=1 表示冗餘方式,網路卡只有一個工作,一個出問題啟用另外的

        mode=6 表示負載均衡方式,兩塊網路卡都工作,不需要交換機作支援

 

看了一個網友的測試,在mode=6 下有丟包現在。 選擇mode =0 就可以了。

       Linux 雙網路卡繫結測試

       http://www.cnblogs.com/killkill/archive/2009/02/15/1390717.html

 

 

4. 設定開機繫結

先在Linux Terminal裡執行一下命令:

       ifenslave bond0 eth1 eth0

 

將虛擬網路卡進行繫結,然後將該引數新增到/etc/rc.local中,讓開機自動繫結:

 

[root@singledb doc]# cat /etc/rc.local

#!/bin/sh

 

touch /var/lock/subsys/local

ifenslave bond0 eth0 eth1

 

 

5. 重新網路

[root@singledb ~]# service network restart

繫結網路卡的啟動與關閉:

     # ifdown  bond0

     #ifup       bond0

 

 

       現在我們可以做測試,比如拔掉某個網路卡的網線,或者ifdown bond0還是可以正常工作的。

 

       我是在虛擬機器上做的測試。

1#ifdown eth0

       此時bond0還可以正常連線。

2#ifdown eth1

       此時bond0 的連線也中斷。

3#ifup eth0

       bond0 又恢復正常。

 

 

       這裡只是對Redhat 5.4 Linux 下的一個測試,Unix 下方法又不一樣,等以後有環境了,在測試一下。

 

 

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/235507/viewspace-703240/,如需轉載,請註明出處,否則將追究法律責任。

相關文章