11g RAC负载均衡和故障转移配置

本文详细介绍了Oracle RAC中的两种负载均衡方式:客户端负载均衡和服务器端均衡,以及两种故障转移实现:客户端TAF和服务端TAF。通过配置tnsnames.ora、监听器和service,实现连接的智能分配和故障时的透明切换。
摘要由CSDN通过智能技术生成

Oracle RAC层面提供两种不同的方式进行负载均衡:

1.通过Connection Balancing,按照某种算法把用户分配到不同的节点。
2.通过service,在应用层上分散负载,也可认为是根据业务进行分散负载。

Connection Balancing
这种负载均衡是在用户连接这个层次进行的,在用户请求建立连接时,根据每个节点的负载决定把连接分配给哪个实例,而一旦连接建立之后,会话的所有操作都在这个实例上完成,二不会再分派给其他节点了。

1.客户端负载均衡 (Client-Side LB)

客户端负载均衡(Client -Side LB) 是 oracle 8i使用的方法,配置在客户端的tnsnames.ora文件中,加入了LOAD_BALANCE=ON条目.
当客户端发起连接时,会从地址列表中随机的选取一个,在使用随机算法把连接请求分配到各个实例。

配置示例(客户端):

breath =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = breath01-vip)(PORT = 1522))
    (ADDRESS = (PROTOCOL = TCP)(HOST = breath02-vip)(PORT = 1522))
    (LOAD_BALANCE = ON)
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = breath)
    )
  )

2.服务器端均衡(Server-Side LB)

Server-Side 是从Oracle 9i 引入的。它的实现依赖于Listener收集负载信息。在数据库运行过程中,PMON后台进程会收集系统的负载信息,然后登记到listener中
最少1分钟,最多10分钟PMON就要做一个信息更新,并且如果节点负载越高,更新频率就越高,以保证listener能掌握每个节点准确的负载情况。
如果listener关闭了,PMON进程会每隔1秒钟检查listener是否重启。除了这个自动的定时更新任务外,用户也可以使用 alter system register 命令来手动进行注册
这个自动更新动作可以从listener的日志中看到,比如下面的这个listener日志片段很清楚的记录了这些动作。
注意,实例启动是PMON进程进行的第一次注册过程叫做Server-register,而后更新过程叫做service-update.
查看日志:

[grid@breath01 ~]$  tail -100 /u01/app/grid/diag/tnslsnr/breath01/listener/trace/listener.log | grep service_update
08-NOV-2017 09:28:18 * service_update * breath1 * 0
08-NOV-2017 09:33:56 * service_update * +ASM1 * 0
08-NOV-2017 09:33:57 * service_update * breath1 * 0
08-NOV-2017 09:38:19 * service_update * breath1 * 0
08-NOV-2017 09:38:22 * service_update * breath1 * 0
08-NOV-2017 09:38:34 * service_update * breath1 * 0
08-NOV-2017 09:39:04 * service_update * breath1 * 0
08-NOV-2017 09:48:22 * service_update * breath1 * 0
08-NOV-2017 09:48:31 * service_update * breath1 * 0
08-NOV-2017 09:48:58 * service_update * breath1 * 0
08-NOV-2017 09:58:25 * service_update * breath1 * 0
08-NOV-2017 09:58:37 * service_update * breath1 * 0
[grid@breath01 ~]$ cat /u01/app/grid/diag/tnslsnr/breath01/listener/trace/listener.log | grep service_register | tail -10
02-NOV-2017 10:52:07 * service_register * LsnrAgt * 0
02-NOV-2017 10:52:24 * service_register * +ASM1 * 0
02-NOV-2017 10:52:45 * service_register * breath1 * 0
02-NOV-2017 17:20:49 * service_register * breath1 * 0
03-NOV-2017 15:12:33 * service_register * LsnrAgt * 0
03-NOV-2017 15:13:01 * service_register * breath1 * 0
03-NOV-2017 15:13:03 * service_register * +ASM1 * 0
07-NOV-2017 09:39:32 * service_register * LsnrAgt * 0
07-NOV-2017 09:40:16 * service_register * +ASM1 * 0
07-NOV-2017 09:41:17 * service_register * breath1 * 0

配置方法
所有节点的tnsnames.ora文件添加以下内容:
[oracle@breath01 ~] cat c a t ORACLE_HOME/network/admin/tnsnames.ora
BREATH_REMOTE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = breath01-vip)(PORT = 1522))
(ADDRESS = (PROTOCOL = TCP)(HOST = breath02-vip)(PORT = 1522))
)

其中一个节点修改数据库remote_listener 参数。

SYS@breath1>alter system set remote_listener='BREATH_REMOTE' scope=both sid='*';
检查参数设置
SYS@breath1>show parameter remote_lis

NAME                     TYPE    VALUE
------------------------------------ ----------- ------------------------------
remote_listener              string  BREATH_REMOTE
SYS@breath2>show parameter remote_lis

NAME                     TYPE   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值