Oracle RAC中各種IP的作用

從Oracle 11g開始,安裝RAC至少需要7個IP地址,兩塊網卡(一塊公網網卡,一塊私網網卡),其中public、vip和scan都在同一個網段,使用的是公網網卡,private在另一個網段,使用的是私網網卡。主機名不能包含下橫線,如:RAC_01是不允許的。通過執行ifconfig -a檢查兩個節點的網絡設備名稱是否一致。另外,在配置了/etc/hosts文件後,在安裝RAC之前,公網、私網共4個IP可以ping通,其它3個IP不能ping通才是正常的。在安裝RAC時,其IP地址的規劃類似於下表所示:


Oracle RAC中各種IP的作用


其在/etc/hosts文件中的配置如下所示:

<code> 1[root@raclhr-12cR1-N2 ~]# more /etc/hosts
2127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
3::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
4#Public IP
5192.168.59.160            raclhr-12cR1-N1
6192.168.59.161            raclhr-12cR1-N2
7#Private IP
8192.168.2.100             raclhr-12cR1-N1-priv
9192.168.2.101             raclhr-12cR1-N2-priv
10#Virtual IP
11192.168.59.162            raclhr-12cR1-N1-vip
12192.168.59.163            raclhr-12cR1-N2-vip
13#Scan IP
14192.168.59.164            raclhr-12cR1-scan/<code>

下面分別介紹一下RAC環境中的幾種IP及其作用。

(一)Public IP

Public IP稱為公網IP,它是網卡上的真實IP。每個節點在安裝Oracle軟件之前都需要事先配置Public IP。Oracle通過Public IP對外提供網絡服務。如果RAC中Public IP所在的網卡設備故障,那麼該節點將無法繼續對外提供服務,所以,建議通過開啟操作系統層面的多網卡綁定技術來實現IP Failover。如果是雙節點RAC環境,那麼需要在tnsnames.ora文件中寫入對應兩個節點的Public IP、端口號以及通信協議。如果沒有開啟負載均衡功能(軟/硬件),那麼當tnsnames.ora文件中第一個ADDRESS對應的主機故障或關機,那麼在客戶端連接時,Oracle會等待一個網絡超時,然後繼續連接第二個ADDRSS對應的數據庫實例。即使RAC一個節點依然可以對外提供服務,用戶每次連接都需要等待幾秒鐘。網絡超時會讓用戶體驗相當不好。所以,在Oracle 10g RAC中VIP(Virtual IP)的出現完美地解決了這個問題。

(二)Private IP

對於Oracle集群,私網通信是非常重要的,因為節點和節點之間的通信絕大部分都是要通過私網來實現的。私網通信基本上可以分為兩種:第一種是集群層面之間的通信;第二種是數據庫實例之間的通信。第一種通信(例如:節點間的網絡心跳)的主要特點是持續存在、實時性要求高,但是數據量比較小,所以通過TCP/IP協議傳遞就可以了。第二種通信是緩存融合(Cache Fusion)造成的實例之間的數據傳輸,其特點是數據量很大,而且速度要求非常高,TCP/IP協議此時已經不能滿足要求了,所以需要使用UDP或者RDS,同時Oracle也一直建議用戶對集群的私網進行高可用性和負載均衡的配置。

與Public IP一樣,Private IP稱為私網IP或心跳IP,它也是網卡上的真實IP,每個節點在安裝Oracle集群軟件之前都需要事先配置Private IP。Private IP用於集群間多節點心跳同步和Cache Fusion等任務,在Oracle 12c中還需要擔任Flex ASM的任務。當然,如果不設置Private IP而是由Public IP也可以去完成這些任務。但是,這樣做只會使Public IP所在網卡負載過大,一旦網卡設備發生故障,集群將會分裂踢出掉一部分節點保證一致性,使RAC性能不穩定。對於Oracle 10g和11gR1版本的集群,Oracle並不提供私網的高可用性和負載均衡特性,而是建議用戶在操作系統層面配置(例如Linux bonding、AIX etherchannel等),從而開啟操作系統層面的多網卡綁定技術實現IP Failover。從Oracle 11.2.0.2版本開始推出的HAIP技術提供了私網的高可用性和負載均衡特性,從而替代了操作系統層面的網卡綁定技術,功能更強大更兼容。

