Oracle RAC环境中连接的高可用.doc
文本预览下载声明
1、工作量分配的类型??? 在RAC环境中,在多nodes上可以配置多个listeners来响应client对相同Database Service的连接请求。??? 一个multiple-listener设置可影响相应的故障转移和负载均衡:??? *? client端的连接时间负载均衡(connect-time)??? *? client端的连接时间故障转移??? *? server端的连接时间负载均衡??? 这些特性可以一个个单独实施,也可进行彼此的结合。??? 此外,如果使用连接池,可以获得相应的运行时间的平衡(run-time balance):首先,client的工作请求自动的通过连接池获得一定的均衡;此外,从oracle JDBC隐式的连接缓冲特性也可获得相应的收效。
??? 2、client 端的连接时间负载均衡??? client端的connect-time负载均衡特性使client可以随机的连接请求列表中的可用listeners。Oracle Net进程通过类表中的协议地址,以随机序列来均衡各个listeners上的负载。否则,Oracle Net将总是尝试对第一个协议地址建立连接。??? 可以在相应的client端的TNS实体设置参数LOAD_BALANCE=ON。??? 具体例子:??? ERP =??? (DESCRIPTION =??? (LOAD_BALANCE=ON)??? (ADDRESS_LIST =??? (ADDRESS=(PROTOCOL=TCP)(HOST=node1vip)(PORT=1521))??? (ADDRESS=(PROTOCOL=TCP)(HOST=node2vip)(PORT=1521))??? )??? (CONNECT_DATA=(SERVICE_NAME=ERP)))
??? 3、client 端的connect-time failover??? 此特性可以使client,在初始的向第一个listener建立连接失败后,向其他listener建立连接。在连接描述符中,listener协议地址的数量决定了将会尝试连接listener的数量。如果没有此特性,Oracle Net将只尝试对一个listener的连接。具体上一个实例:??? ERP =??? (DESCRIPTION =??? (LOAD_BALANCE=ON)??? (FAILOVER=ON)??? (ADDRESS_LIST =??? (ADDRESS=(PROTOCOL=TCP)(HOST=node1vip)(PORT=1521))??? (ADDRESS=(PROTOCOL=TCP)(HOST=node2vip)(PORT=1521))???? )??? (CONNECT_DATA=(SERVICE_NAME=ERP)))??? 通过设置语句FAILOVER=ON,client端TNS实体实现了connect-time failover 。??? 这里强烈推荐使用虚拟IP地址(VIP)具体原因在之前已经解释过了。??? note:如果使用connect-time failover(故障转移)。不要在listener.ora文件中设置GLOBAL_DBNAME属性。
??? 4、server 端的connect-time负载均衡
??? 上图显示了在RAC cluster中,listener分配Service连接请求的过程。client应用程序连接ERP Service。在server端,Database使用的是动态Service注册特性。这使得每个Instance中的PMON进程可以在cluster中的listeners之间彼此登记交互相应的工作量信息①。随后每个listener就可以获知哪个Instance的哪个Service被started,以及得知每个Instance的绝对session数量和每个node上的运行队列长度。??? 该特性的具体设置主要是通过在每个Instance的SPFILE中设置初始化参数REMOTE_LISTENER来实现的。该参数的值应该为listener.ora文件中设置的一个TNS名。??? 根据第①步中获得的负载信息,默认情况下一个listener会重定向相应的连接请求②到负载量最小的node中的Instance对应的listener③。如果想要确保listener重定向连接请求到负载最小的Instance,需要在listener.ora文件中设置PREFER_LEAST_LOADED_NODE_[listener_name]为OFF。如果使用连接池,这种方法效果更
显示全部