為11gR2 Grid Infrastructure增加新的public網路
在某些環境下,執行11.2版本的RAC資料庫的伺服器上,連線了多個public網路,那麼就會有如下的需求:
- 給其他的,或者說是新的public網路增加新的VIP地址。
- 在新的public網路上增加SCAN VIP.
- 在新的VIP地址上配置監聽
- 在新的SCAN VIP地址上配置監聽
實際上從11.2版本開始,grid infrastructure(以下可能會簡寫為GI)就是一個完整的clusterware,不僅僅是用於資料庫,也可以用作應用軟體的高可用性。上述的4個需求中,第1個是毫無疑問需要的;第2個需求對執行在grid infrastructure上的應用是必要的;第3個需求在執行在grid infrastructure上的資料庫來說是必要的;第4個需求,是針對資料庫的,這個需求有點難度,因為在一套grid infrastructure中只能允許有一個SCAN LISTENER的存在,由於可以不透過SCAN IP而是直接透過VIP地址連線資料庫,所以這個新的SCAN監聽可以不需要,但是為了完整,我們可以用變通的方法來實現。
下面我們用一個例項來演示如何實現上述的所有需求。
先簡單介紹一下用於演示的環境:11.2.0.1 grid infrastructure for linux 32bit,共2個節點,節點名是xty3和xty4,沒有使用DNS(實際上在有DNS的環境下,也不太可能會有第2個public network),所以下面的演示是以沒有DNS來配置的。Grid Infrastructure用的是oracle使用者安裝的(實際生產建議用單獨的grid使用者),而RDBMS軟體也是用oracle安裝的。目前的private network是192.168.153.0,對應的網路卡裝置名是en1,public network是192.168.0.0,對應的網路卡裝置名是en0,打算新增加的public network是192.168.76.0,對應的網路卡裝置名是en2。
先看看/etc/hosts檔案的內容:
- 127.0.0.1 localhost.localdomain localhost
- ::1 localhost6.localdomain6 localhost6
- 192.168.0.134 xty3
- 192.168.0.144 xty4
- 192.168.153.134 xty3-priv
- 192.168.153.144 xty4-priv
- 192.168.0.135 xty3-vip
- 192.168.0.145 xty4-vip
- 192.168.0.155 xty-cluster-svip1
第1步 ,配置好新的public network的IP地址和網路路由。注意新的public network IP地址配好後,注意配置好網路路由。
第2步 ,在所有的節點上編輯/etc/hosts檔案,增加如下內容:
- 192.168.76.134 xty3-pub2
- 192.168.76.144 xty4-pub2
- 192.168.76.135 xty3-vip2
- 192.168.76.145 xty4-vip2
- 192.168.76.155 xty-cluster-svip2
192.168.76.134和192.168.76.144是兩個節點上新的public network的public ip,192.168.76.135和192.168.76.145是相對應的VIP地址,而192.168.76.155則是準備要在新的public network上增加的SCAN IP。而xty-cluster-svip2則是新增的SCAN名字。
第3步 ,增加新的public network上的vip地址,這一步比較簡單,用root使用者執行下面的命令:
- srvctl add vip -n xty3 -k 2 -A xty3-vip2/255.255.255.0/eth2
- srvctl add vip -n xty4 -k 2 -A xty4-vip2/255.255.255.0/eth2
在上述命令中,-n引數後面跟的是節點名(hostname); -k後面的參數列示第幾個網路,這裡是2,表示第2個public network。-A後面就是VIP地址的屬性了,格式為"VIP地址名/子網/網路卡裝置名"。
然後用crsctl來檢查,vip資源已經存在:
- [root@xty3 ~]# crsctl stat res -t | egrep "vip|network"
- ora.net1.network
- ora.net2.network
- ora.scan1.vip
- ora.xty3-vip2.vip
- ora.xty3.vip
- ora.xty4-vip2.vip
- ora.xty4.vip
- [root@xty3 ~]# srvctl config vip -n xty3
- VIP exists.:xty3
- VIP exists.: /xty3-vip2/192.168.76.135/255.255.255.0/eth2
- VIP exists.:xty3
- VIP exists.: /xty3-vip/192.168.0.135/255.255.255.0/eth0
- [root@xty3 ~]# srvctl config vip -n xty4
- VIP exists.:xty4
- VIP exists.: /xty4-vip2/192.168.76.145/255.255.255.0/eth2
- VIP exists.:xty4
- VIP exists.: /xty4-vip/192.168.0.145/255.255.255.0/eth0
ora.net2.network,ora.xty3-vip2.vip,ora.xty4-vip2.vip都是新增的資源。然後使用下面的命令啟動新增的VIP:
- [root@xty3 ~]# srvctl start vip -i xty3-vip2
- [root@xty3 ~]# srvctl start vip -i xty4-vip2
使用ifconfig 命令也可以確認IP地址已經附加到了新增的public network上,即en2上。所以在這裡, 新增public network上的VIP配置成功。
第4步 ,我們來實現第3個需求,也就是在VIP地址上增加監聽,這個步驟也很簡單,用GI的使用者(這個環境是oracle)執行下面的命令:
- [oracle@xty3 root]$ srvctl add listener -l LISTENER_N2 -s -p 1521 -k 2
- [oracle@xty3 root]$ srvctl config listener -a
- Name : LISTENER
- Network: 1, Owner: oracle
- Home: <crs home= "" >
- /oracle/app/grid on node(s) xty4,xty3
- End points: TCP:1521
- Name : LISTENER_N2
- Network: 2, Owner: oracle
- Home: </crs><crs home= "" >
- /oracle/app/grid on node(s) xty4,xty3
- End points: TCP:1521
- </crs>
啟動並檢查新增加的監聽:
- [oracle@xty3 root]$ srvctl start listener -l LISTENER_N2
- [oracle@xty3 root]$ lsnrctl status listener_n2
- LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 24-APR-2012 21:07:44
- Copyright (c) 1991, 2009, Oracle. All rights reserved.
- Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)( KEY =LISTENER_N2)))
- STATUS of the LISTENER
- ------------------------
- Alias LISTENER_N2
- Version TNSLSNR for Linux: Version 11.2.0.1.0 - Production
- Start Date 24-APR-2012 21:04:14
- Uptime 0 days 0 hr. 3 min . 30 sec
- Trace Level off
- Security ON : Local OS Authentication
- SNMP OFF
- Listener Parameter File /oracle/app/grid/network/admin/listener.ora
- Listener Log File /oracle/app/grid/log/diag/tnslsnr/xty3/listener_n2/alert/log.xml
- Listening Endpoints Summary...
- (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)( KEY =LISTENER_N2)))
- (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.76.135)(PORT=1521)))
- The listener supports no services
- The command completed successfully
可以看到,監聽LISTENER_N2增加成功。增加監聽也可以使用netca圖形介面操作,但還是命令列操作快捷。不過從上面的輸出可以看到,新的public network上的監聽並沒有監聽到相對應的public固定IP。實際上他們監聽hostname對應的IP地址。這是由BUG 8678541引起,在11.2.0.2及以上版本中已經修復。
第5步 ,我們來實現第2個需求,也就是增加SCAN IP,實際上在GI中,只能有一個SCAN,所以新增加的“SCAN IP”,實際上應稱為“Application IP”,用兩種方法,先介紹簡單的,用root命令執行:
- [root@xty3 ~]# appvipcfg create -network=2 -ip=192.168.76.155 -vipname=xty-cluster-svip2 - user =root
- Production Copyright 2007, 2008, Oracle. All rights reserved
- 2012-04-24 21:29:23: Skipping type creation
- 2012-04-24 21:29:23: Create the Resource
- 2012-04-24 21:29:23: Executing cmd: /oracle/app/grid/bin/crsctl add resource xty-cluster-svip2 -type app.appvip.type -attr USR_ORA_VIP=192.168.76.155,START_DEPENDENCIES=hard(ora.net2.network) pullup(ora.net2.network),STOP_DEPENDENCIES=hard(ora.net2.network),ACL= 'owner:root:rwx,pgrp:root:r-x,other::r--,user:root:r-x'
然後檢視並啟動資源:
- [root@xty3 ~]# crsctl stat res -t | grep svip2
- xty-cluster-svip2
- [root@xty3 ~]# crsctl start resource xty-cluster-svip2
- CRS-2672: Attempting to start 'xty-cluster-svip2' on 'xty3'
- CRS-2676: Start of 'xty-cluster-svip2' on 'xty3' succeeded
使用ifconfig命令可以確認IP地址已經加到新的public network上了,由於這個是類似”SCAN IP“的地址,只能在一個節點上起。我們可以用下面的命令來調整這個IP到另一個節點上:
- [root@xty3 ~]# crsctl relocate resource xty-cluster-svip2
- CRS-2673: Attempting to stop 'xty-cluster-svip2' on 'xty3'
- CRS-2677: Stop of 'xty-cluster-svip2' on 'xty3' succeeded
- CRS-2672: Attempting to start 'xty-cluster-svip2' on 'xty4'
- CRS-2676: Start of 'xty-cluster-svip2' on 'xty4' succeeded
- [root@xty3 ~]# crsctl stat res xty-cluster-svip2 -p | grep -i type
- TYPE=app.appvip.type
- [root@xty3 ~]# crsctl stat type app.appvip.type
- TYPE_NAME=app.appvip.type
- BASE_TYPE=cluster_resource
這個實現”SCAN IP“功能的application ip,不屬於VIP,也不屬於SCAN,因此這個資源是srvctl不能管理的。
下面介紹用第2種方法來實現新的public network上的"SCAN IP"。
把上面建好的資源xty-cluster-svip2停掉並刪除:
- [root@xty3 ~]# crsctl stop res xty-cluster-svip2
- CRS-2673: Attempting to stop 'xty-cluster-svip2' on 'xty4'
- CRS-2677: Stop of 'xty-cluster-svip2' on 'xty4' succeeded
- [root@xty3 ~]# crsctl delete res xty-cluster-svip2
然後執行下面的命令生成現有的SCAN IP的屬性:
- [root@xty3 ~]# crsctl stat res ora.scan1.vip -p > /tmp/1.txt
接著手工修改一下/tmp/1.txt檔案,下面列出修改的部分:
- NAME =ora.n2_scan1.vip
- SCAN_NAME=xty-cluster-svip2
- DESCRIPTION=Oracle SCAN VIP resource on network2
- SCAN_NAME=xty-cluster-svip2
- START_DEPENDENCIES=hard(ora.net2.network) dispersion:active(type:ora.scan_vip.type) pullup(ora.net2.network)
- STOP_DEPENDENCIES=hard(ora.net2.network)
- USR_ORA_VIP=192.168.76.155
然後配置SCAN並啟動:
- [root@xty3 ~]# crsctl add resource ora.n2_scan1.vip -type ora.scan_vip.type -file /tmp/1.txt
- [root@xty3 ~]# srvctl config scan
- SCAN name : xty-cluster-svip2, Network: 2/192.168.76.0/255.255.255.0/eth2
- SCAN VIP name : n2_scan1, IP: /xty-cluster-svip2/192.168.76.155
- SCAN VIP name : scan1, IP: /xty-cluster-svip1/192.168.0.155
- [root@xty3 ~]# crsctl start resource ora.n2_scan1.vip
- CRS-2672: Attempting to start 'ora.n2_scan1.vip' on 'xty3'
- CRS-2676: Start of 'ora.n2_scan1.vip' on 'xty3' succeeded
- [root@xty3 ~]# crsctl relocate resource ora.n2_scan1.vip
- CRS-2673: Attempting to stop 'ora.n2_scan1.vip' on 'xty3'
- CRS-2677: Stop of 'ora.n2_scan1.vip' on 'xty3' succeeded
- CRS-2672: Attempting to start 'ora.n2_scan1.vip' on 'xty4'
- CRS-2676: Start of 'ora.n2_scan1.vip' on 'xty4' succeeded
注意第2種方法使用的SCAN VIP資源的名字跟第1種方法不一樣,在實際使用中,可以根據需要選擇即可。不過注意在第2種方法中不要用ora.scan1_n2.vip這樣的名字,否則srvctl檢視這個資源時會出錯。
看上去srvctl顯示的結果有點異常,只有一個SCAN Name,是新加的那個。不過至少可以用srvctl看到了,並且這也是可以理解的,因為目前就只能支援一個SCAN Name,在本文僅處於研究的目的,所以這種方法不建議使用於生產,建議使用上面的第1種方法。
到目前為止,新的public network上的SCAN已經增加成功。
第6步 ,在新配的SCAN VIP上配置一個SCAN LISTENER。注意不能使用srvctl add listener命令來配置,因為這種方式實際上是在所有的節點上都加了可同時啟動的監聽,需要增加的是scan listener。不過srvctl add scan_listener是不會成功的,因為它會檢測到在1521埠上已經有了SCAN Listener,即使是在高版本的GI中,這個命令增加了-k 引數指定network,也是會報錯的。因此只能使用類似上面第2種增加SCAN VIP的方法來增加新的SCAN Listener,不過這次需要用GI的安裝使用者(此環境是oracle使用者)來執行操作:
- [oracle@xty3 root]$ crsctl stat res ora.LISTENER_SCAN1.lsnr -p > /tmp/2.txt
修改/tmp/2.txt檔案,修改的行如下:
- NAME = ora.LISTENER_N2_SCAN1.lsnr
- DESCRIPTION=Oracle SCAN listener resource on network 2
- START_DEPENDENCIES=hard( ora.n2_scan1.vip ) dispersion:active( type:ora.scan_listener.type ) pullup( ora.n2_scan1.vip )
- STOP_DEPENDENCIES=hard(intermediate: ora.n2_scan1.vip )
然後配置SCAN Listener並啟動:
- [oracle@xty3 root]$ crsctl add resource ora.listener_n2_scan1.lsnr -type ora.scan_listener.type -file /tmp/2.txt
- [oracle@xty3 root]$ srvctl config scan_listener
- SCAN Listener LISTENER_N2_SCAN1 exists. Port: TCP:1521
- SCAN Listener LISTENER_SCAN1 exists. Port: TCP:1521
- [oracle@xty3 root]$ crsctl start resource ora.LISTENER_N2_SCAN1.lsnr
- CRS-2672: Attempting to start 'ora.LISTENER_N2_SCAN1.lsnr' on 'xty4'
- CRS-2676: Start of 'ora.LISTENER_N2_SCAN1.lsnr' on 'xty4' succeeded
可以看到新增的SCAN Listener成功在節點xty4上啟動,當然在之前的操作步驟中,新的SCAN VIP即N2_SCAN2是啟動到了xty4上,所以這個監聽也會在xty4上。
我們把新的SCAN VIP調整到節點xty3上:
- [root@xty3 ~]# crsctl relocate resource ora.n2_scan1.vip -f
- CRS-2673: Attempting to stop 'ora.LISTENER_N2_SCAN1.lsnr' on 'xty4'
- CRS-2677: Stop of 'ora.LISTENER_N2_SCAN1.lsnr' on 'xty4' succeeded
- CRS-2673: Attempting to stop 'ora.n2_scan1.vip' on 'xty4'
- CRS-2677: Stop of 'ora.n2_scan1.vip' on 'xty4' succeeded
- CRS-2672: Attempting to start 'ora.n2_scan1.vip' on 'xty3'
- CRS-2676: Start of 'ora.n2_scan1.vip' on 'xty3' succeeded
- CRS-2672: Attempting to start 'ora.LISTENER_N2_SCAN1.lsnr' on 'xty3'
- CRS-2676: Start of 'ora.LISTENER_N2_SCAN1.lsnr' on 'xty3' succeeded
- [root@xty3 ~]# su oracle
- [oracle@xty3 root]$ lsnrctl status LISTENER_N2_SCAN1
- LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 24-APR-2012 23:29:49
- Copyright (c) 1991, 2009, Oracle. All rights reserved.
- Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)( KEY =LISTENER_N2_SCAN1)))
- STATUS of the LISTENER
- ------------------------
- Alias LISTENER_N2_SCAN1
- Version TNSLSNR for Linux: Version 11.2.0.1.0 - Production
- Start Date 24-APR-2012 23:29:32
- Uptime 0 days 0 hr. 0 min . 17 sec
- Trace Level off
- Security ON : Local OS Authentication
- SNMP OFF
- Listener Parameter File /oracle/app/grid/network/admin/listener.ora
- Listener Log File /oracle/app/grid/log/diag/tnslsnr/xty3/listener_n2_scan1/alert/log.xml
- Listening Endpoints Summary...
- (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)( KEY =LISTENER_N2_SCAN1)))
- (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.76.155)(PORT=1521)))
- The listener supports no services
- The command completed successfully
至此所有的操作已經完成。然後重啟一下所有節點的crs,驗證一下重啟後是否正常。在關閉第1個節點的crs之後,第2個節點上順利接管了所有的VIP地址,並且所有的SCAN Listener也執行到了節點2上。然後重啟兩個節點的crs後,一切看起來比較正常。唯一的不足是由於BUG 8678541引起的問題,使新的public network的VIP地址上的監聽,監聽到了錯誤的IP地址上。
以上的操作全部是針對Grid Infrastructure,不過在資料庫上,還需要調整引數LISTENER_NETWORKS,而不能使用local_listener和remote_listener引數。這個引數的設定,舉例如下:
- alter system set LISTENER_NETWORKS= '((NAME=network1)(LOCAL_LISTENER=192.168.0.135:1521)(REMOTE_LISTENER=xty-cluster-svip1:1521))' , '((NAME=network2)(LOCAL_LISTENER=192.168.76.135:1521)(REMOTE_LISTENER=xty-cluster-svip2:1521))' sid= 'inst1' ;
- alter system set LISTENER_NETWORKS= '((NAME=network1)(LOCAL_LISTENER=192.168.0.145:1521)(REMOTE_LISTENER=xty-cluster-svip1:1521))' , '((NAME=network2)(LOCAL_LISTENER=192.168.76.145:1521)(REMOTE_LISTENER=xty-cluster-svip2:1521))' sid= 'inst2' ;
實際上Grid Infrastructure已經是一個完整的clusterware,完全可以透過自定義的指令碼來增加自己想要的資源,以實現高可用性。
本文參考了來自於MOS的文件《How to Configure A Second Listener on a Separate Network in 11.2 Grid Infrastructure [ID 1063571.1]》
--The End
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25469263/viewspace-2648156/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle Grid Infrastructure for a Standalone ServerOracleASTStructServer
- 【SEED Labs】Public-Key Infrastructure (PKI) LabASTStruct
- 【GRID】Grid Infrastructure 啟動的五大問題 (Doc ID 1526147.1)ASTStruct
- ORACLE 11GR2 RAC的網路規劃解析Oracle
- 以太坊將成為新網際網路的支柱
- 將Oracle 12c資料庫註冊到Oracle 19c Grid InfrastructureOracle資料庫ASTStruct
- 修改 Laravel 的預設 public 路徑Laravel
- 工業網際網路安全的風險日益增加
- EIU:研究發現為學校接入網際網路可使人均GDP增加20%
- 12. 為LAMP的網站增加專案LAMP網站
- 工業網際網路為製造業提供新跳板
- 工業網際網路:發展新引擎 為生產注入新動力
- grid網格佈局
- 陣列宣告為public final static缺陷陣列
- GitHub的Repository許可權將public轉為privateGithub
- Laravel 5中去掉URL中的public路徑方法Laravel
- 為什麼類只能用public修飾?
- 工業網際網路成為製造業的新趨勢已是全球共識
- Check the existence of public synonyms Remove the public synonymsREM
- 繫結 WiFi 和乙太網,增加網路間移動的便利性WiFi
- Rust for Linux 新補丁:為 Linux 核心增加對 Rust 作為第二語言的支援RustLinux
- win10增加一個新磁碟的方法_win10如何增加新分盤Win10
- 工業網際網路創新迭代的推手
- CSS Grid 網格佈局教程CSS
- Go1.18 新特性:引入新的 netip 網路庫Go
- 為什麼Java的main方法必須是public static void?JavaAI
- “匯新杯”新興科技+網際網路創新大賽
- Infrastructure 知識: dnf對module的處理ASTStruct
- 網路晶片架構的新改變晶片架構
- 【11gR2新特性】DBMS_RESULT_CACHE管理結果快取的包快取
- 從《網路生態治理規定》看網際網路新技術的治理
- 新時代的SaaS與產業網際網路產業
- 網際網路大廠“卷向”線下?線下生意成為新藍海?
- 2020年新威脅,無人機可能成為主要的網路安全威脅無人機
- 將POJO類的成員全部設定為public多省事兒POJO
- 越南網民的社交網路行為調查
- Xcode10.2中LLDB增加的新特性XCodeLLDB
- 網際網路+新媒體營銷