为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]》
为11gR2 Grid Infrastructure增加新的public网络的更多相关文章
- 重新配置与卸载 11gR2 Grid Infrastructure
Oracle 11g R2 Grid Infrastructure 的安装与配置较之前的版本提供了更多的灵活性.在Grid Infrastructure安装完毕前执行root.sh经常容易出现错误,并 ...
- Grid Infrastructure Single Client Access Name (SCAN) Explained (文档 ID 887522.1)
APPLIES TO: Oracle Database - Enterprise Edition - Version 11.2.0.1 and laterExalogic Elastic Cloud ...
- 转://诊断 Grid Infrastructure 启动问题 (文档 ID 1623340.1) .
文档内容 用途 适用范围 详细信息 启动顺序: 集群状态 问题 1: OHASD 无法启动 问题 2: OHASD Agents 未启动 问题 3: OCSSD.BI ...
- 诊断 Grid Infrastructure 启动问题 (文档 ID 1623340.1)
适用于: Oracle Database - Enterprise Edition - 版本 11.2.0.1 和更高版本本文档所含信息适用于所有平台 用途 本文提供了诊断 11GR2 和 12C G ...
- Grid Infrastructure 启动的五大问题 (文档 ID 1526147.1)
适用于: Oracle Database - Enterprise Edition - 版本 11.2.0.1 和更高版本本文档所含信息适用于所有平台 用途 本文档的目的是总结可能阻止 Grid In ...
- 【总文档】rac增加新节点的方法步骤 How to Add Node/Instance or Remove Node/Instance in 10gR2, 11gR1, 11gR2 and 12c Oracle Clusterware and RAC
[总文档]How to Add Node/Instance or Remove Node/Instance in 10gR2, 11gR1, 11gR2 and 12c Oracle Clusterw ...
- oracle 11g r1 RAC增加新节点
在一套两节点的rac上增加一个新的节点,详细的操作记录如下: 已有节点RAC1,RAC2 一,环境及版本: 公司环境:Vmware Esxi 5.5 操作系统:Redhat 5.8 x86_64 ...
- 基于CentOS与VmwareStation10搭建Oracle11G RAC 64集群环境:4.安装Oracle RAC FAQ-4.6.重新配置与缷载11R2 Grid Infrastructure
1.[root@linuxrac1 ~]# /u01/app/oraInventory/orainstRoot.sh 2.[root@linuxrac2 ~]# /u01/app/oraInvento ...
- 为11.2.0.2 Grid Infrastructure添加节点
转自:http://www.askmaclean.com/archives/add-node-to-11-2-0-2-grid-infrastructure.html 在之前的文章中我介绍了为10g ...
随机推荐
- DNS区域传送漏洞的安全案例
DNS区域传送(DNS zone transfer)指的是一台备用服务器使用来自主服务器的数据刷新自己的域(zone)数据库.这为运行中的DNS服务提供了一定的冗余度,其目的是为了防止主的域名服务 ...
- jquery 修改样式
//显示待办数字 function showdb(url,ID) { jQuery.get(url,function(data,status){ if(!isNaN(data)) { if(da ...
- RabbitMQ指南之二:工作队列(Work Queues)
在上一章的指南中,我们写了一个命名队列:生产者往该命名队列发送消息.消费从从该命名队列中消费消息.在本章中,我们将创建一个工作队列,用于在多个工作者之间分配耗时的任务.工作队列(即任务队列)的主要思想 ...
- spring_150908_hibernate_id_sequence
1.新建java工程:spring_150908_hibernate_id_sequence,添加相关jar包(spring.hibernate.ibatis)如下图所示: 2.实现实体类DogPet ...
- python模拟QQ聊天室(tcp加多线程)
python模拟QQ聊天室(tcp加多线程) 服务器代码: from socket import * from threading import * s = socket(AF_INET,SOCK_S ...
- 转:XSS知识大总结
转:https://www.jianshu.com/p/75a3d9332b8c XSS知识大总结 2016.10.28 21:05* 字数 1332 阅读 961评论 2喜欢 13 XSS-即Cro ...
- 《java虚拟机》----java内存区域与内存溢出异常
No1: java虚拟机所管理的内存将会包括以下几个运行时数据区域 1.方法区 2.虚拟机栈 3.本地方法栈 4.堆 5.程序计数器 No2: 程序计数器: 程序计数器(Program Counter ...
- HDU 5876 Sparse Graph(补图上BFS)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5876 题意: 有一个 n 个点无向图,再给你 m 对顶点, 代表着这 m 对顶点之间没有边, 除此之外 ...
- Spring MVC——搭建HelloWeb工程
1.确保环境配置配置正确(Myeclipse(eclipse)+Tomcat) 2.新建web project 3.将Spring MVC所需的jar包粘贴到WebRoot/WEB-INF/lib下 ...
- 剖析ironic
关键技术 在安装操作系统时需要存储介质来存储系统镜像.需要控制物理机开关机,在网络部署环境中还需要预启动环境. PXE (预启动环境) IPMI(电源管理) iSCSI(存储) 什么是PXE PXE( ...