已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Oracle RAC负载均衡和透明应用失败切换的配置和测试过程第1节 测试名词解释这个文档被用来给配置提供一个指引:1) 仅仅客户端连接时间负荷平衡2) 服务器和客户端同时的连接负荷平衡3) 仅仅服务器端的连接负荷平衡4) 透明的应用failover在配置Net Services特征前,这有一些每种方法的单一和混合的应用的定义:1.1 客户端连接failover连接时失败切换可以使客户端初始化连接第一次失败时可以连接到另外一个侦听器。侦听器协议地址的数量决定了有多少个侦听器可以被尝试。没有连接时失败切换,Oracle Net仅仅连接一个侦听器,默认时是on。1.2 透明应用Failover透明应用Failover(TAF)是高可用运行环境的一种运行时的failover,例如Oracle 9i RAC和Oracle 9i Real Application Clusters Guard。TAF 失败和重新建立应用-到-服务的连接。它可以使客户端应用程序在连接失败时自动重新新连接到数据库,重新执行一个程序中的SELECT操作。重新连接自动发生在Oracle Call Interface(OCI)库。1.3 客户端连接Load Balancing客户端load balancing 特征能使客户端在所有的侦听器中随机选择廉洁。Oracle Net程序通过在一个随机的协议地址列表的顺序,平衡不同的侦听器的负载。没有客户端的load balancing,Oracle Net程序顺序的处理协议地址列表中的地址直到一个成功。1.4 服务器端侦听器连接Load Balancing服务器端侦听器连接load balanceing特征在不同进程和dispatchers之间提高了不平衡激活的连接数目的执行性,侦听器选择最少负载的dispatcher来管理进行的客户端的连接。在Oracle 9i RAC环境中,连接时的load balancing也有平衡多个进程的激活的连接的能力。由于dynamic service registration,一个侦听器总是依赖负载的信息,而无论它们的位置,而知道所有的进程和diapathers,如果共享服务已经配置,一个侦听器决定哪一个进程,哪一个dispathers发送客户端的请求。在一个共享服务器的配置里,侦听器选择一个dispatcher在以下的顺序里:1. 最小负载的节点2. 最小负载的进程3. 最小负载的dispatcher for that instance在一个专用的服务配置,侦听器以下面的顺序选择一个进程:1.最少负载的节点2.最少负载的进程如果一个数据库服务有多个进程在多个节点上,侦听器选择在最少负载的节点上的最小负载的进程。如果共享服务已经配置,则选择进程的最小负载的dispatchers被选择第2节 配置实例主要包括的是服务器端的init.ora,listener.ora和tnsnames.ora文件以及客户端的tnsnames.ora文件。针对本项目的双节点的群集设置,主要配置如下:hostname service name sid name instance_name ORACLE_HOME= = = = =node1 test1 rac rac1 rac1 /oracle/product/9201node2 test2 rac rac2 rac2 /oracle/product/92012.1init.ora所有节点的init.ora 文件必须配置如下:remote_listener=LISTENERS_RACrac1.local_listener=LISTENER_rac1”rac2.local_listener=LISTENER_rac2# dispatchers=(pro=ipc)(dis=0)db_name=rac /*可以不用*/rac1.instance_name=rac1rac2.instance_name=rac22.2show parameter既然service_names在init.ora文件中没有规定,它缺省是db_name.db_domain。每一个节点列出它的主机名和instance_name。随着以上的设置,在你启动进程后,当你从第一个节点检查sql 会话时,你将会发现下面的信息:1)节点一SQL show parameter db_nameNAME TYPE VALUEdb_name string racSQL show parameter db_domainNAME TYPE VALUEdb_domain stringSQL show parameter service_namesNAME TYPE VALUEservice_names string racSQL show parameter instance_nameNAME TYPE VALUEinstance_name string rac1SQL show parameter listenerNAME TYPE VALUElocal_listener string LISTENER_rac1mts_listener_address stringmts_multiple_listeners boolean FALSEremote_listener string LISTENERS_RAC2)节点二SQL show parameter db_nameNAME TYPE VALUEdb_name string racSQL show parameter db_domainNAME TYPE VALUEdb_domain stringSQL show parameter service_namesNAME TYPE VALUEservice_names string racSQL show parameter instance_nameNAME TYPE VALUEinstance_name string rac2SQL show parameter listenerNAME TYPE VALUElocal_listener string LISTENER_rac2mts_listener_address stringmts_multiple_listeners boolean FALSEremote_listener string LISTENERS_RAC2.3listener.oratest1 listener.ora fileLISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC) ) (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = test1)(PORT = 1521) ) ) )SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = /oracle/product/9201) (PROGRAM = extproc) ) (SID_DESC = (ORACLE_HOME = /oracle/product/9201) (SID_NAME = rac1) ) )Test2 listener.ora fileLISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC) ) (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = test2)(PORT = 1521) ) ) )SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = /oracle/product/9201) (PROGRAM = extproc) ) (SID_DESC = (ORACLE_HOME = /oracle/product/9201) (SID_NAME = rac2) ) )2.4tnsnames.oratest1test2 and client side tnsnames.ora fileLISTENERS_RAC = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = test1)(PORT = 1521) (ADDRESS = (PROTOCOL = TCP)(HOST = test2)(PORT = 1521) )LISTENER_RAC2 = (ADDRESS = (PROTOCOL = TCP)(HOST = test2)(PORT = 1521)LISTENER_RAC1 = (ADDRESS = (PROTOCOL = TCP)(HOST = test1)(PORT = 1521)RAC2 = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = test2)(PORT = 1521) ) (CONNECT_DATA = (SERVICE_NAME = rac) (INSTANCE_NAME = rac2) ) )RAC1 = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = test1)(PORT = 1521) ) (CONNECT_DATA = (SERVICE_NAME = rac) (INSTANCE_NAME = rac1) ) )RAC = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = test1)(PORT = 1521) (ADDRESS = (PROTOCOL = TCP)(HOST = test2)(PORT = 1521) (LOAD_BALANCE = on)(FAILOVER=on) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = rac) (failover_mode=(type=select)(method=basic)/*TAF使用的配置*/ ) )EXTPROC_CONNECTION_DATA = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC) ) (CONNECT_DATA = (SID = PLSExtProc) (PRESENTATION = RO) ) )/failover = (DESCRIPTION = (enable=broken) (LOAD_BALANCE = yes) (ADDRESS = (PROTOCOL = TCP)(HOST = test1)(PORT = 1521) (ADDRESS = (PROTOCOL = TCP)(HOST = test2)(PORT = 1521) (CONNECT_DATA = (SERVICE_NAME = rac) (failover_mode=(type=select)(BACKUP=cletus)(method=basic) ) )/2.5配置注释1) LISTENERS_RAC, LISTENER_rac1, LISTENER_rac2是net_service_name (连接描述) for remote_listener和local_listener.在客户端,你并不需要这些参数。2) failover 是为透明应用失败切换(TAF)测试的net_service_name 。3) RAC 是客户端的负载平衡的 net_service_name,如果你不需要配置TAF,这有另外一种设置客户端连接负载平衡的配置方法, 下面是另外一种办法:RAC_alternative = (DESCRIPTION = (ADDRESS_LIST = (LOAD_BALANCE = yes) (ADDRESS = (PROTOCOL = TCP)(HOST = test1)(PORT = 1521) (ADDRESS = (PROTOCOL = TCP)(HOST = test2)(PORT = 1521) ) (CONNECT_DATA = (SERVICE_NAME = rac) ) )注: (load_balance=yes)可以使Net程序以一种随机的顺序处理地址列表中的侦听器,平衡不同侦听器之间的负载。当被设成OFF,Net程序将以顺序的方式处理直到一个成功。这个参数必须在你的net service name (connect descriptor)正确的配置. 缺省情况下这个参数被设成ON, Load balancing能联系到ADDRESSes和DESCRIPTIONs的设置并且在ADDRESS_LIST里进行规定。如果你使用ADDRESS_LIST,(load_balance=yes)将会在(ADDRESS_LIST=)部分。如果你不使用ADDRESS_LIST, (load_balance=yes)将会在(description=)部分里,我建议不使用(ADDRESS_LIST=) 字句。4)(failover=on)缺省是在ADDRESS_LISTs, DESCRIPTION_LISTs和一个DESCRIPTIONs的设置里,因此你不需要规定。它是作为connect-time-failover,请注意不要与透明应用切换(TAF)发生冲突。5)(failover_mode=):在FAILOVER_MODE参数必须包括在一个net_service_name的CONNECT_DATA部分。6)这儿在(failover_mode=)里没有(backup=failover),7) There is no (backup=failover) in (failover_mode=), this 暗示着(failover_mode=(type=select)(method=basic)(backup=failover),它意味着无论是否failover发生,连接的会话将会切换到net_service_name又进行失败切换,当使用PRECONNECT来pre-establish连接时BACKUP应该被规定,需要详细的TAF信息,请参考Oracle官方文档。第3节测试方法测试方法论:1. 你总是先开始简单后转到更复杂的测试。2、在你启动侦听和进程之后,检查从命令“lsnrctl services”的输出,”lsnrctl status”不论你设置正确与否都不能给你提供有效的信息。如果”lsnrctl services”输出不正确,继续之前更正listener.ora或init.ora文件。3、从服务器端测试客户端的load balance连接,检查verify.sql提供的信息,你可以注释出你不需要的sql脚本。4、从服务器端测试服务器端侦听器load balance,并且检查它的输出信息。5、从服务器端测试TAF的连接,并且在关闭进程或重启服务器之前检查failover_type和failover_mothod。3.1测试脚本和设置=在启动测试之前,可以使用下面的行如你所要的重复多次创建一个loop.sh文件loop.shnohup sqlplus system/systemrac verify.sql & sleep 1nohup sqlplus system/systemrac verify.sql & sleep 1nohup sqlplus system/systemrac verify.sql & sleep 1nohup sqlplus system/systemrac verify.sql & sleep 1verify.sql (检查输出信息)REM set pagesize 1000REM the following query is for TAF connection verificationcol sid format 999col username format 9999999col serial# format 9999999col failover_type format a13col failover_method format a15col failed_over format a11select sid, serial#, failover_type, failover_method, failed_over from v$session where username = system;REM the following query is for load balancing verificationselect instance_name from v$instance;exitREM you can also combine two queries:col inst_id format 999col sid format 999col serial# format 9999999col failover_type format a13col failover_method format a15col failed_over format a11select inst_id, sid, serial#, failover_type, failover_method, failed_over from v$session where username = system;REM a simple select to see the distribution of users when testing connection REM load balancingselect inst_id, count(*) from gv$session group by inst_id;运行这个测试,简单的输入”./loop.sh”,输出文件将被定向到nohup.out。=3.2客户端连接Load Balancing测试不需要服务器端侦听器连接load balancing,而仅仅客户端的load balancing,移除init.ora文件的remote_listener并且重新启动所有进程,这样将没有远程进程在侦听器注册,你将仅仅为每个进程发现本地服务器。Test1$ lsnrctl service test2$ lsnrctl service 简单运行 ./loop.sh脚本,并且定期检查输出信息。 grep rac1 nohup.out | wc -l grep rac2 nohup.out | wc -l测试表格:检查次数 连接次数RAC1RAC2测试结论123456总测试结论和效果=3.3服务器端连接Load Balancing (混合客户端连接Load Balancing)服务器端的侦听器负载均衡是侦听器路由连接到低负荷的进程,添加remote_listener参数到init.ora文件并且重启所有的进程,记住检查lsnrctl services的输出信息:Test1 $ lsnrctl service test2 $ lsnrctl service 注意: 比较“lsnrctl status”下面的输出,你将会发现比上面更多的信息,请注意到在一个节点它自己的进程,例如:test1上的rac1,你将会有本地的服务和远程的服务。别的远程进程,你
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 供应链规划师考试题及答案
- 公务员面试棉袄面试题及答案
- 海信集团校招面试题及答案
- 海南航空招聘试题及答案
- 公务员面试江苏国税面试题及答案
- 国机集团秋招面试题及答案
- 公务员考试司法考试试题及答案
- 公务员考试视力标准试题及答案
- 医院健康宣教题库及答案
- 2026年海南外国语职业学院单招职业技能考试必刷测试卷完美版
- 布克哈德迷宫压缩机
- 小型水电站安全生产标准化评审细则2024
- 2002年购房合同协议
- 新产品导入(NPI)培训
- 全麻术后护理与注意事项
- 数字化在招聘流程优化中的作用研究
- 玉米烘干仓储可行性研究报告
- 普外科综合面试题及答案
- 压力管道安装防腐技术工艺标准
- 人教版小学一年级语文上册期末试卷(5份)
- 饭堂厨房设备施工方案
评论
0/150
提交评论