(三)Virtual IP(VIP)

VIP是Oracle 10g RAC的新特性,稱為虛擬IP。VIP是在Public IP所在的網卡上由Oracle集群軟件虛擬出來的一個IP,需要和Public IP設置在同一個子網網段中。Oracle集群軟件安裝之前只需定義好(/etc/hosts文件)即可,而無需事先配置。在正常情況下,VIP和Public IP的功能是一模一樣的。後臺進程PMON對每個節點的VIP所在的監聽器註冊實例信息,本地監聽器中會看到兩個地址host,一個是Public IP,一個是VIP。當節點故障時,Oracle集群軟件會把VIP自動飄逸到其它節點上,但是本地監聽器卻沒有飄逸到其它節點上。客戶端tnsnames.ora文件中host選項不再需要配置Public IP而選擇配置VIP,這樣做的好處是在雙節點RAC架構中當第一個節點故障時,第二個節點會有兩個VIP,客戶端連接第一個VIP失敗後會立即連接第二個VIP對應的實例,整個切換過程是非常短暫的,用戶完全感受不到RAC架構中有節點故障。整個連接過程可以說對用戶是透明瞭。但是並非真正意義上的透明,用戶還是可以知道整個RAC架構是由多少個節點組成,所以,Oracle 11g RAC中推出了SCAN IP的新概念,可以實現對用戶連接的透明性,用戶不再需要知道整個RAC架構中是由多少個節點組成的。

VIP的特點:

(1)VIP是通過VIPCA腳本創建的。

(2)VIP作為Nodeapps類型的CRS Resource註冊到OCR中,並由CRS維護狀態。

(3)VIP會綁定到節點的Public網卡上,故Public網卡有兩個地址。

(4)當某個節點發生故障時,CRS會把故障節點的VIP轉移到其它節點上。

(5)每個節點的LISTENER會同時監聽Public網卡上的Public IP和VIP。

(6)客戶端的tnsnames.ora一般會配置指向節點的VIP。

可以使用如下命令讓節點1的VIP強制漂移到節點2上去:

<code>1crsctl relocate resource ora.raclhr-11gr2-n1.vip -n raclhr-11gR2-N2 -f/<code>

以下命令針對Oracle 11g版本之前:

<code>1crs_relocate ora.lhr-11gr2-rac1.vip -c lhr-11gR2-rac2 -f/<code>

(四)SCAN IP

從Oracle 11gR2 RAC開始引入SCAN(Single Client Access Name,集群的單客戶端訪問名稱)IP的概念,相當於在客戶端和數據庫之間增加一層虛擬的網絡服務層,即是SCAN IP和SCAP IP LISTENER。在客戶端的tnsnames.ora配置文件中,只需要配置SCAN IP,然後用戶即可訪問數據庫。客戶端通過SCAN IP、SCAN IP LISTENER來負載均衡地連接到RAC數據庫。同之前各版本的RAC相比,使用SCAN IP的好處就是,當後臺RAC數據庫添加、刪除節點時,客戶端配置信息無需修改。SCAN提供一個域名來訪問RAC,域名可以解析1個到3個(注意,最多3個)SCAN IP,可以通過DNS、GNS或/etc/hosts文件來解析實現。需要注意的是,SCAN IP、VIP和Public IP必須屬於同一子網。

(五)GNS VIP

GNS VIP是Oracle 11g RAC新特性。在傳統RAC架構中,Public IP、Private IP、Virtual IP、SCAN IP都是預先配好的。如果開啟了GNS服務只需要預先配置Public IP、Private IP即可,Virtual IP、SCAN IP都是由GNS服務從DHCP服務器動態獲取的。配置GNS服務需要事先配置DNS和DHCP服務,GNS VIP可以綁定在任意一個節點的Public網卡上來實現GNS服務,如果沒有配置GNS服務就不需要配置GNS VIP。配置起來相對傳統架構來說複雜一些,所以,在Oracle 11g RAC架構中很少會看到GNS VIP。12c Flex Cluster架構必須配置GNS VIP。

