熟悉Oracle数据库的朋友们应该都清楚RAC的负载均衡分为两种。那么现在,我们针对其中一种——客户端RAC负载均衡配置进行一个全面具体的介绍。文中包含了主要的配置代码,希望通过介绍,能让大家清楚配置过程。稍后我们还会介绍RAC服务器负载均衡配置。
负载均衡是指连接的负载均衡。RAC的负载均衡主要是指新会话连接到RAC数据库时,如何判定这个新的连接要连到哪个节点进行工作。在RAC中,负载均衡分为两种,一种是基于客户端连接的,另外一种是基于服务器端的。
客户端RAC负载均衡配置
1、当前服务器中的数据库版本如下:
SQL>select*fromv$version;
BANNER ---------------------------------------------------------------- OracleDatabase10gEnterpriseEditionRelease10.2.0.1.0-Prod PL/SQLRelease10.2.0.1.0-Production CORE10.2.0.1.0Production TNSforLinux:Version10.2.0.1.0-Production NLSRTLVersion10.2.0.1.0-Production
2、在客户端的tnsnames.ora的配置中,只要连接的是整个数据库的服务名,不是实例名。
在服务器端查看RAC数据库的service_names:
SQL>showparameterservice_names
NAMETYPEVALUE ----------------------------------------------------------------------------- service_namesstringRACDB.chenxu.yo2.cn SQL>
#p#3、在客户端配置TNS:
客户端RAC负载均衡配置相对简单,只需要在tnsnames.ora中添加LOAD_BALANCE=ON这么一个选项即可。
RACDB=
(DESCRIPTION= (ADDRESS_LIST= (ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.170)(PORT=1521)) (ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.171)(PORT=1521)) (LOAD_BALANCE=on) ) (CONNECT_DATA= (SERVICE_NAME=racdb.chenxu.yo2.cn) ) )
配置TNS中的HOST值是服务器端RAC配置中的虚拟IP即VIP,如下:
[root@NODE01admin]#more/etc/hosts
#Donotremovethefollowingline,orvariousprograms #thatrequirenetworkfunctionalitywillfail. 127.0.0.1localhost.localdomainlocalhost ::1localhost6.localdomain6localhost6 192.168.1.180node01 192.168.1.181node02 192.168.1.170vip01 192.168.1.171vip02 10.10.10.1priv01 10.10.10.2priv02
4、在客户端测试:
开启sqlplus_1:
SQL>connsys/chenxu@racdbassysdba
已连接。 SQL> SQL>showparameterinstance_name NAMETYPEVALUE ----------------------------------------------------------------------------- instance_namestringRACDB2 SQL> SQL>selectinstance_namefromgv$instance; INSTANCE_NAME ---------------- RACDB1 RACDB2
#p#开启sqlplus_2:
SQL>connsys/chenxu@racdbassysdba
已连接。 SQL>showparameterinstance_name NAMETYPEVALUE ----------------------------------------------------------------------------- instance_namestringRACDB1
开启sqlplus_3:
SQL>connsys/chenxu@racdbassysdba
已连接。 SQL> SQL>showparameterinstance_name NAMETYPEVALUE ----------------------------------------------------------------------------- instance_namestringRACDB2
开启sqlplus_4:
SQL>connsys/chenxu@racdbassysdba
已连接。 SQL>showparameterinstance_name NAMETYPEVALUE ----------------------------------------------------------------------------- instance_namestringRACDB1
5、总结
这样当客户端连接RAC数据库时,会随机在TNS里面挑个监听地址进行连接。在Oracle 10g以前,假如有节点宕机或者类似事故时,客户端可能还是选择连接到这个节点,这样会发生较长时间的TCP等待超时。而在10g以后,由于VIP和FAN的引入,这样的情况可以得到很大程度的改善。客户端RAC负载均衡配置是相对简单的,客户端负载均衡在通常情况下能够较好地工作,但是由于连接是在客户端随机发起的,这样客户端并不知道RAC各节点的负荷及连接数情况,有可能负荷大的节点还会源源不断地增加新的连接,导致RAC节点无法均衡工作。
发表评论