Oracle RAC 负载均衡测试(结合服务器端与客户端)

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

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

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

一、配置需求

[sql] view plain copy

print?

  1. 1、服务器端各节点监听器正常提供服务,如果使用非缺省的1521端口,请参考 ORACLE RAC 下非缺省端口监听配置(listener.ora tnsnames.ora)
  2. [email protected]:~> 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. [email protected]:~> 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. [email protected]:~> 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. [email protected]:~> 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

[python] view plain copy

print?

    1. #还是使用之前的脚步来进行测试
    2. #Author : Robinson
    3. #Blog : http://blog.csdn.net/robinson_0612
    4. [email protected]:~> more load_balance.sh
    5. #!/bin/bash
    6. for i in {1..1000}
    7. do
    8. echo $i
    9. sqlplus -S system/[email protected] <<EOF
    10. select instance_name from v\$instance;
    11. EOF
    12. sleep 1
    13. done
    14. exit 0
    15. [email protected]:~> ./load_balance.sh >load_bal.log
    16. #查看日志
    17. [email protected]:~> grep GOBO4A load_bal.log |wc -l
    18. 750
    19. [email protected]:~> grep GOBO4B load_bal.log |wc -l
    20. 250
    21. #查看监听器的日志
    22. [email protected]:/u01/oracle/db/network/log> grep establish listener_bo2dbp.log |wc -l
    23. 894
    24. [email protected]:/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. [email protected]:/u01/oracle/db/network/log> grep establish listener_bo2dbs.log |wc -l
    30. 665
    31. [email protected]:/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
时间: 2024-12-21 05:01:40

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

oracle rac负载均衡

rac负载均衡分基于客户端和基于服务端两种: 客户端 配置比较简单,在tnsnames.ora中增加load_balance=on即可,如下: RAC =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = rac1-vip)(PORT = 1521))(ADDRESS = (PROTOCOL = TCP)(HOST = rac2-vip)(PORT = 1521))(LOAD_BALANCE = ON)(FAILOVER = ON)(CONNECT_

ORACLE 11G负载均衡测试

Oracle 11g R2中,引入了SCAN(Single Client Access Name)的特性.该特性的好处在于,在数据库与客户端之间,添加了一层虚拟的服务层,就是所谓的SCAN IP以及SCAN IP Listener,在客户端仅需要配置SCAN IP的tns信息,通过SCAN IP Listener,连接后台集群数据库.这样,不论集群数据库是否有添加或者删除节点的操作,均不会对Client产生影响.客户端通过scan IP连接数据库实例的过程是:client -> scan lis

nginx在varnish后端做负载均衡,后端tomca获取客户端真实IP

nginx在varnish后端做负载均衡,后端tomca获取客户端真实IP 1.设置nginx配置文件    首先要确定nginx做负载均衡,在安装时把http_realip_module 安装上了.    查看方法: /usr/local/nginx/sbin/nginx -V   配置nginx.conf    vim /usr/local/nginx/conf/nginx.conf   加入 set_real_ip_from 192.168.88.131;      重新加载nginx:

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

如果你关注过nginx,必定知道nginx这个软件有什么用的,如果你的网站访问量越来越高,一台服务器已经没有办法承受流量压力,那就增多几台服务器来做负载吧.做网站负载可以买硬件设备来实现,比如F5,不过价格就几十万到上百万,够贵,本文介绍做网站负载的软件是免费的,nginx目前好多门户网站与大访问量的网站都在使用做为HTTP服务器,所以nginx是非常优秀的,下面介绍做负载测试吧.环境:(2台服务器)第一台: CPU:Inter(R) Pentium(R) 4 CPU 2.8G 内存:1G 系统

tenginx负载均衡测试

问题1:后端有多个tomcat,如何测试一台挂掉,另外一台是否工作? 三台机器 c做通a,b ssh验证 tenginx配置     check interval=2000 rise=2 fall=2 timeout=1000 type=http;     check_http_send "GET / HTTP/1.0\r\n\r\n";     check_http_expect_alive http_2xx http_3xx; 测试脚本 放在c服务器上 #!/bin/bash bn

lvs的负载均衡测试

近来工作闲暇之余,知道自己的知识欠缺,就在网上找来一些学习视频进行学习,在学习的时候,按照讲课老师的讲解步骤进行配置lvs负载均衡,配置环境如下图: 客户端是我本机的虚拟网卡vmnet8 lvs调度器和两台real服务器是vmware装的centos7 lvs调度器配置的参数配置如下: echo 1 >/proc/sys/net/ipv4/ip_forward ipvsadm -C ipvsadm -At 192.168.218.150:80 -s rr ipvsadm -at  192.168

用docker搭建nginx负载均衡测试环境

昨天收了一篇好文章 nginx常用功能全揭秘,想着今天来按照步骤配置一下nginx代理的,结果在使用docker的时候一直出问题,才诞生了这篇关于docker配置nginx负载均衡. 首先在宿主机上创建两个两个目录n1,n2,分别作为两台nginx服务器的目录. mkdir -p n1 n2 然后分别在目录里新建一个index.html文件,并输入内容作为nginx集群配置成功的后页面呈现的标识. cd n1 && echo 'this is n1' >> index.html

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

有了一篇服务端负载均衡后,再来一篇客户端负载均衡,客户端负载均衡很简单,无需在zuul中做多余配置(本示例不引入zuul),只需要在客户端进行Feign引入和配置即可. 准备工作很简单,实现客户端负载均衡,首先需要Feign组件. <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId

RAC负载均衡配置

1.客户端均衡(Client-Side LB)工作原理:当客户端发起连接时,会从地址列表中随机选取一个,再使用随机算法把连接请求分散到各个实例. 存在缺点:1.1)分配连接时没有考虑每个节点的真实负载,最后分配不过不一定是平衡1.2)随机算法需要长时间片,如果在短时间内同时发起多个连接,这些连接有可能被分配到一个节点上1.3)有些情况下,连接可能被分配到故障节点上 配置方法:在tns中添加LOAD_BALANCE = YES条目 2.服务器端均衡(Server-Side LB)工作原理:2.1)