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. (转)价值240万的photoshop中文教程,错过了后悔都来不及 (吹得好响)

      PS抠图方法 一.魔术棒法——最直观的方法 适用范围:图像和背景色色差明显,背景色单一,图像边界清晰. 方法意图:通过删除背景色来获取图像. 方法缺陷:对散乱的毛发没有用. 使用方法:1.点击“魔 ...

  2. unity HideInInspector 默认值 坑 记录 bug

    1:   如果  一个public字段 刚开始有默认值,然后你你觉得这个值不应该给别人看设置为HideInInspector 后,你再在代码里面调整这个默认属性的值,这个时候代码里面调整的值无效.   ...

  3. 使用XShell工具密钥认证登录Linux系统

    如果你是一名Linux运维,那么Linux服务器的系统安全问题,可能是你要考虑的,而系统登录方式有两种,密码和密钥.哪一种更加安全呢? 无疑是后者! 这里我为大家分享用Xshell利器使用密钥的方式登 ...

  4. qt练习10 涂鸦板源代码

    源代码下载: http://files.cnblogs.com/hnrainll/doodle.zip http://www.cnblogs.com/hnrainll/archive/2011/05/ ...

  5. MyBatis笔记——Mapper动态代理

    前提概要 Mapper接口开发方法只需要程序员编写Mapper接口(相当于Dao接口),由Mybatis框架根据接口定义创建接口的动态代理对象,代理对象的方法体同上边Dao接口实现类方法. Mappe ...

  6. org.opencv.android.JavaCameraView 摄像机方向的问题

    ——> org.opencv.android.JavaCameraView 摄像机方向的问题 ref: http://www.tuicool.com/articles/q6vUvqB 注意:一般 ...

  7. Algorithm: cartesian tree

    http://baike.baidu.com/link?url=XUt5fXQ-jtFBM0UdKiGA41_NWFvdFSYwVsy4SVvCRRuEBvNkLfT9TgOtzsXvaOT9nuq_ ...

  8. c# 串行【序列化】和解串【反序列化】

    C#   串行[序列化]和解串[反序列化] 一. 什么是序列化和反序列话呢? 相信我们做程序的都会遇到这种情况,需要将C#中某一个结构很复杂的类的对象存储起来,或者通过网路传输到远程的客户端程序中去, ...

  9. 无线路由器WDS设置方法图解_无线桥接设置

    随着无线网络的发展,现在越来越多的公司及企业都已经开始布局无线局域网,今天我们主要介绍下适合中小企业的无线路由器桥接或WDS功能.文章以TP-link WR841N无线路由器设置为例,其它路由器参考设 ...

  10. boost静态链接的问题 -lgcc_s

    在使用gcc/g++ 编译程序时我们希望指向一些库是使用静态的链接方式. 另外的一些是动态的方式. 我以boost 为例. 如果我们要使用静态库则是这样的: # g++ main.cpp -lpthr ...