Oracle RAC 负载均衡使得从客户端发起的连接能够有效地分配到监听器负载较小的实例上。有两种方式实现客户端负载均衡,一是通过配置客户端的load_balance,一是通过配置服务器端的remote_listener参数。两种方式各有优劣,而且两者并不相互排斥,因此可以结合两种方式来更加有效的实现负载均衡。本文将描述两者结合的使用情况(oralce 10g rac)。

有关客户端与服务端负载均衡的单独测试请参考:
              Oracle RAC 客户端连接负载均衡(Load Balance) 
              Oracle RAC 服务器端连接负载均衡(Load Balance)

本文的测试将结合前篇文章使用的脚本与样例,是前两篇测试的一个总结。

一、配置需求

  1. 1、服务器端各节点监听器正常提供服务,如果使用非缺省的1521端口,请参考 ORACLE RAC 下非缺省端口监听配置(listener.ora tnsnames.ora)
  2. oracle@bo2dbp:~> more $ORACLE_HOME/network/admin/listener.ora
  3. # listener.ora.bo2dbp Network Configuration File: /u01/oracle/db/network/admin/listener.ora.bo2dbp
  4. # Generated by Oracle configuration tools.
  5. LISTENER_BO2DBP =
  6. (DESCRIPTION_LIST =
  7. (DESCRIPTION =
  8. (ADDRESS = (PROTOCOL = TCP)(HOST = bo2dbp-vip.2gotrade.com)(PORT = 1521)(IP = FIRST))
  9. (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.51)(PORT = 1521)(IP = FIRST))
  10. )
  11. )
  12. SID_LIST_LISTENER_BO2DBP =
  13. (SID_LIST =
  14. (SID_DESC =
  15. (SID_NAME = PLSExtProc)
  16. (ORACLE_HOME = /u01/oracle/db)
  17. (PROGRAM = extproc)
  18. )
  19. )
  20. oracle@bo2dbp:~> lsnrctl status
  21. Service "GOBO4" has 2 instance(s).
  22. Instance "GOBO4A", status READY, has 2 handler(s) for this service...
  23. Instance "GOBO4B", status READY, has 1 handler(s) for this service...
  24. 2、服务器端的remote_listener参数设置
  25. 要求remote_listener参数的连接标识符在服务器端的tnsnames.ora中有对应的条目
  26. SQL> show parameter listener
  27. NAME                                 TYPE        VALUE
  28. ------------------------------------ ----------- ------------------------------
  29. local_listener                       string
  30. remote_listener                      string      remote_lsnr_gobo4
  31. oracle@bo2dbp:~> more $ORACLE_HOME/network/admin/tnsnames.ora
  32. # tnsnames.ora Network Configuration File: /u01/oracle/db/network/admin/tnsnames.ora
  33. # Generated by Oracle configuration tools.
  34. remote_lsnr_gobo4 =
  35. (ADDRESS_LIST =
  36. (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.61)(PORT = 1521))
  37. (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.62)(PORT = 1521))
  38. )
  39. 3、客户端tnsnames.ora中启用load_balance
  40. oracle@SZDB:~> tail -11 $ORACLE_HOME/network/admin/tnsnames.ora
  41. GOBO4 =
  42. (DESCRIPTION =
  43. (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.61)(PORT = 1521))
  44. (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.62)(PORT = 1521))
  45. (LOAD_BALANCE = yes)
  46. (CONNECT_DATA =
  47. (SERVER = DEDICATED)
  48. (SERVICE_NAME = GOBO4)
  49. )
  50. )

二、测试Load Balance

    1. #还是使用之前的脚步来进行测试
    2. #Author : Robinson
    3. #Blog : http://blog.csdn.net/robinson_0612
    4. oracle@SZDB:~> more load_balance.sh
    5. #!/bin/bash
    6. for i in {1..1000}
    7. do
    8. echo $i
    9. sqlplus -S system/oracle@GOBO4 <<EOF
    10. select instance_name from v\$instance;
    11. EOF
    12. sleep 1
    13. done
    14. exit 0
    15. oracle@SZDB:~> ./load_balance.sh >load_bal.log
    16. #查看日志
    17. oracle@SZDB:~> grep GOBO4A load_bal.log |wc -l
    18. 750
    19. oracle@SZDB:~> grep GOBO4B load_bal.log |wc -l
    20. 250
    21. #查看监听器的日志
    22. oracle@bo2dbp:/u01/oracle/db/network/log> grep establish listener_bo2dbp.log |wc -l
    23. 894
    24. oracle@bo2dbp:/u01/oracle/db/network/log> grep INSTANCE_NAME=GOBO4 listener_bo2dbp.log |wc -l
    25. 415
    26. #从上面的查询中可以得知,节点bo2dbp总共接受了894个连接请求,而有415连接请求是由bo2dbs转发过来的
    27. #因此,实际上从客户端发起到bo2dbp的实际连接请求数为894-415=479
    28. #下面来看在节点bo2dbs上的监听日志
    29. oracle@bo2dbs:/u01/oracle/db/network/log> grep establish listener_bo2dbs.log |wc -l
    30. 665
    31. oracle@bo2dbs:/u01/oracle/db/network/log> grep INSTANCE_NAME=GOBO4 listener_bo2dbs.log |wc -l
    32. 144
    33. #从上面的查询中可知,节点bo2dbs总共接受了665个连接请求,而有144个连接请求是由bo2dbp转发过来的
    34. #因此,实际上从客户端发起到bo2dbs的实际连接请求数为655-144=511
    35. #从上面的结果可知,
    36. #基于客户端的连接请求数为节点bo2dbp为479,节点bo2dbs为511
    37. #监听器路由到本地实例数目为,节点bo2dbp,479-144=335,节点bo2dbs,511-415=96
    38. #远程监听器路由道本地实例的数据为,节点bo2dpb为415,节点bo2dbs为144
    39. #监听器路由的概念是指基于服务器端的负载均衡
    40. #即服务器端的监听器根据自身以及远程监听器的负载情况来确定将当前的连接请求转发到本地或远程,此即为路由。
    41. 转:http://blog.csdn.net/leshami/article/details/8072367

Oracle RAC 负载均衡测试(结合服务器端与客户端)的更多相关文章

  1. ORACLE 11G负载均衡测试

    Oracle 11g R2中,引入了SCAN(Single Client Access Name)的特性.该特性的好处在于,在数据库与客户端之间,添加了一层虚拟的服务层,就是所谓的SCAN IP以及S ...

  2. windows使用nginx实现网站负载均衡测试实例

    如果你关注过nginx,必定知道nginx这个软件有什么用的,如果你的网站访问量越来越高,一台服务器已经没有办法承受流量压力,那就增多几台服务器来做负载吧.做网站负载可以买硬件设备来实现,比如F5,不 ...

  3. Haproxy和Nginx负载均衡测试效果对比记录

    为了对比Hproxy和Nginx负载均衡的效果,分别在测试机上(以下实验都是在单机上测试的,即负载机器和后端机器都在一台机器上)做了这两个负载均衡环境,并各自抓包分析.下面说下这两种负载均衡环境下抓包 ...

  4. lvs的负载均衡测试

    近来工作闲暇之余,知道自己的知识欠缺,就在网上找来一些学习视频进行学习,在学习的时候,按照讲课老师的讲解步骤进行配置lvs负载均衡,配置环境如下图: 客户端是我本机的虚拟网卡vmnet8 lvs调度器 ...

  5. Spring Cloud负载均衡:使用Feign作客户端负载均衡

    有了一篇服务端负载均衡后,再来一篇客户端负载均衡,客户端负载均衡很简单,无需在zuul中做多余配置(本示例不引入zuul),只需要在客户端进行Feign引入和配置即可. 准备工作很简单,实现客户端负载 ...

  6. nginx apache负载均衡测试

    apache配置 (监听内网ip和端口) Listen 10.163.170.8:8001 Listen 10.163.170.8:8002 Listen 10.163.170.8:8003 < ...

  7. Oracle RAC 环境下的 v$log v$logfile

    通常情况下,在Oracle RAC 环境中,v$视图可查询到你所连接实例的相关信息,而gv$视图则包含所有实例的信息.然而在RAC环境中,当我们查询v$log视图时说按照常理的话,v$log视图应当看 ...

  8. Nginx反向代理与负载均衡应用实践(一)

    Nginx反向代理与负载均衡应用实践(一) 链接:https://pan.baidu.com/s/1xB20bnuanh0Avs4kwRpSXQ 提取码:migq 复制这段内容后打开百度网盘手机App ...

  9. Oracle RAC 服务器端连接负载均衡(Load Balance)

    Oracle RAC服务器端的负载均衡是根据RAC中各节点的连接负荷数情况,将新的连接请求分配到负荷最小的节点上去.当数据库处于运行时,RAC中各节点的PMON进程每3秒会将各自节点的连接负荷数更新到 ...

随机推荐

  1. Linux静态库和动态库

    Linux 工具 ❑ GCC: The GNU Compiler Collection, containing the GNU C compiler❑ G++: A C++ compiler, inc ...

  2. 01 - 开发成功的Oracle应用

    笔记 1. 开发数据库应用,不能把数据库当黑盒.需要了解数据库的一下内容 数据库的体系结构 并发控制 开发的时候就要调优你的代码 数据库有哪些特性,不要在你的代码里重复实现 深入的学习SQL 2. 我 ...

  3. 【PSR规范专题(5)】PSR-4 改进后的自动加载规范

    本文转自: https://github.com/PizzaLiu/PHP-FIG/blob/master/PSR-4-autoloader-cn.md 关键词 "必须"(&quo ...

  4. 重温《js权威指南》 第7,8章

    第七章 数组         数组是值的有序集合.js数组是无类型的,数组元素可以是任意类型,同一个数组中不同元素也可能有不同的类型.数组可以动态增长或缩减,创建时无须生命那个一个固定的大小并且数组大 ...

  5. Hibernate笔记——hql总结

    原文:http://www.cnblogs.com/xiaoluo501395377/p/3376256.html ------------------------------------------ ...

  6. 针对安卓java入门:方法的使用

    [修饰符]返回值类型 方法名 (形式参数表){ 程序代码; return 返回值; } 例子: public class Test { //方法一 public static void printIn ...

  7. iOS:自动布局Autolayout

    自动布局:Autolayout 简介: 在以前的iOS程序中,是如何设置布局UI界面的? 经常编写大量的坐标计算代码 为了保证在3.5 inch和4.0 inch屏幕上都能有完美的UI界面效果,有时还 ...

  8. Socket基础编程

    地址结构sockaddr_in 其中包含:IP地址,端口号,协议族推荐使用sockaddr_in,而不建议使用sockaddrsockaddr_in与sockaddr是等价的,但sockaddr_in ...

  9. Eclipse无法通过FileExplore打开真机data目录

    ok ——> Eclipse无法通过FileExplore打开真机data目录 ref:http://blog.csdn.net/koyoter/article/details/7657440 ...

  10. Highgui.imwrite("/data/pic1111.png", mat)失败,且找不到报错

    ——> Highgui.imwrite("/data/pic1111.png", mat)失败,且找不到报错. ok -->直接使用以下代码,自己保存mat,从而可以跟 ...