(六)HAIP(Highly Available IP)

在Oracle 11.2.0.2之前,私網的冗餘一般是通過在OS上做網卡綁定(如Bond等)來實現的,從Oracle 11.2.0.2版本開始推出HAIP(Highly Available IP)技術替代了操作系統層面的網卡綁定技術,功能更強大、更兼容。HAIP通過其提供的獨特的169.254.*網段的IP地址實現集群內部鏈接的高可用及負載均衡。所以,在11.2.0.2或更高版本安裝RAC的時候需要注意169.254.*的IP地址不能被佔用。有了HAIP技術則可以不再需要藉助任何第三方的冗餘技術來實現私網網卡的冗餘。

資源ora.cluster_interconnect.haip將會啟動一個到四個本地HAIP地址附在Private網絡適配器上(私網網卡)。通過HAIP完成Oracle RAC和ASM等內部通訊。如果某一個私有網卡物理損壞,那麼該網卡上的HAIP地址會漂移到其它的可用的私有網絡上。多個私網網卡可以在安裝階段定義,也可以在GRID配置完成之後,通過調用$GRID_HOME/bin/oifcfg setif工具(命令為:oifcfg setif -global eth2/192.168.1.0:cluster_interconnect)來配置HAIP。

HAIP的個數取決於GRID激活的私網網卡的個數。如果只有1塊私網網卡,那麼GRID將會創建1個HAIP。如果有兩塊私網網卡,那麼GRID將會創建兩個HAIP。若超過兩塊私網網卡則GRID創建4個HAIP。GRID最多支持4塊私網網卡,而集群實際上使用的HAIP地址數則取決於集群中最先啟動的節點中激活的私網網卡數目。如果選中更多的私網網卡作為Oracle的私有網絡,那麼多餘4個的不能被激活。

管理ora.cluster_interconnect.haip這個資源的是ohasd.bin進程。其對應的log位於$GRID_HOME/log/<nodename>/ohasd/ohasd.log以及$GRID_HOME/log/<nodename>/agent/ohasd/orarootagent_root/orarootagent_root.log這兩個位置。在HAIP資源online以後,通過操作系統命令ifconfig -a就能查看到多了類似於eth1:1的虛擬網卡,HAIP地址為169.254.X.X。當然也可以在數據庫級別通過GV$CLUSTER_INTERCONNECTS視圖查看HAIP的地址。HAIP對應的地址由系統自動分配,無法由用戶手工進行指定。/<nodename>/<nodename>

Oracle數據庫和ASM實例可以通過HAIP來實現私網通訊的高可用性和負載均衡。私網的流量會在這些私網網卡上實現負載均衡,如果某個網卡出現了故障,它上面的HAIP會自動切換到別的可用的私網網卡上,從而不影響私網的通訊。Windows平臺目前不支持HAIP技術。

在有些客戶環境下,私網是通過VLAN劃出來的,而出於網絡管理要求,VLAN的IP地址與網卡必須是綁定的,私網IP也必須是固定的IP地址(雖然按Oracle RAC的安裝要求,私網應該是獨立隔離的網絡),這時HAIP會無法分配,導致依賴它的ASM資源無法啟動。HAIP存在不少Bug,若不幸碰到,則可以將HAIP功能禁用掉。如果用戶使用的是操作系統級別的綁定或者沒有使用私網的綁定,那麼可以通過在RDBMS和ASM的參數文件中設置CLUSTER_INTECONNECTS指定私網地址將HAIP覆蓋(如果有多個私網地址,請用英文冒號分隔)。雖然說HAIP本身依然存在,但是ASM實例和RDBMS實例以後就不會使用HAIP。

轉載,原文鏈接:https://www.cnblogs.com/muzisanshi/p/12169588.html


分享到:


相關文章: