Oracle RAC環境下vip/public/private IP的區別
在Oracle RAC環境下,每個節點都會有多個IP地址,分別為Public/Private/Vip,這三個IP到底有啥區別呢?分別用在那些場合呢?來看看老外的回答。
1. private IP address is used only for internal clustering processing (Cache Fusion)
私有IP用於心跳同步,這個對於使用者層面,可以直接忽略,簡單理解,這個Ip用來保證兩臺伺服器同步資料用的私網IP。
2. VIP is used by database applications to enable fail over when one cluster node fails
虛擬IP用於客戶端應用,以支援失效轉移,通俗說就是一臺掛了,另一臺自動接管,客戶端沒有任何感覺。
這也是為什麼要使用RAC的原因之一,另一個原因,我認為是負載均衡。
3. public IP adress is the normal IP address typically used by DBA and SA to manage storage, system and database.
公有IP一般用於管理員,用來確保可以操作到正確的機器,我更願意叫他真實IP。
透過上述解釋,不難理解作為一個DBA,在配置tnsnames.ora時,
有些場合是要使用的vip,而有些場合又必須使用public IP。
例如,當你在定位一個資料庫的死鎖時,使用public ip,可以確保連到你想處理的機器,相反此時使用虛擬ip時,會出現不確定性,因為伺服器預設是開啟負載均衡的,也就是有可能你想連A機,系統卻給你分配了B機。
例如:
下面的例子就是使用的VIP
點選( 此處 )摺疊或開啟
-
proddb =
-
( DESCRIPTION =
-
( ADDRESS = ( PROTOCOL = TCP ) ( HOST = 138 . * . 1 . 81 ) ( PORT = 1521 ) )
-
( ADDRESS = ( PROTOCOL = TCP ) ( HOST = 138 . * . 1 . 82 ) ( PORT = 1521 ) )
-
( LOAD_BALANCE = yes )
-
( FAILOVER = ON )
-
( CONNECT_DATA =
-
( SERVER = DEDICATED )
-
( SERVICE_NAME = proddb )
-
( FAILOVER_MODE =
-
( TYPE = SELECT )
-
( METHOD = BASIC )
-
( RETRIES = 30 )
-
( DELAY = 5 )
-
)
-
)
-
)
下面的例子就是使用的Public IP,指定連線1機,注意紅色字型infodb1進一步限制連線的例項。
點選(
此處
)摺疊或開啟
proddb1
=
(
DESCRIPTION
=
(
ADDRESS_LIST
=
(
ADDRESS
=
(
PROTOCOL
=
TCP
)
(
HOST
=
138
.
*
.
1
.
83
)
(
PORT
=
1521
)
)
)
(
CONNECT_DATA
=
(
SERVICE_NAME
=
infodb
)
(
INSTANCE_NAME
=
infodb1
)
)
(
HS
=
OK
)
)
點選(
此處
)摺疊或開啟
$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
.
/
255
.
255
.
255
.
/
SCAN VIP name
:
scan1
,
IP
:
/
scan
-
ip
.
linuxidc
.
com
/
192
.
168
.
1
.
111
SCAN VIP name
:
scan2
,
IP
:
/
scan
-
ip
.
linuxidc
.
com
/
192
.
168
.
1
.
112
SCAN VIP name
:
scan3
,
IP
:
/
scan
-
ip
.
linuxidc
.
com
/
192
.
168
.
1
.
113
點選(
此處
)摺疊或開啟
[
grid
@
node1 admin
]
$
crs_stat
-
t
Name
Type
Target State
Host
------------------------------------------------------------
ora
.
.
.
.
ROUP
.
dg ora
.
.
.
.
up
.
type
ONLINE
ONLINE
node1
ora
.
.
.
.
ER
.
lsnr ora
.
.
.
.
er
.
type
ONLINE
ONLINE
node1
ora
.
.
.
.
N1
.
lsnr ora
.
.
.
.
er
.
type
ONLINE
ONLINE
node1
ora
.
.
.
.
VOTE
.
dg ora
.
.
.
.
up
.
type
ONLINE
ONLINE
node1
ora
.
.
.
.
VERY
.
dg ora
.
.
.
.
up
.
type
ONLINE
ONLINE
node1
ora
.
asm ora
.
asm
.
type
ONLINE
ONLINE
node1
ora
.
eons ora
.
eons
.
type
ONLINE
ONLINE
node1
ora
.
gsd ora
.
gsd
.
type
ONLINE
ONLINE
node1
ora
.
.
.
.
network ora
.
.
.
.
rk
.
type
ONLINE
ONLINE
node1
ora
.
.
.
.
SM1
.
asm application
ONLINE
ONLINE
node1
ora
.
.
.
.
E1
.
lsnr application
ONLINE
ONLINE
node1
ora
.
node1
.
gsd application
ONLINE
ONLINE
node1
ora
.
node1
.
ons application
ONLINE
ONLINE
node1
ora
.
node1
.
vip ora
.
.
.
.
t1
.
type
ONLINE
ONLINE
node1
ora
.
.
.
.
SM2
.
asm application
ONLINE
ONLINE
node2
ora
.
.
.
.
E2
.
lsnr application
ONLINE
ONLINE
node2
ora
.
node2
.
gsd application
ONLINE
ONLINE
node2
ora
.
node2
.
ons application
ONLINE
ONLINE
node2
ora
.
node2
.
vip ora
.
.
.
.
t1
.
type
ONLINE
ONLINE
node2
ora
.
oc4j ora
.
oc4j
.
type
ONLINE
ONLINE
node2
ora
.
ons ora
.
ons
.
type
ONLINE
ONLINE
node1
ora
.
prod
.
db ora
.
.
.
.
se
.
type
ONLINE
ONLINE
node1
ora
.
.
.
.
ry
.
acfs ora
.
.
.
.
fs
.
type
ONLINE
ONLINE
node1
ora
.
scan1
.
vip ora
.
.
.
.
ip
.
type
ONLINE
ONLINE
node1
點選(
此處
)摺疊或開啟
SQL
>
shutdown immediate
;
Database
closed
.
Database
dismounted
.
ORACLE instance shut down
.
點選(
此處
)摺疊或開啟
SQL
>
show
parameter listener
NAME
TYPE
VALUE
------------------------------------ ----------- ------------------------------
listener_networks string
local_listener string
(
DESCRIPTION
=
(
ADDRESS_LIST
=
(
ADDRESS
=
(
PROTOCOL
=
TCP
)
(
HOST
=
node1
-
vip
)
(
PORT
=
1521
)
)
)
)
remote_listener string rac_scan
:
1521
在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.linuxidc.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的原因。
範例:
上面介紹了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結合在一起的。那麼他們是如何工作的呢,先來看下下面這個工作原理圖:
這裡的Listener指的是vip,scan不是趴在vip上,而是當客戶端請求的時候,scan_ip看哪個伺服器閒置,此時就分配給哪個vip。
此時scan_ip在node1上,當node1例項關閉,就會出現在2節點上了。
關閉prod1例項。
從這個原理圖,可以看出,scan ip其實是oracle在客戶端與資料庫之間,新加的一個連線層,當有客戶端訪問時,連線到 SCAN IP LISTENER, 而SCAN IP LISTENER接收到連線請求時,會根據 LBA 演算法(所謂LBA演算法,就是least loaded instance),將該客戶端的連線請求,轉發給對應的instance上的VIP LISTENER,從而完成了整個客戶端與伺服器的連線過程。簡化如下:
client -> scan listener ->
local listener(vip)
-> 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.linuxidc.com:1521,而不需要在tnsnames.ora中進行額外設定。
經過以上設定後,RAC資料庫的每個節點的PMON程式,會用廣播的方式向每個SCAN LISTENER進行註冊,同時CRS的後臺程式ONS,會採集各個節點的負載狀況,通知scan listener,以便scan listener根據負載情況,將新連線分配到當前負載最低的節點上。
我當前兩個節點的remote_listener都是rac_scan:1521當用要DNS配置時,不同節點就可以設定成不通的remote_listener
以上,就是11gR2 RAC中,新增的SCAN IP 以及 SCAN LISTENER的全部內容了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29990276/viewspace-1321006/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle RAC修改public,private,vip scan IPOracle
- Public Private VIP的區別
- RAC中的各種IP-PUBLIC-VIP-Private-SCAN IP
- oracle 10g rac modify public ip,private ip,vip實驗步驟Oracle 10g
- Oracle RAC修改public, VIP, SCAN IPOracle
- Oracle RAC中的Public IP, VIP和Internal IP,SCANOracle
- 基於RedHat的RAC環境下修改ip及vipRedhat
- rac更改public and private的網路卡和ip
- ORACLE RAC 環境下修改IPOracle
- rac 新增第二public ip 和 vip
- Public與Private的區別 (轉)
- Oracle 12. 2 RAC public IP與vip 互換方法Oracle
- Oracle 11g RAC環境下Private IP修改方法及異常處理Oracle
- 詭異的事情,RAC,public ip通,vip不通
- How to modify Public ip and vip In 11gr2 Rac
- rac 改public 及vip IP---備份01
- java中public private protected default的區別Java
- Oracle RAC修改Scan IP,Public IP的方法Oracle
- 11g RAC 修改PUBLIC-IP、VIP、PRIV-IP、SCAN-IP
- RAC_TNS故障轉移負載均衡、SCAN IP、VIP、PUBLIC IP負載
- 轉載一個step by step change public-ip and vip on RAC
- rac環境vip在linux下的連線資訊Linux
- 【Java】private,protected,public,default的區別(形象生動)Java
- Oracle RAC修改IP和VIP地址Oracle
- Oracle 11.2 RAC改 Private IP步驟Oracle
- php class中public,private,protected,static的區別,以及例項PHP
- 【RAC】如何修改 private ip
- Oracle RAC 環境下的連線管理Oracle
- Solaris下修改RAC環境節點IP地址
- win rac public ip 修改
- oracle10g RAC更改主機public地址及vip地址Oracle
- RAC中修改IP, VIP
- Oracle 12.2 RAC修改public ip address或public ip(subnet (netmask) or interface)Oracle
- RAC 11.2.0.3 修改 Public IP
- 請說出作用域public,private,protected,以及不寫時的區別
- oracle 11g rac 修改VIP、scan VIP、priv IP操作文件Oracle
- ORACLE RAC環境下刪除節點Oracle
- vip/public ip斷網,導致instance crash