一、 环境说明
1、 本报告内容所使用的环境为OEL 6.5,Oracle RAC 11.2.0.3 PSU10
2、 为了减少RAC负载均衡带来过多的GC等待,需要将业务进行节点分离。通过OracleTAF技术,配置Service信息,对不同业务的连接进行管理,使每个业务固定在指定的一个或者多个节点。当节点出现故障时,Service能够自动Failover,而Failover的过程,前端应用是没有影响的。
3、 通过Service实现节点的负载均衡。
二、 详细配置
1、 主备模式
配置TAF,可以通过DBCA图形化配置。这里使用命令行的方式。
(1) 添加service
[oracle@rac1 ~]$ srvctl add service-d BDNP -s BDSM -r 'BDNP1' -a 'BDNP2' -P PRECONNECT -e SELECT -xTRUE
[oracle@rac1 ~]$srvctl config service -d BDNP -s BDSM-a
Warning:-a option has been deprecated and will beignored.
Service name: BDSM
Service is enabled
Server pool: BDNP_BDSM
Cardinality: 1
Disconnect: false
Service role: PRIMARY
Management policy: AUTOMATIC
DTP transaction: true
AQ HA notifications: false
Failover type: SELECT
Failover method: NONE
TAF failover retries: 0
TAF failover delay: 0
Connection Load Balancing Goal: LONG
Runtime Load Balancing Goal: NONE
TAF policy specification: PRECONNECT
Edition:
Preferred instances: BDNP1
Available instances: BDNP2
(2) 更改service配置
[oracle@rac1 ~]$ srvctl modifyservice -d BDNP -s BDSM -m BASIC -e SELECT -q TRUE -jLONG
[oracle@rac1 ~]$srvctl config service -d BDNP -s BDSM
Service name: BDSM
Service is enabled
Server pool: BDNP_BDSM
Cardinality: 1
Disconnect: false
Service role: PRIMARY
Management policy: AUTOMATIC
DTP transaction: true
AQ HA notifications: true
Failover type: SELECT
Failover method: BASIC
TAF failover retries: 0
TAF failover delay: 0
Connection Load Balancing Goal: LONG
Runtime Load Balancing Goal: NONE
TAF policy specification: PRECONNECT
Edition:
Preferred instances: BDNP1
Available instances: BDNP2
(3) 启动service
[oracle@rac1 ~]$ srvctl start service -d BDNP -sBDSM
(4) 关闭和删除service
删除service之前要先关闭,如果不关闭,要用-f参数。
[oracle@rac1 ~]$ srvctl stop service -d BDNP -sBDSM
[oracle@rac1 ~]$ srvctl remove service -d BDNP -sBDSM [-f]
(5) Switch service
当主节点挂掉后,service会切换到备节点。主节点恢复后,service不会自动切换回来,需要手工干预。-i是service启动节点,-t是切换目标节点。比如要将service从BDNP1切换到BDNP2上:
[oracle@rac1 ~]$srvctl relocate service -d BDNP -s BDVMP -i BDNP1-t BDNP2
注意:不要选择业务高峰期切换,否则切换会超时导致切换失败,同时影响session连接。
2、 负载均衡模式
负载均衡模式相对简单,service会在所有的instance中注册。
(1) 添加service
[oracle@rac1 ~]$srvctl add service -d BDNP -s BDVMP -r BDNP1,BDNP2–P BASIC
(2) 修改service
[oracle@rac1 ~]$ srvctl config service -d BDNP -s BDPK
Service name: BDPK
Service is enabled
Server pool: BDNP_BDPK
Cardinality: 2
Disconnect: false
Service role: PRIMARY
Management policy: AUTOMATIC
DTP transaction: false
AQ HA notifications: true
Failover type: SELECT
Failover method: BASIC
TAF failover retries: 0
TAF failover delay: 0
Connection Load Balancing Goal: LONG
Runtime Load Balancing Goal: NONE
TAF policy specification: BASIC
Edition:
Preferred instances: BDNP1,BDNP2
Available instances:
(3) 关闭和删除service
同主备模式。
三、 测试过程(针对主备模式)
1、 关闭数据库
通过shutdownimmediate关闭数据库,Service可以自行切换到另一个节点。
通过srvctl stopinstance关闭数据库,service不自动切换,service挂起,无法提供服务。要通过-f参数才可以实现service切换。
Srvctl stop instance –d BDNP –I BDNP1 -f
2、 关闭Cluster
关闭cluster,service可以自动切换。
四、 维护事项(针对主备模式)
1、 当关闭instance时候,要添加-f参数。
2、 Instance恢复后,及时将servicerelocate,否则业务繁忙期relocate可能会失败,还会影响业务。
3、 Servicename 不会同步到dataguard中。