為RAC私人網路設定網卡Bonding
在RAC的安裝部署過程中,並不僅僅是簡單的安裝完成了事,整個安裝過程要考慮可能出現的單點問題,其中比較重要的是私人網路。
私人網路是RAC節點間通訊的通道,包括節點間的網路心跳資訊、Cache fusion傳遞資料區塊都需要通過私人網路。而很多的私人網路都僅僅是一塊單獨的網卡串連上交換器就完成了,更有甚者,直接使用伺服器間網卡互連的方式配置私人網路。這種部署方式簡單,但RAC投入使用後風險非常大,存在諸多單點如網卡、網線、交換器口、交換器。幾乎每個組件發生故障都會導致RAC split,所以建議為私人網路設定雙網卡bonding。
Linux雙網卡綁定實現負載平衡(Bonding雙網卡綁定)
Linux Bonding的初始狀態問題以及解決
多網卡綁定Bonding生產實戰
多網卡負載平衡(雙網卡做Bonding模式)
在CentOS 6.4下安裝Oracle 11gR2(x64)
Oracle 11gR2 在VMWare虛擬機器中安裝步驟
Debian 下 安裝 Oracle 11g XE R2
下面是我的配置步驟:
環境:
OS:CentOS release 6.4 (Final)
Oracle:11.2.0.4 RAC
網卡:4個 em1,em2,em3,em4,當前em1作為公有網卡,em3作為私人網卡已經啟用了,em2和em4閑置。
配置bond模組並載入(在2個節點執行):
編輯/etc/modprobe.d/bonding.conf加入內容:
[root@node2 ~]# vi /etc/modprobe.d/bonding.conf
alias bond0 bonding
[root@node2 ~]# modprobe -a bond0
驗證:
[root@node2 ~]# lsmod |grep bond
bonding 127331 0
8021q 25317 1 bonding
ipv6 321422 274 bonding,ip6t_REJECT,nf_conntrack_ipv6,nf_defrag_ipv6
編輯網卡設定檔,編輯成如下內容:
節點一:
Ifcfg-em2:
DEVICE=em2
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
Ifcfg-em4:
DEVICE=em4
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
Ifcfg-bond0:
DEVICE=bond0
MASTER=yes
BOOTPROTO=node
ONBOOT=yes
BONDING_OPTS="mode=1 miimon=100"
IPADDR=10.10.10.105
PREFIX=24
GATEWAY=10.10.10.1
節點二:
ifcfg-em2:
DEVICE=em2
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
ifcfg-em4:
DEVICE=em4
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
Ifcfg-bond0:
DEVICE=bond0
MASTER=yes
BOOTPROTO=node
ONBOOT=yes
BONDING_OPTS="mode=1 miimon=100"
IPADDR=10.10.10.106
PREFIX=24
GATEWAY=10.10.10.1
我這裡使用的是mode=1的主備網卡模式,平時只啟用一塊網卡,一旦主網卡發生故障,會切換鏈路到備網卡,其他也可以考慮4,6兩種mode。
修改完了設定檔之後,分別在2個節點啟動bond0:ifup bond0。
此時可以看到:
[root@node1 ~]# ifconfig
bond0 Link encap:Ethernet HWaddr C8:1F:66:FB:6F:CB
inet addr:10.10.10.105 Bcast:10.10.10.255 Mask:255.255.255.0
inet6 addr: fe80::ca1f:66ff:fefb:6fcb/64 Scope:Link
UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1
RX packets:9844809 errors:0 dropped:0 overruns:0 frame:0
TX packets:7731078 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:9097132073 (8.4 GiB) TX bytes:6133004979 (5.7 GiB)
em2 Link encap:Ethernet HWaddr C8:1F:66:FB:6F:CB
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:9792915 errors:0 dropped:0 overruns:0 frame:0
TX packets:7731078 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:9088278883 (8.4 GiB) TX bytes:6133004979 (5.7 GiB)
Interrupt:38
em4 Link encap:Ethernet HWaddr C8:1F:66:FB:6F:CB
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:51894 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:8853190 (8.4 MiB) TX bytes:0 (0.0 b)
Interrupt:36
網卡的bonding已經配置成功了。
測實驗證
此時可以測試分別斷掉em2 em4,在一個節點長ping另一個節點的私人IP,並結合/proc/net/bonding/bond0的資訊觀察primary slave的變化,可以發現當down一個網卡時ping不會中斷。
Bond0配置好之後,接下來一步就是把配置成RAC的私人網卡。
為了避免配置失敗,首先要備份好原來的設定檔。
以grid使用者在2個節點對$GRID_HOME/ grid/gpnp/noden/profiles/peer/profile.xml檔案執行備份:
cd /u01/app/11.2.0/grid/gpnp/noden/profiles/peer
cp profile.xml profile.xml.bk
[root@node2 peer]# ls
pending.xml profile_orig.xml profile.xml profile.xml.bk、
查看目前的私人網路設定:
node2-> oifcfg getif
em1 192.168.10.0 global public
em3 10.10.10.0 global cluster_interconnect
先添加新的私人網路,在任一節點執行即可:
node1-> oifcfg setif -global bond0/10.10.10.0:cluster_interconnect
這一步在執行時可能會報錯:
node1-> oifcfg setif -global bond0/10.10.10.0:cluster_interconnect
PRIF-33: Failed to set or delete interface because hosts could not be discovered
CRS-02307: No GPnP services on requested remote hosts.
PRIF-32: Error in checking for profile availability for host node2
CRS-02306: GPnP service on host "node2" not found.
這是因為gpnpd服務異常導致的。
解決方案:可以Kill掉gpnpd進程,GI會自動重新啟動gpnpd服務。
在2個節點執行:
[root@node2 ~]# ps -ef| grep gpnp
grid 4927 1 0 Sep22 ? 00:26:38 /u01/app/11.2.0/grid/bin/gpnpd.bin
grid 48568 46762 0 17:26 pts/3 00:00:00 tail -f /u01/app/11.2.0/grid/log/node2/gpnpd/gpnpd.log
root 48648 48623 0 17:26 pts/4 00:00:00 grep gpnp
[root@node2 ~]# kill -9 4927
[root@node2 ~]#
參考gpnpd.log
添加私人網路之後,我們按照如下步驟將原來的私人網路刪除:
首先停止並disable掉crs。
以root使用者在2個節點分別執行以下命令:
停止crs
crsctl stop crs
禁用crs
crsctl disable crs
修改hosts檔案,將私人IP地址改為新地址。
2個節點分別執行:
ping node1-priv
ping node2-priv
再啟動crs。
[root@node2 ~]# crsctl enable crs
CRS-4622: Oracle High Availability Services autostart is enabled.
[root@node2 ~]# crsctl start crs
刪除原來的私人網路:
node2-> oifcfg delif -global em3/10.10.10.0:cluster_interconnect
檢查驗證,配置成功了。
node2-> oifcfg getif
em1 192.168.10.0 global public
bond0 10.10.10.0 global cluster_interconnect
node2->
更多詳情見請繼續閱讀下一頁的精彩內容: