scan IP 學習
在Oracle 11gR2以前,如果資料庫採用了RAC架構,在客戶端的tnsnames中,需要配置多個節點的連線資訊,從而實現諸如負載均衡,failover等等RAC的特性。因此,當資料庫RAC叢集需要新增或刪除節點時,需要及時對客戶端機器的tns進行更新,以免出現安全隱患。
在11gR2中,為了簡化該項配置工作,引入了SCAN(Single Client Access Name)的特性,該特性的好處在於,在資料庫與客戶端之間,新增了一層虛擬的服務層,就是所謂的scan ip以及scan ip listener,在客戶端僅需要配置scan ip的tns資訊,透過scan ip listener,連線後臺叢集資料庫。這樣,不論叢集資料庫是否有新增或者刪除節點的操作,均不會對client產生影響。
下面,具體介紹下SCAN(Single Client Access Name)的架構以及配置。
首先,簡要的看下在11gR2中,安裝RAC發生的巨大變化,在10g以及11gR1的時代,安裝RAC的步驟是先安裝CRS,再安裝DB,而到了11gR2的時代,crs與asm被整合在一起,合稱為GRID,必須先安裝GRID後,才能繼續安裝DB,否則,你就跟11gR2的RAC無緣咯,呵呵。
而被11gR2引入的SCAN,就是包含在安裝grid的過程中。SCAN的定義,有兩種途徑:
1. 在DNS中定義域名。
2. 透過oracle提供的Grid Naming Server(GNS)實現DHCP自定義。
如果透過dns來定義,則需要在網路中定義3個SCAN IP地址,指向同一個域名,這3個ip地址必須處於同一個子網內,同時域名不能太長,否則您打字也麻煩不是,哈哈。另外,SCAN IP是由oracle clusterware管理的,因此在主機的叢集軟體(如IBM HACMP,HP SERVICE GUARD)中不能將此ip配置進去,類似於10g中的vip,在grid安裝前,此IP是無法ping通的。
範例:
scan-ip.dbaleading.com IN A 192.168.1.111
IN A 192.168.1.112
IN A 192.168.1.113
如果使用GNS的方式,則必須有DHCP服務,在cluster的配置過程中,將會自動向DHCP伺服器申請3個IP地址作為SCAN IP使用。
除了SCAN IP,在cluster的配置過程中,SCAN IP LISTENER服務也會被建立,每個SCAN IP對應一個SCAN IP LISTENER,並且,為了提升高可用性,3個SCAN IP以及其對應的SCAN IP LISTENER將被獨立的分配到各個節點上。如果cluster中其中某個執行scan ip的節點出現異常,則其餘兩個正常的scan ip節點將自動接管。注意,此處有個注意點,如果客戶端是11gR2的版本,則客戶端只需在tns中配置域名解析,即可實現failover,如果客戶端版本低於11gR2,則無法透過域名解析出3個SCAN IP地址,因此如果要實現failover,必須在客戶端的tns中配置3個SCAN IP的地址進行解析,這也是為何oracle強烈建議在使用11gR2資料庫時,客戶端也最好使用11gR2的原因。
範例:
$srvctl config scan_listener
SCAN Listener LISTENER_SCAN1 exists. Port: TCP:1521
SCAN Listener LISTENER_SCAN2 exists. Port: TCP:1521
SCAN Listener LISTENER_SCAN3 exists. Port: TCP:1521
$srvctl config scan
SCAN name: scan-ip, Network: 1/192.168.1.0/255.255.255.0/
SCAN VIP name: scan1, IP: /scan-ip.dbaleading.com/192.168.1.111
SCAN VIP name: scan2, IP: /scan-ip.dbaleading.com/192.168.1.112
SCAN VIP name: scan3, IP: /scan-ip.dbaleading.com/192.168.1.113
上回中,介紹了11gR2中 SCAN IP的配置,以及 SCAN IP LISTENER的配置及其作用。本章中,我們來詳細瞭解下,SCAN IP在資料庫中的配置方法,以及如何用SCAN IP,配置oracle所謂的自動負載平衡(該功能的實際使用,我們將在後續的章節中詳細討論)。
看了第一篇中的SCAN IP介紹,相信很多朋友都有這樣一個疑問,既然SCAN IP是跟資料庫instance無關的,例如一個12節點的RAC或者24節點的RAC,都只有3個SCAN IP,並且SCAN IP是隨機分佈在各個instance的,那麼,SCAN IP LISTENER如何監聽各個節點的資料庫呢,同時,該怎麼配置哪個instance去哪個SCAN IP LISTENER註冊呢。下面將一一解答。
首先,補充一個概念,在11gR2中,SCAN IP是作為一個新增IP出現的,原有的CRS中的VIP仍然存在,從這裡,就能看出一點端倪,在11gR2的RAC架構中,SCAN IP並非獨立存在的,而是和原有的 VIP結合在一起的。那麼他們是如何工作的呢,先來看下下面這個工作原理圖:
從這個原理圖,可以看出,scan ip其實是oracle在客戶端與資料庫之間,新加的一個連線層,當有客戶端訪問時,連線到 SCAN IP LISTENER, 而SCAN IP LISTENER接收到連線請求時,會根據 LBA 演算法(所謂LBA演算法,就是least loaded instance),將該客戶端的連線請求,轉發給對應的instance上的VIP LISTENER,從而完成了整個客戶端與伺服器的連線過程。簡化如下:
client -> scan listener -> local listener -> local instance
瞭解了這個過程以後,對SCAN IP的整體架構,就全部清楚了。剩下的,我們再來講一些技術細節。
SCAN IP 和 SCAN LISTENER是獨立於RAC的各個節點的,而每個節點的 VIP , VIP LISTENER是跟instance繫結的,每個節點的VIP LISTENER,會監聽自己所屬節點的instance。
因此,在資料庫中,我們需要設定remote_listener引數,這個引數設定很有講究,因為scan ip有3個,scan listener也有三個,但是他們對應的是同一個域名,因此,在資料庫中,我們需要使用easy connect naming method方式,就是在sqlnet.ora的配置檔案中,必須有NAMES.DIRECTORY_PATH=(tnsnames,ezconnect)存在。
另外,配置remote_listener的方式也有講究,以前的版本中,我們通常是在tnsnames.ora中寫好remote_listener的地址以及埠,但是對於scan listener,不能這麼做,必須按照標準格式,設定成REMOTE_LISTENER=SCAN:PORT的形式,以我的測試系統為例,就是 REMOTE_LISTENER=scan-ip.dbaleading.com:1521,而不需要在tnsnames.ora中進行額外設定。
經過以上設定後,RAC資料庫的每個節點的PMON程式,會用廣播的方式向每個SCAN LISTENER進行註冊,同時CRS的後臺程式ONS,會採集各個節點的負載狀況,通知scan listener,以便scan listener根據負載情況,將新連線分配到當前負載最低的節點上。
以上,就是11gR2 RAC中,新增的SCAN IP以及SCAN LISTENER的全部內容了,在下面一章中,我們將針對該新特性,開展一些擴充性的思考以及討論。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29320885/viewspace-1478556/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 修改scan ip
- 新增SCAN IP
- RAC重建SCAN IP
- RAC 增加SCAN IP
- JDBC connect SCAN IPJDBC
- Oracle RAC修改Scan IP,Public IP的方法Oracle
- 修改grid scan ip地址
- RAC改VIP和SCAN IP
- SCAN , virtual IP , and public IP must all be on the same subnet
- Oracle RAC修改public, VIP, SCAN IPOracle
- scan ip的手動切換
- rac 手動漂移scan ip vip
- ip命令學習
- Oracle RAC中的Public IP, VIP和Internal IP,SCANOracle
- Oracle 11G 修改scan_ipOracle
- RAC_網路_VIP漂移_SCAN IP
- Oracle 11g修改RAC SCAN IPOracle
- Oracle RAC修改public,private,vip scan IPOracle
- [Oracle] oracle11g scan ip relocateOracle
- How to update the IP address of the SCAN VIP
- RAC中的各種IP-PUBLIC-VIP-Private-SCAN IP
- 11g RAC 修改PUBLIC-IP、VIP、PRIV-IP、SCAN-IP
- tcp/ip 學習(一)TCP
- oracle學習文章(IP)Oracle
- IP核:XDMA學習
- 【RAC】如何修改SCAN IP的IP地址、名稱、埠等資訊
- Oracle 11gR2 RAC修改SCAN IPOracle
- oracle 11gR2 scan ip (DNS模式)OracleDNS模式
- RAC_TNS故障轉移負載均衡、SCAN IP、VIP、PUBLIC IP負載
- Oracle 11gR2 RAC修改SCAN IP地址Oracle
- oracle 11gR2 修改 DNS 方式 SCAN IPOracleDNS
- 11gr2 rac改IP系列之三:修改SCAN IP為同網段其它IP
- IP協議學習筆記協議筆記
- Oracle 11g RAC SCAN ip的原理及配置Oracle
- RAC 11.2.0.3 SCAN IP 配置 二度衝擊
- scan-ip連線出現“ORA-12545”
- Oracle 11g RAC 叢集 SCAN IP Listener說明Oracle
- oracle linux 11.2 rac grid infrastructure add scan ipOracleLinuxASTStruct