负载均衡,Oracle教程:配置 RAC 负载均衡与故障转

Oracle负载均衡主要是指新会话连接到RAC数据库时,如何判定这个新的连接要连到哪个节点进行工作?通常情况下,负载均衡分为客户端负载均衡与服务器端负载均衡。客户端负载均衡通常是在客户端的tnsnames.ora中多添加一个链接地址以及LOAD_BALANCE与failover参数。而服务器端的负载均衡则相对复杂,下面具体描述服务器端负载均衡。
一、负载均衡
注意这里的负载均衡指的是连接的负载均衡,即客户可以随机从不同的实例中连接到数据库
1.配置tnsnames.ora使得该文件中包含如下全部内容:
# LISTENERS_DEVDB DEVDB是数据库名,可以使用netmgr,netca编辑或直接使用Vim创建 LISTENERS_DEVDB = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = rac1-vip.robinson.com)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = rac2-vip.robinson.com)(PORT = 1521)) )
2.配置参数文件remote_listener
SQL> alter system set remote_listener='LISTENERS_DEVDB' scope=both sid='*';
3.需要配置连接描述信息的两个IP地址、端口号、以及load_balance子项为yes (主要是load_balance子项)
DEVDB = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = rac1-vip.robinson.com)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = rac2-vip.robinson.com)(PORT = 1521)) (LOAD_BALANCE = yes) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = devdb.robinson.com) ) )
4.查看侦听器的状态,从下面可以看到devdb.robinson.com服务中有两个实例为其提供服务
[oracle@rac2 ~]$ lsnrctl status Service "devdb.robinson.com" has 2 instance(s). Instance "devdb1", status READY, has 1 handler(s) for this service... Instance "devdb2", status READY, has 2 handler(s) for this service...
5.测试负载均衡
使用shell脚本来进行测试负载均衡
--编辑TestLoadBalance.sh #!/bin/bash #Usage: TestLoadBalance devdb 1000 count=0 while [ $count -lt $2 ] # Set up a loop control do # Begin the loop count='expr $count + 1' # Increment the counter sqlplus -s usr1/usr1pwd@$1 @TestLoadBalance.sql # Connect instance and execute sql statement sleep 1 done --TestLoadBalance.sql 脚本 col instance_name format a30 select instance_name from v$instance; --实施测试 ./TestLoadBalance.sh devdb 1000 --查看结果 SQL> select inst_id,count(1) from gv$instance; INST_ID COUNT(1) ---------- ---------- devdb1 446 devdb2 554
Tags:  负载均衡算法 服务器负载均衡 负载均衡设备 负载均衡器 负载均衡

延伸阅读

最新评论

发表评论